Loading [MathJax]/jax/element/mml/optable/GreekAndCoptic.js

12 votos

¿Puede una gramática regular ambigua?

Una gramática ambigua es una gramática independiente del contexto para el cual existe una cadena que tiene más de una derivación más a la izquierda, mientras que un inequívoco de la gramática es una gramática independiente del contexto para el que cada cadena válida tiene una única derivación más a la izquierda.

Una gramática regular es un objeto matemático, G, con cuatro componentes, G=(N,Σ,P,S), donde

  • N es un vacío, conjunto finito de no terminal símbolos,
  • Σ es un conjunto finito de símbolos terminales, o alfabeto de símbolos,
  • P es un conjunto de reglas de la gramática, cada uno con uno de los formularios:
    • AaB
    • Aa
    • Aε para A,BN, a \in Σ, y \varepsilon la cadena vacía, y
  • S ∈ N es el símbolo inicial.

Ahora la pregunta es: ¿se Puede regular la gramática también ser ambiguo?

6voto

Peter Woolfitt Puntos 16561

Sin duda existen ambiguas gramáticas regulares. Tomemos por ejemplo

S\rightarrow A~|~B

A\rightarrow a

B\rightarrow a

4voto

Enoch the Red Puntos 2197

Todos los regulares de la gramática que contiene una regla de la forma A \rightarrow aB (accesible desde el símbolo inicial) tiene un equivalente ambigua regular de la gramática. Se acaba de tomar un nuevo símbolo no terminal, D, agregar la regla de A \rightarrow aD, y para cada regla con B como la izquierda del símbolo de agregar una nueva regla obtenidos mediante la sustitución de cada una de las B en regla con D.

Por ejemplo, los siguientes regular la gramática es ambigua:

\begin{align} S &\rightarrow aS \mid bA \\ A &\rightarrow bA \mid aB \mid \varepsilon \\ B &\rightarrow aB \mid \varepsilon \end{align}

Tomando la regla de A \rightarrow aB podemos construir un equivalente ambigua regular la gramática de la siguiente manera: \begin{align} S &\rightarrow aS \mid bA \\ A &\rightarrow bA \mid aB \mid aD \mid \varepsilon \\ B &\rightarrow aB \mid \varepsilon \\ D &\rightarrow aD \mid \varepsilon \end{align}

A continuación, la cadena de ba tiene dos derivaciones más a la izquierda:

  • S \rightarrow bA \rightarrow baB \rightarrow ba \varepsilon = ba
  • S \rightarrow bA \rightarrow baD \rightarrow ba \varepsilon = ba

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X