Siguiente: Lema de bombeo
Subir: Lenguajes regulares
Anterior: Equivalencia entre gramáticas lineales
Índice General
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
una gramática lineal por la derecha, es decir,
.
Construimos una gramática
lineal por la izquierda con el siguiente algoritmo en cuatro pasos:
- Si el símbolo inicial
de
aparece a la derecha en una
producción de
, se sustitue
en dichas reglas de la siguiente manera:
- Se introduce un nuevo símbolo no-terminal
, es
decir,
.
- Por cada regla de forma
con
se crea una nueva regla
.
- Cada regla de forma
(
) se
sustitue por
.
- Si
, se añade para cada regla
(
) la regla
.
Con esas modificaciones obtenemos un nuevo sistema de producciones
y un alfabeto de variables o bien
o bien
.
- Se crea un grafo dirigido con las siguientes propiedades:
- El conjunto de nodos es
.
- Se añade una arista entre los nodes
y
con atributo
,
si existe una regla
en
.
- Se añade una arista entre los nodes
y
con atributo
, si existe una regla
en
.
- Se añade una arista entre los nodes
y
con atributo
, si existe la regla
en
.
- Se `inverte' el grafo, más preciso:
- Se intercambian los nodos
y
.
- Se invierte la dirección de todas las aristas.
- Se transforma el grafo obtenido en el conjunto de reglas
:
- Para cada arista entre
y
con atributo
se crea una regla
(
y
).
Ejemplo: Partimos de la gramática
- el símbolo inicial
aparece a la derecha entonces:
- Introducimos un nuevo símbolo no-terminal
.
- Añadimos la regla
.
- Sustituimos la regla
por
- siendo
, añadimos la regla
(pero que ya está en
)
Queda el sistema de producciones intermedio como
- El grafo reflejando dichas reglas es:
- Y el grafo invertido es:
- con lo cual obtenemos el conjunto de reglas:
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