Acerca de P1: Tanto el problema de ambigüedad (dado un CFG, si es ambiguo) como el problema de ambigüedad inherente (dado un CFG, si su lenguaje es inherentemente ambiguo, es decir, si cualquier CFG equivalente es ambiguo) son indecidibles. Aquí están las referencias originales:
Acerca de P2: Una gramática regular es una gramática libre de contexto "lineal unilateral", donde a lo sumo aparece un no terminal en cualquier parte derecha de la regla, y donde ese no terminal es el último (en las gramáticas lineales derechas ) o el primero (en izquierda gramáticas lineales ) posición. Tales gramáticas se traducen fácilmente en autómatas de estado finito equivalentes (más o menos considerando cada no terminal como un estado), que no son ambiguos si la gramática regular no es ambigua. La clase de gramáticas regulares inequívocas y autómatas inequívocos ha sido estudiada en particular por Stearns y Hunt (1985) , quienes muestran que disfrutan los algoritmos manejables para el problema de inclusión.
Acerca de la relación entre derivaciones (es decir, secuencias de aplicaciones de reglas donde es una regla de la gramática) y árboles de derivación (es decir, donde un nodo etiquetado como es el padre de una secuencia de nodos , donde es una regla): en un CFG general, puede haber diferentes derivaciones, que visitan el mismo árbol de derivación de diferentes maneras.βAγ⇒βαγA→αAX1,…,XmA→X1⋯Xm
Estas derivaciones diferentes ocurren porque uno tiene la opción de aplicar una regla gramatical en dos lugares diferentes en forma de oración: en una forma de oración con al menos dos no terminales y , uno puede aplicar primero y obtener , o primero y obtener , pero la aplicación de la otra regla conducirá a la misma . Imponer más a la izquierda (siempre derivando el no terminal más a la izquierda en cualquier forma de sentencia) o más a la derechaγAηBθABA→αγαηBθB→βγAηβθγαηβθ derivaciones impone un orden fijo para visitar los árboles de derivación, y luego hay una derivación única para un árbol de derivación dado.
En una gramática lineal libre de contexto, no hay tal opción, ya que hay a lo sumo un no terminal en cualquier forma de oración, y hay una derivación única para un árbol de derivación dado, que es tanto a la izquierda como a la derecha.
Tener dos árboles de análisis diferentes con el mismo rendimiento (secuencia de hojas) es la definición de siendo ambiguo, no cambia cuando se consideran gramáticas regulares. Alternativamente, uno también puede pedir dos derivaciones más a la izquierda diferentes. Tenga en cuenta que una derivación en una gramática unilateral corresponde a una ejecución de aceptación en su autómata de estado finito asociado, que se llama ambigua exactamente de la misma manera: cuando existen dos ejecuciones de aceptación diferentes para una entrada dada .www
y 4. Si toma la vista de autómatas de estado finito, es suficiente determinar su autómata ambiguo para obtener un autómata inequívoco para el mismo idioma: habrá una sola ejecución para cualquier palabra dada. Este autómata determinista es equivalente a una gramática regular inequívoca.
Para responder a su comentario: existen gramáticas regulares ambiguas, por ejemplo tiene dos derivaciones más a la izquierda para : y . Una gramática equivalente no ambigua es .a S ⇒ A ⇒ a S ⇒ B ⇒ a S → aS→A∣B,A→a,B→aaS⇒A⇒aS⇒B⇒aS→a
Sobre la relación con Q1: es decidible si una gramática regular es ambigua (el problema de ambigüedad inherente no es muy desafiante en las gramáticas regulares, ya que la respuesta es invariablemente "no" sin siquiera mirar la gramática de entrada). Esto se puede verificar en usando una construcción cuadrada en su autómata asociado: construya el producto del autómata consigo mismo y vea si algún estado con es accesible y co-accesible. La referencia más antigua que conozco para esta idea es un artículo de Even (1965) .( q , q ′ ) q ≠ q ′O(|G|2)(q,q′)q≠q′