Linguagem algébrica determinística

Na ciência da computação teórica e na teoria da linguagem , uma linguagem algébrica determinística é uma linguagem algébrica reconhecida (por estados finais) por um autômato push-down determinístico . O interesse das linguagens determinísticas é que sua análise sintática seja feita em tempo linear no comprimento da palavra, enquanto em qualquer linguagem algébrica a complexidade é cúbica, ou em qualquer caso se reduz à complexidade do produto da matriz, portanto é em O ( n 2,37 ) onde n é o comprimento da palavra pelo algoritmo de Valiant . 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.

Exemplos

Propriedades

A classe das linguagens algébricas determinísticas contém estritamente a classe das linguagens racionais e está estritamente incluída na classe das linguagens algébricas e mesmo nas linguagens algébricas inequívocas .

O contra-exemplo típico de linguagem algébrica não determinística é o conjunto de palíndromos .

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

Exemplos de linguagens não determinísticas

O princípio de construção dessas linguagens é o mesmo: o autômato push-down deve tomar uma decisão sem conhecer a totalidade dos dados; no primeiro exemplo, ele deve antecipar se o número de b é igual ou duplo o número de a , no segundo exemplo, ele deve testar a presença da letra a na segunda metade sem saber se ela já está no segundo tempo.

Existe um lema de iteração especial para linguagens algébricas determinísticas que torna possível provar formalmente que uma linguagem não é determinística. A afirmação é bastante complicada. Uma variante igualmente complicada desse lema é fornecida por Sheng Yu.

Notas e referências

  1. Wolper 2006 , Seção 4.4.4, p.  97 .
  2. Harrison 1978 , Teorema 11.8.5 ..
  3. Michael Harrison até mostra que essa linguagem não é a união de um número finito de linguagens determinísticas.
  4. Harrison 1978 , Teorema 11.8.3.

Bibliografia

<img src="https://fr.wikipedia.org/wiki/Special:CentralAutoLogin/start?type=1x1" alt="" title="" width="1" height="1" style="border: none; position: absolute;">