Por que o não-determinismo (autômato push-down) é necessário?
Gostaria de saber por que, para o reconhecimento de linguagens sem contexto, apenas os autômatos não determinísticos de push-down (DPA = NPDA) funcionam. Por que os autômatos push-down determinísticos (DPDA) não reconhecem esses idiomas?
— Reactormonk
Um idioma pode ser reconhecido por um autômato de pushdown determinístico se existir alguma gramática LR (1) para esse idioma. Como existem linguagens livres de contexto que não possuem nenhuma gramática LR (1) que as descreva, NPDA! = DPDA. Como esses resultados são muito conhecidos e geralmente serão tratados em um curso sobre compiladores, não tenho certeza se isso responde à sua pergunta: você talvez esteja procurando por intuição por trás desse fato?
— Alex10 Brink
é realmente um tanto contra-intuitivo, visto que existem outros modelos-chave nos quais o não-determinismo não faz diferença nos idiomas aceitos - FSMs e TMs.
Não sei ao certo qual sabor de "por que" você está procurando. Uma razão para o aumento de poder ao permitir o não determinismo pode ser vista no seguinte exemplo:
Seja o conjunto de palíndromos sobre algum alfabeto (de pelo menos dois símbolos), onde é o inverso de . Um NPDA para esse idioma pode simplesmente continuar pressionando símbolos em sua pilha e, em algum momento, supor que alcançou o meio da entrada e esvaziar gradualmente a pilha. Observe que a condição de aceitação é puramente existencial - basta que haja uma estimativa correta para que a palavra seja aceita.w ˉ w ˉ w wLLww¯ww¯w¯w¯ww
Um PDA determinístico teria que escolher a posição que considera intermediária de alguma forma que depende apenas do prefixo atual. Suponha que seja um DPDA. Para qualquer , deixe ; seja a palavra vazia e . Essa é uma sequência de palíndromos, cada um prefixo do próximo, de modo que deve estar no estado de aceitação , com a pilha vazia, depois de ler . Ao princípio o buraco pombo, deve haver algum tal que ek ∈ N u k = a b 2 k a v 0 v k + 1 = v k u k v k A q k v k k , l k ≠ l q k = q l k A v k u k v k v l u k v kAAk∈Nk∈Nuk=ab2kauk=ab2kav0v0vk+1=vkukvkvk+1=vkukvkAAqkqkvkvkk,lk,lk≠lk≠lqk=qlqk=ql(existe um número finito de estados e, portanto, alguns devem ser "reutilizados", pois há um número infinito de s). Mas então não pode distinguir , que é um palíndromo, de , que não é.kkAAvkukvkvkukvkvlukvkvlukvk
— Klaus Draeger
A FA aceita de forma determinística ou não determinística o mesmo idioma (ou seja, Lang regular).
Porém, no caso do PDA , se o restringirmos a comportar-se deterministicamente, ele não aceitará algumas CFLs (CFLs sem propriedade de prefixo (exceto RLs)).
Por quê então?
Considere um exemplo de CFL que não possui propriedade de prefixo (propriedade de prefixo de um lang: nenhuma string é um prefixo adequado de outra string no lang).
L = wwr
por exemplo. cadeias 00 e 0000 . (00 é um prefixo adequado de 0000, portanto, wwr não possui propriedade pref.).
Na ocorrência de 00, o DPDA irá para o estado final. Agora, como o DPDA não tem escolha entre aceitação e continuidade , ele não pode aceitar 0000 após aceitar 00 . Este é o lugar onde o PDA requer não-determinismo .
Observações : No caso de FA, lang (RL) sem pref. A propriedade pode ser aceita deterministicamente (por exemplo, strings começando com 0). Isso mostra que o efeito da propriedade prefixo de RL e CFL é diferente . A diferença entre determinismo e não determinismo para PDA dá origem a uma nova família de idiomas. aceito pelo DPDA. Este idioma é chamado DCFL .