next up previous contents
Siguiente: Lema de bombeo Subir: Lenguajes regulares Anterior: Equivalencia entre gramáticas lineales   Índice General

Equivalencia entre gramáticas lineales por la derecha y lineales por la izquierda

Como era de esperar, gramáticas lineales por la derecha y gramáticas lineales por la izquierda describen el mismo `fenómeno', es decir, generan los lenguajes regulares.

Sea $G=(\Sigma_N,\Sigma_T,P,\$)$ una gramática lineal por la derecha, es decir, $P\subset\Sigma_N\times(\Sigma_N.\Sigma_T\cup\Sigma_T)\cup\{\$\longrightarrow \epsilon\}$.

Construimos una gramática $G^\prime=(\Sigma^\prime_N,\Sigma_T,P^\prime,\$)$ lineal por la izquierda con el siguiente algoritmo en cuatro pasos:

  1. Si el símbolo inicial $\$$ de $G$ aparece a la derecha en una producción de $P$, se sustitue $\$$ en dichas reglas de la siguiente manera: Con esas modificaciones obtenemos un nuevo sistema de producciones $\overline{P}$ y un alfabeto de variables o bien $\Sigma_N^\prime=\Sigma_N$ o bien $\Sigma_N^\prime=\Sigma_N\cup\{\$^\prime\}$.

  2. Se crea un grafo dirigido con las siguientes propiedades:

  3. Se `inverte' el grafo, más preciso:

  4. Se transforma el grafo obtenido en el conjunto de reglas $P^\prime$:

Ejemplo: Partimos de la gramática

\begin{displaymath}
G=(\{\$,A\},\{0,1\},\{\$\longrightarrow \epsilon\vert 1A,A\longrightarrow 0\$\vert\},\$)
\end{displaymath}

  1. el símbolo inicial $\$$ aparece a la derecha entonces: Queda el sistema de producciones intermedio como

    \begin{displaymath}\overline{P}=\{\$\longrightarrow \epsilon\vert 1A,A\longrightarrow 0\$^\prime\vert,\$^\prime\longrightarrow 1A\}\end{displaymath}

  2. El grafo reflejando dichas reglas es:

    \fbox{graphldli}

  3. Y el grafo invertido es:

    \fbox{igraphldli}

  4. con lo cual obtenemos el conjunto de reglas:

    \begin{displaymath}
P^\prime=\{\$\longrightarrow \epsilon\vert A0,A\longrightarrow \$^\prime1\vert 1,\$^\prime\longrightarrow A0\}
\end{displaymath}


next up previous contents
Siguiente: Lema de bombeo Subir: Lenguajes regulares Anterior: Equivalencia entre gramáticas lineales   Índice General
© 2006, Dr. Arno Formella, Universidad de Vigo, Departamento de Informática