Linguagem algébrica

Na teoria da linguagem formal , uma linguagem algébrica ou linguagem não contextual é uma linguagem gerada por uma gramática algébrica . De maneira equivalente, uma linguagem algébrica é uma linguagem reconhecida por um autômato push-down .

As linguagens algébricas formam as linguagens do tipo 2 na hierarquia de Chomsky . Eles têm aplicações importantes na descrição de linguagens de programação e em linguística . Eles também estão envolvidos na descrição de linguagens XML .

Existem vários termos para uma linguagem algébrica: às vezes há linguagem "  livre de contexto  " , ou linguagem não contextual , linguagem livre de contexto , linguagem contextual  ; todos esses termos são usados ​​e equivalentes.

Alguns exemplos

As linguagens algébricas visam capturar uma estrutura de palavras que consiste em associações de símbolos, normalmente representados por grupos de parênteses; essas palavras e linguagens correspondem bem a expressões estruturadas em linguagens de programação (a estrutura início - fim ou indentação) e também são representadas na hierarquia de informações por árvores, por exemplo. Todas essas possibilidades estão além das capacidades da linguagem racional .

Para provar que uma linguagem é algébrica, fornecemos uma gramática não contextual que a gera. Veja o parágrafo de exemplos do artigo em questão para mais detalhes. Para linguagens mais complicadas, podemos usar métodos mais poderosos, como transduções racionais ou o fato de que as linguagens algébricas formam uma família abstrata de linguagens .

Propriedades

Toda linguagem racional é algébrica porque pode ser descrita por uma gramática regular , que é um caso especial de gramática não contextual.

Propriedades da cerca

A classe de linguagens algébricas tem certas propriedades de fechamento  :

A partir dessas propriedades, segue-se que:

Encerramento por substituição

Uma substituição de in é uma aplicação de no conjunto das partes do qual é um morfismo de monoides, ou seja, satisfaz ambas as propriedades:

  1.  ;
  2. para palavras e .

Na segunda fórmula, o produto é o produto das partes de .

Uma substituição é algébrica se for uma linguagem algébrica para qualquer letra .

O teorema da substituição afirma que se é uma substituição algébrica, então é uma linguagem algébrica para qualquer linguagem algébrica .

Propriedades indecidíveis

A pertença de uma palavra a uma linguagem algébrica é decidível  ; ele pode ser testado usando o algoritmo CYK . Também sabemos como decidir se uma linguagem algébrica (definida a partir de uma gramática) está vazia.

Mas, ao contrário das linguagens racionais, muitos outros problemas com linguagens algébricas são indecidíveis. Por exemplo, não existe um algoritmo para decidir se duas línguas algébricas são iguais. Mais precisamente, as seguintes propriedades são indecidíveis. Vamos , , linguagens algébricas, dadas por exemplo, por sua gramática em um alfabeto , e é uma linguagem racional. São indecidíveis:

Linguagens algébricas determinísticas e inequívocas

Linguagens determinísticas

Uma linguagem algébrica é considerada determinística se for reconhecida por um autômato push-down determinístico .

A classe das linguagens algébricas determinísticas contém a classe das linguagens racionais e está estritamente incluída na das linguagens algébricas. O contra-exemplo típico de linguagem algébrica não determinística é o conjunto de palíndromos .

A definição implica que a pertença de uma palavra a uma linguagem algébrica determinística pode ser testada em tempo linear, ao contrário do caso de linguagens algébricas arbitrárias. Além disso, qualquer linguagem algébrica determinística pode ser descrita por uma gramática LR (1) e vice-versa. Isso permite que sejam usados ​​para aplicações práticas. Assim, a maioria das linguagens de programação são linguagens algébricas determinísticas.

A classe de linguagens algébricas determinísticas é fechada por complementares. Contudo:

Linguagens inequívocas

Uma linguagem algébrica é inequívoca ou inequívoca se houver uma gramática inequívoca que a gera. A linguagem que não é inequívoca é inerentemente ambígua .

Toda linguagem determinística é inequívoca, mas as linguagens não ambíguas são fechadas por espelho, portanto, a inclusão é estrita. Existem linguagens algébricas inerentemente ambíguas, como a linguagem . Isso é provado com a ajuda do lema de Ogden .

Teoremas de representação

Três teoremas fornecem uma maneira geral de representar linguagens algébricas.

Teorema de Chomsky-Schützenberger

O teorema afirma que as linguagens de Dyck são linguagens algébricas "típicas".

Chomsky - Teorema de Schützenberger  -  Uma linguagem sobre um alfabeto é algébrica se e somente se houver uma linguagem Dyck , uma linguagem racional e um morfismo alfabético (ou seja, tal que a imagem de uma letra seja uma letra ou a palavra vazia), como

.

Teorema de Shamir

Teorema de Shamir  -  Uma linguagem sobre um alfabeto é algébrica se e somente se existe um alfabeto , uma carta e um morfismo de no conjunto de peças de tal forma que

.

Aqui, está uma cópia desconexa de , e é a linguagem de Dyck em

O teorema da linguagem mais difícil, de Greibach

A " linguagem mais difícil " foi definida por Sheila Greibach em 1973. É uma linguagem em que o teste de adesão é o mais difícil, no sentido de que qualquer algoritmo de teste de adesão se traduz em um teste de adesão para qualquer outra linguagem algébrica.

Dada uma linguagem sobre um alfabeto , a versão não determinística de e a linguagem denotada definida como segue. Acrescentamos às três novas letras . Neste novo alfabeto, consideramos a linguagem . Qualquer palavra de admite uma fatoração

e cada palavra é escrita na forma

onde as palavras estão no alfabeto . A escolha de uma palavra

obtido escolhendo um fator em cada um . Observe o conjunto de opções em . A versão não determinística de é definida por

A linguagem mais difícil é por definição a linguagem que é a versão não determinística da linguagem de Dyck em dois pares de parênteses.

Teorema da linguagem mais difícil (Greibach)  -  Uma linguagem sobre um alfabeto é algébrica se e somente se houver um morfismo tal que temos

,

onde está o idioma mais difícil e é uma letra que não está em .

A terminologia vem do fato de que o teste de pertencimento de uma palavra à é reduzido ao teste de pertencimento da palavra à linguagem . Assim, qualquer algoritmo de teste de pertinência fornece um algoritmo de teste de pertinência geral, para linguagens algébricas, da mesma complexidade. Extensões do teorema para gramáticas mais gerais foram propostas por Alexander Okhotin.

Linguagem algébrica e teoria da complexidade

Qualquer linguagem algébrica é decidida por um algoritmo determinístico no espaço O (log 2 n ) e em tempo superpolinomial. Em outras palavras, a classe de linguagens algébricas está incluída no DSPACE (log 2 n ). Qualquer linguagem Dyck é decidida por um algoritmo determinístico no espaço O (log n ). Da mesma forma para idiomas entre parênteses. Qualquer linguagem algébrica determinística não racional precisa de pelo menos log n células de memória para ser decidida.

Qualquer linguagem algébrica é decidida por um algoritmo determinístico no espaço O (log 2 n ) e em tempo polinomial. Assim, qualquer linguagem algébrica está na classe SC .

Bibliografia

Pela natureza fundamental desta noção, muitos trabalhos teóricos sobre computador contêm pelo menos uma seção sobre linguagens algébricas. Vários livros também foram traduzidos para o francês.

Livros em francêsLivro em alemãoLivros em inglesAulas

Notas

  1. Traduções aceitas no Termium Plus , banco de dados lingüísticos e terminológicos do Governo do Canadá .
  2. Hopcroft, Motwani e Ullman 2001 , Capítulo 7, p.  285 .
  3. Hopcroft, Motwani e Ullman 2001 , Capítulo 7, p.  296 .
  4. Hopcroft, Motwani e Ullman 2001 , Capítulo 7, p.  302 .
  5. Wolper 2006 , Seção 4.4.4, p.  97
  6. Autebert, Berstel, Boasson (1997)
  7. Alexander Okhotin , “  Hardest languages ​​for conjuntive and Boolean grammars,  ” Information and Computation , vol.  266,2019, p.  1-18 ( ISSN  0890-5401 , DOI  10.1016 / j.ic.2018.11.001 ).
  8. PM Lewis , RE Stearns e J. Hartmanis , "  Limites de memória para o reconhecimento de linguagens livres de contexto e sensíveis ao contexto  ", 6º Simpósio Anual sobre Teoria de Circuito de Comutação e Design Lógico (SWCT 1965) ,Outubro de 1965, p.  191-202 ( DOI  10.1109 / FOCS.1965.14 , ler online , acessado em 17 de outubro de 2017 ).
  9. RW Ritchie e FN Springsteel , “  Language Recognition by selection automata,  ” Information and Control , vol.  20, n o  4,1 ° de maio de 1972, p.  313–330 ( DOI  10.1016 / S0019-9958 (72) 90205-7 , ler online , acessado em 17 de outubro de 2017 ).
  10. Nancy Lynch , "  Log Space Recognition and Translation of Parenthesis Languages  ", J. ACM , vol.  24, n o  4,Outubro de 1977, p.  583-590 ( ISSN  0004-5411 , DOI  10.1145 / 322033.322037 , ler online , acessado em 17 de outubro de 2017 ).
  11. Alt, Helmut , Mehlhorn, Kurt , Michaelson, S. e Milner, R. , "Lower Bounds for the Space Complexity of Context-Free Recognition" , no Terceiro Colóquio Internacional sobre Autômatos, Línguas e Programação ,1976( leia online ).
  12. Stephen A. Cook , "  Deterministic CFL's Are Accepted Simulttically in Polynomial Time and Log Squared Space  ", Proceedings of the Eleventh Annual ACM Symposium on Theory of Computing , ACM, sTOC '79,1979, p.  338-345 ( DOI  10.1145 / 800135.804426 , ler online , acessado em 17 de outubro de 2017 ).
<img src="https://fr.wikipedia.org/wiki/Special:CentralAutoLogin/start?type=1x1" alt="" title="" width="1" height="1" style="border: none; position: absolute;">