Ambiguidade em idiomas regulares e sem contexto
Entendo que as seguintes afirmações são verdadeiras:
Às vezes, duas derivações distintas de uma sequência em um determinado CFG podem atribuir a mesma árvore de análise à sequência.
Quando existem derivações de alguma sequência em um determinado CFG que atribuem diferentes árvores de análise, o CFG é ambíguo.
Algumas linguagens sem contexto geradas por CFGs ambíguos também são geradas por CFGs não ambíguos.
Alguns idiomas são tais que os únicos CFGs que podem gerá-los (e existem alguns) são ambíguos.
Q1 Entendo também ser indecidível se um CFG arbitrário é ambíguo, no sentido do ponto 3 acima. Ou será que é indecidível se uma linguagem sem contexto é ambígua, no sentido do ponto 4? Ou ambos são indecidíveis?
Q2 Qual dos pontos 1 a 4 se torna falso quando substituímos "sem contexto" por "regular"? Gramáticas e idiomas regulares são sempre inequívocos?
— dubiousjim
Os idiomas mencionados no ponto 4 são "inerentemente ambíguos". Para o primeiro trimestre, acho indecidível se o GRAMMAR é ambíguo. Assim, 3 e 4 são indecidíveis.
Certo, os idiomas do ponto 4 são chamados de "inerentemente ambíguos".
Q1: ambos indecidíveis. Q2: 1 não é possível, porque existe no máximo um terminal não aparecendo em qualquer forma sentencial; portanto, qualquer derivação é tanto à esquerda quanto à direita; 2 isso ainda é verdade; 3 ainda é verdade se você remover o bit `` also ''; 4 não é mais verdade, por exemplo, ao determinar sua gramática, você obterá uma inequívoca.
— 21413 Sylvain
@Sylvain faz disso uma resposta?
@ Sylvain, obrigado e sim, faça disso uma resposta. Posso confirmar que entendi? re 2: Existe uma gramática regular que pode gerar a mesma string com diferentes árvores de análise? (Desde então, me deparei com uma referência a "NFAs ambíguos", mas não tenho certeza de que esteja usando "ambig" no sentido em que sou). Re 3 e 4, acho que você está dizendo que alguns idiomas regulares podem ser gerados por gramáticas regulares ambíguas, mas também sempre serão gerados por uma gramática regular também não ambígua?
Sobre o Q1: Tanto o problema de ambiguidade (dado um CFG, seja ambíguo) quanto o problema de ambiguidade inerente (dado um CFG, se seu idioma é inerentemente ambíguo, isto é, se qualquer CFG equivalente é ambíguo) é indecidível. Aqui estão as referências originais:
A indecidibilidade da ambiguidade foi comprovada por Cantor (1962) , Floyd (1962) e Chomsky e Schützenberger (1963) . As provas nos livros didáticos geralmente são reduzidas a partir do problema de correspondência posterior.
A indecidibilidade da ambiguidade inerente foi comprovada por Ginsburg e Ullian (1966) .
Sobre o Q2: uma gramática regular é uma gramática livre de contexto "linear unilateral", em que no máximo um não-terminal aparece em qualquer regra da parte direita da regra e onde esse não-terminal é o último (nas gramáticas lineares à direita ) ou o primeiro (em gramáticas lineares esquerdas ). Tais gramáticas são facilmente traduzidas em autômatos de estados finitos equivalentes (aproximadamente considerando cada não-terminal como um estado), que são inequívocos se a gramática regular é inequívoca. A classe de gramáticas regulares inequívocas e autômatos inequívocos foi estudada em particular por Stearns e Hunt (1985) , que mostram que eles desfrutam de algoritmos tratáveis ​​para o problema de inclusão.
βAγ⇒βαγβAγ⇒βαγA→αA→αAAX1,…,XmX1,…,XmA→X1⋯XmA→X1⋯Xm
γAηBθγAηBθAABBA→αA→αγαηBθγαηBθB→βB→βγAηβθγAηβθγαηβθγαηβθ(sempre derivando o não-terminal mais à esquerda em qualquer forma sentencial) ou derivações à direita impõem uma ordem fixa para visitar as árvores de derivação e, em seguida, existe uma única derivação para uma determinada árvore de derivação.
Em uma gramática linear livre de contexto, não existe essa opção, pois existe no máximo uma não-terminal em qualquer forma sentencial e existe uma única derivação para uma determinada árvore de derivação, que é tanto à esquerda quanto à direita.
e 4. Se você adota a visualização de autômatos em estado finito, basta determinar seu autômato ambíguo para obter um autômato inequívoco para o mesmo idioma: haverá uma única execução para qualquer palavra. Esse autômato determinístico é equivalente a uma gramática regular inequívoca.
S→A∣B,A→a,B→aS→A∣B,A→a,B→aaaS⇒A⇒aS⇒A⇒aS⇒B⇒aS⇒B⇒aS→aS→a
O(|G|2)O(|G|2)(q,q′)(q,q′)
GGΣ∗Σ∗
Eu não entendi muito bem em que tipo de idiomas você fala 4. Todo idioma do CF tem uma gramática ambígua.
Q2 Tudo é decidível se você tiver um acordo com uma gramática regular. Você só deve construir o DFA mínimo e, usando-o, você pode construir uma gramática inequívoca. Se você tem um acordo com o idioma regular definido pela gramática CF, a resposta é não - veja Q1.
— Alexander Rubtsov
Obrigado, bom esclarecimento sobre Q2. Perguntas sobre um idioma comum podem ser decididas se o idioma for especificado por uma gramática comum; mas isso ainda não significa que eles são decidíveis se o idioma for especificado por um CFG - é isso que você está dizendo, certo? Então, sabemos que é o caso de perguntas sobre ambiguidade e outras indecidíveis para CFGs arbitrários também são indecidíveis quando restritas aos CFGs que geram idiomas comuns?
Não pode ser, mas eles são sempre decidíveis. Quero dizer, quando você lida com uma linguagem descrita por uma gramática regular - a subclasse de CFG, qualquer pergunta que você goste é decidível. Mas alguns CFG não regulares podem produzir um idioma regular, e é indecidível até verificar se o CFG produz um idioma regular.
@ alexandr-rubtsov "Quando você lida com um idioma descrito por uma gramática regular, qualquer pergunta que você gosta é decidível". Parece uma declaração otimista demais ...
Obrigado, eu quis dizer "pode ​​estar" em sua função retórica, não no sentido de "quem sabe?"
@ J.-E.Pin sim, eu deveria ter sido mais delicada e dizer algo como «todas as questões naturais, como a ambiguidade».
— Alexander Rubtsov 20/09/2013
Depende se você substitui 'sem contexto' por 'regular' apenas na frente de 'idioma (s)' ou também na frente de 'gramática (s)'.
Todos os idiomas regulares são gerados por gramáticas regulares e, em particular, por gramáticas regulares inequívocas, por exemplo, LL (1) gramáticas regulares à direita, que são todas inequívocas.