Anda di halaman 1dari 390

lENGUAJES,GRAMÁTICAS y AUTÓMATAS

. UN ENFOQUE PRÁCTICO
~

LENGUAJES, GRAMÁTICAS
"
y AUTOMATAS
UN ENFOQUE PRÁCTICO

Pedro Isasi Viñuela


Paloma Martínez Fernández
Daniel Borrajo Millán
Universidad Carlos III de Madrid

TT
.
ADDISON-WESLEY

Harlow, Inglaterra • Reading, Massachusetts • Menlo Park. Californ ia • Nueva Yo -


Don Mills, Ontario • Amsterdam • Bonn • Sydney • Singapur
Tokio • Madrid • San Juan • Milán • México • Seúl • Taipei
[lustración de la cubierta: Wassily Kandinsky, 1929.
Pisos.

© 1997, por Addison·Wesley Iberoamericana España, S.A.

Reservados todos los derechos.

No está permitida la reproducción total o parcial de este libro, ni su tratamiento informático ni la transmi-
sión de ninguna forma o por cualquier medio, ya sea electrónico, por fotocopia, por registro u otros méto-
dos, sin el permiso previo y por escrito de los titulares del copyrighl.

ADDISON·WESLEY IBEROAMERICANA
Malabia 2362-2.° G, Buenos Aires, Argentina.
Cruz 1469-dpto. 21, Independencias, Santiago de Chile.
Apartado aéreo 241-943, Bogotá, Colombia.
Espalter 3,28014 Madrid, España.
I Jacob Way, Reading, Massachusetts 01867, E.U.A.
Apartado postal 22-012, México DF, México.
Jr. San Antonio Este, n.O 658. dpto. D, Urb. Ventura Rossi.
25 Lima, Perú.
El Monte Mall, 2.° piso, oficina 19-B. Ave. Muñoz Rivera.
HalO Rey. 009 I 8 Puerto Rico.
Apartado Postal 5 I 454. Caracas 1050 A. Venezuela.

Impreso en España. ¡'rin/eel ill S/will.

ISBN : 0-201 -65323-0


ISBN: 84-7829-014-1
Depósito legal: M. 36.039-1997

I 2 3 4 5 6 78 9 O - CO - 01 00 99 98 97
A Ana, Juan Miguel y a Isabel

- -- - - -- - - --- ----- ---------- ----"--------~


Agradecimientos
Los autores agradecen a .-\raceli anchis las correcciones realizadas a ver-
siones anteriores del libro. a Julio García del Real por su valiosa ayuda en
la preparación y ~ truc ' uración de la asignatura . as í como a los revisores
del libro por sus coment~ios .

- _-.
Prefacio

Los fundamentos teóricos de la informática, que han dado en llamarse In-


formática Teórica, provienen de diferentes ramas del conocimiento. Este
aspecto, unido a la fuerte componente teórica que esta disciplina requie-
re, como no podría ser de otra forma, hace que a menudo los textos de
Informática Teórica sean difíciles de leer. Sin embargo, detrás de toda es-
ta componente teórica se esconde una disciplina amena, muy instructiva y
con grandes posibilidades de aplicación. Todo esto queda a menudo oculto
entre definiciones, teoremas y demostraciones. Este libro pretende ser una
manera de superar este escollo. No pretende ser una sustitución de otros
textos con mayor contenido teórico, sino más bien un complemento a los
mismos. Todos los temas han sido tratados con el rigor exigible, aún cuan-
do no aparezca una fuerte carga de teoremas y demostraciones. De esta
forma, puede constituir un libro ideal para iniciarse en los temas tratados,
o una guia rápida de consulta de los diferentes contenidos. En cualquier
caso, se trata de un texto autocontenido y que no exige de conocimientos
previos por parte del lector para su comprensión.
Por otra parte, tiene un alto contenido práctico, entendido como un
gran número de ejercicios, en los que reflejar y complementar los conte-
nidos teóricos. Creemos, desde nuestra perspectiva de la docencia de la
asignatura que abarca estos temas en la universidad, que la mejor forma
de comprender y asentar los conocimientos es con la práctica. Afortuna-
damente, las materias de la Informática Teórica son muy versátiles a la
hora del planteamiento de ejercicios, y estos sirven de apoyo fundamental
e imprescindible al texto. Es por esto que hemos querido que en el título
apareciera explícitamente "un enfoque práctico", para resaltar el hecho de
que se trata de un libro con dos partes diferenciadas; por un lado se trata de
un libro de teoría autocontenido, y, por otro, un libro de ejercicios comple-
to. Esto queda remarcado por el hecho de que los ejercicios aparecen todos
juntos al final de cada capítulo, como si de otro capítulo independiente se
tratase. Por último, hemos querido añadir un capítulo de aplicaciones, pa-
ra mostrar algunos de los numerosos campos en 1 que se pueden utilizar
estos conceptos.

Pedro .. Paloma :\lartínez. y Daniel Borrajo

~an ' . Sept iembre de 1997


,
Indice General

1 Introducción 1
1.1 Lenguajes, Gramáticas y Autómatas 1
1.2 Estructura del libro . 5
1.3 Notaciones 6

2 Lenguajes y Gramáticas Formales 7


2.1 Lenguajes .. 7
2.1.1 Definiciones básicas 7
2.1.2 Operaciones con palabras 8
2.1.3 Operaciones con lenguajes . 9
2.1.4 Otras definiciones 11
2.2 Gramáticas formales 13
2.2.1 Definiciones . 13
2.2.2 Tipos de Gramáticas 16
2.2.3 Árboles de derivación 19
2.2.4 Ambigüedad 20
2.2.5 Recursividad 21
2.2.6 Factorización a izquierdas 25
Ejercicios 27

3 Gramáticas Regulares y Autómatas Finitos 43


3.1Gramáticas regulares. 43
3.2Máquinas Secuenciales 46
3.2.1 Definición . 46
3.2.2 Representación 49
3.2.3 Extensión a palabras de la entrada y salida 51
3.2.4 Equivalencia de Máquinas Secuenciales. 55 ·

.\
3.2.5 Equivalencia de Máquina de Mealy y
Máquina de Moore 61
3.3 Autómatas Finitos Deterministas (AFD) 63
3.3.1 Definición . 63
3.3.2 Representación de un AFD 65
3.3.3 Conceptos relativos a AFDs 66
3.3.4 Equivalencia de AFD 68
3.4 Autómatas Finitos No Det ermi nistas (AFND) 75
3.4.1 Definición 75
3.4.2 Representación 76
3.4.3 Conceptos asociados a AF NDs 77
3.4.4 Autómata Finito asociado a una G 3 81
3.5 Expresiones regulares (ER) 83
3.5.1 Definiciones . 83
3.5.2 Teoremas de Kleene 85
3.6 Autómatas de Células de McCulloch-Pitts 97
3.6.1 Definición 97
3.6.2 Representación 98
3.6 .3 Construcción de un AF equIvalente . 101
3.6.4 Construcción de un Autómata de Células equivalente
a un AF . 106
3.7 Autómatas probabilísticos 107
3.7.1 Definición 108
3.7.2 Matrices de probabilidad de transición 108
3.7.3 Vectores de estados. 109
3.7.4 Lenguaje aceptado por un AFP . 111
3.7.5 AF como AFP 113
Ejercicios 115

_" 4 Gramáticas Independientes del Contexto y Autómatas a


Pila 237
4.1 Gramáticas Independientes del Contexto . 237
4.1.1 Definiciones. .. . . . . . . . . .. 237
4.1.2 Forma Normal de Chomsky (FNC) 242
, 4.1.3 Forma Normal de Greibach (FNG) 246
. 4.2 Autómatas a Pila (AP ) 248
4.2.1 Definición...... . . 248
4.2.2 Movimientos .. . . . . 251
4.2.3 Descripción instantánea 254
4.2.4 Autómatas a Pila Deterministas . . . . . 255
4.2.5 Lenguaje aceptado por un AP . . . . . . 256
4.2.6 Autómatas a Pila y Gramáticas de tipo 2 257
Ejercicios 263

5 Gramáticas y autómatas generales 321


5.1 Máquinas de Turing 321
5.1.1 Definición . . . . . . . . . . 321
5.1.2 Movimiento. .. . . . . . . 323
5.1.3 Lenguaje reconocido por una Máquina de Turing 326
5.1.4 Variantes de las Máquinas de Turing . 326
5.1.5 Máquina de Turing Universal (MTU) 327
5.1.6 Máquinas de Turing y computación 329
5.2 Autómatas Linealmente Acotados. 330
Ejercicios .. 331

6 Aplicaciones 343
6.1 Construcción de compiladores 343
6.1.1 Analizador Léxico .. 346
~ 6.1.2 Analizador Sintáctico 351
6.2 Análisis del lenguaje natural. 357
6.3 Aplicaciones de Control 368
6.4 Más aplicaciones . . . . . . . 372
Capítulo 1

INTRODUCCIÓN

Puesto que este libro abarca la Teoría de Gramáticas, Lenguajes y Máquinas


Abstractas (Autómatas) , en esta introducción se comenzará aclarando el
significado de cada uno de los conceptos y la relación existente entre ellos.
A continuación, se describirá la estructura del libro y algunas aclaraciones
sobre la notación empleada a lo largo del texto.

1.1 Lenguajes, Gramáticas y Autómatas


Toda comunicación involucra la utilización de un lenguaje. Así, por ejem-
plo, las personas se comunican con el resto en los diferentes idiomas (len-
guajes naturales) o con las máquinas (lenguajes artificiales) a través de
conjuntos de símbolos. Se define lenguaje como un conjunto de palabras,
también llamadas cadenas o sentencias, que están formadas por símbolos
de un alfabeto. Así, por ejemplo, el idioma español está formado por un
conjunto de palabras compuestas por letras (símbolos) del alfabeto español.
Una gramática da cuenta de la estructura de un lenguaje, es decir, de las
sentencias que lo forman , proporcionando las formas válidas en que se pue-
den combinar los símbolos del alfabeto. En el caso del español, las oraciones
deben ajustarse a una gramática. Una consideración importante es la dis-
tinción entre lenguajes formales, que son los que se tratarán en este libro, y
lenguajes naturales (inglés, español, etc.). Se puede decir que la diferencia
estriba en que los lenguajes formales (como pueden ser los lenguajes de

1
programación) obedecen a reglas prees a b
ellas , no evolucionan y han sido cread
go, los lenguajes naturales (utilizad T

las reglas gramaticales que rigen su """-mm .,...,,


posterioridad para explicar e ta úl ÍI!la.

recibir y transmitir información.


nas de símbolos que se le p """...L.>oOo-

o cadenas de símbolos a ~
contienen la información naresane
entrada, cuál será el ~""''"'-U-'1U~1I
conexión que e. e e
sobre gramá ieas y m<>.ql~~ a.b~U1~a"

describe genera
genera
CLenguaE)

Figura 1.1: Conexiones entre los conceptos de lenguaje. !!TaIIlá: y


autómata.

El concepto de gramática procede de los estudios de Cho IT


búsqueda de una descripción formalizada de las oraciones de un le
turaL Chomsky clasificó las gramáticas en cuatro grandes grup
G2, G3) cada uno de los cuales incluye a los siguientes ( G3~ G2~G 1 = GO .
Las gramáticas Tipo Ü se denominan gramáticas sin restriccion o
máticas de estructura de frases; las gramáticas Tipo 1 se denominan _ , i-
bIes al contexto; las gramáticas Tipo 2 se conocen como gramáti cas in
pendientes del contexto y, por último, las gramáticas Tipo 3 denominan
gramáticas regulares. Cada tipo añade restricciones al tip o inmedia¡ame
te superior y la jerarquía va desde la más general a la más restricti\a . Cada
una de estas gramáticas es capaz de generar un tipo de lenguaje. e n 1 n-
guaje L se llama del tipo i (i=ü, 1, 2, 3) si existe una gramática G del ipo
i capaz de generar o describir ese lenguaje.
Estos estudios previos sobre teorías de gramáticas formales y le ~j ::.
LENGUAJES, GRAMÁTICAS y AUTÓMATAS: UN E NFOQUE PRÁCTICO 3

crearon las bases de la lingüística matemática, la cual tendría aplicación


no solo al estudio del lenguaje natural sino también a los lenguajes forma-
les. Así, los lingüistas distinguen entre gramática particular (propiedades
de lenguajes concretos o artificiales) y gramática universal (propiedades
generales que pueden aplicarse a cualquier lenguaje humano).
La teoría de los autómatas proviene del campo de la ingeniería eléctrica.
Shannon publicó varios trabajos donde demostraba la aplicación de la lógica
matemática a los circuitos combinatorios y secuenciales. Posteriormente,
sus ideas se desarrollaron para dar lugar a la Teoría de Autómatas. Mo-
ore publicó el primer estudio riguroso sobre autómatas y, a finales de los
años 50, se comenzó a ver la utilidad de los autómatas en relación con los
lenguajes.
La teoría de lenguajes y gramáticas formales tiene una relación directa
con la teoría de máquinas abstractas, siendo posible establecer entre ambas
un isomorfismo. Dado que las gramáticas proporcionan las reglas utilizadas
en la generación de las cadenas de un lenguaje, se puede establecer una co-
nexión entre la clase de lenguajes generados por ciertos tipos de gramáticas
y la clase de lenguajes reconocibles por ciertas máquinas. Así, se pueden
identificar los lenguajes del tipo O con la clase de lenguajes reconocidos por
una Máquina de Turing; los lenguajes del tipo 1 con los Autómatas Line-
almente Acotados; los lenguajes de tipo 2 con los Autómatas a Pila y, por
último, los lenguajes de tipo 3 con los Autómatas Finitos, los Autómatas
Probablísticos y los Autómatas de Células de McCulloch-Pitts. Al igual
que ocurría con las gramáticas, cada tipo de máquina abstracta añade res-
tricciones al tipo de máquina del nivel superior. Todas poseen una cinta de
donde leen los símbolos de entrada, un conjunto de estados que represen-
tan diferentes fases del análisis de las palabras de entrada, un lugar donde
generar la salida, y, en algunos casos, cuentan con dispositivos auxiliares de
memoria. Las diferencias entre ellas estriban en la capacidad para escribir
en la cinta de entrada, en los distintos tipos de movimientos que pueden
realizar sobre la cinta, si tienen o no memoria auxiliar, etc.
Establecidas las reglas de una gramática, una cadena de símbolos perte-
necerá al correspondiente lenguaje si tal cadena se ha formado obedeciendo
esas reglas. A partir de una gramática se puede construir una máquina
reconocedora o aceptadora del lenguaje generado por esa gramática, de tal
forma que cuando reciba a su entrada una determinada cadena de símbolos
indicará si dicha cadena pertenece o no al lenguaje. Una máquina reconoce
un lenguaje L si es capaz de reconocer todas las sentencias pertenecientes a
L y de no reconocer ninguna sentencia que no pertenezca a L. La figura 1.1
4 CAP ' o .

muestra la relación existente entre los


que una gramática describe formalmeme un ~.7""'r,:I¡. j€
puede ser reconocido o aceptado por una OOiamJc:Jaca r:lCSIq:::IDa G.lS~n:a
o autómata, entonces es posible establecer-
abstractas y gramáticas tal y como ~

Gramática
Tipo O: Gramática
sin Restricciones
Tipo 1: Gramática Autómata Linealm €
Sensible al Contexto Acotado (ALA
Tipo 2: Gramática Autómata a P ila
de Conte:\,o Libre (AP )
Tipo 3: Gramá ¡ca Regular Autómata F ini o
R~ar (AF )

Tabla 1.1: Relación entre lenguaje, gramática y autómata.

La teoría de gramáticas y máquinas teóricas tiene múltiples aplicacio-


nes en diversas áreas de conocimiento. Algunos ejemplos de las aplicacio-
nes de los lenguajes regulares y los autómatas finitos son los analizador
léxicos que se utilizan en los compiladores de lenguajes de programació .
Normalmente, un analizador léxico es un autómata que se utiliza para el
reconocimiento de las palabras empleadas en un lenguaje de programación
(variables, palabras reservadas, números, etc.). También se ut ilizan en 1 -
editores de texto para buscar y reemplazar palabras que se equiparan con
una expresión regular.
La sintaxis de los lenguajes de programación (Pascal, C. etc. ) está d
crita mediante gramáticas de Tipo 2 (independientes del contexto) aunque
también pueden contener algunos aspectos que requieran de una gramá ica
sensible al contexto.
En cuanto a las Máquinas de Turing, se corresponden con las gramá icas
sin restricciones. La peculiaridad de este tipo de gramáticas es que puede
describir cualquier suceso computable. Un suceso computable es aquél que
mediante un procedimiento es capaz de transformar unas determinadas
entradas en las salidas requeridas. Ésta es precisamente la capacidad que ~
necesita en un computador; el poder describir un procedimiento (pro!mUll.a l
que, a partir de unas entradas, sea capaz de producir una salida . í
pues, existe una asociación entre las Máquinas de Turing y los fenómen
computables, de forma que se dice que un suceso es computable i ~. e
LENGUAJES , GRAMÁTICAS y AUTÓMATAS: UN ENFOQUE PRÁCTICO 5

una Máquina de Thring capaz de describirlo.

1.2 Estructura del libro


El texto del libro trata de seguir esta misma estructura, y así está dividido
en los siguientes capítulos:

Capítulo 2 Se tratan los conceptos fundamentales que serán empleados


a lo largo del resto del texto como son los lenguajes y las gramáticas.

Capítulo 3 Siguiendo la división de Chomsky, se tratan los temas re-


lacionados con las gramáticas tipo 3 y las máquinas reconocedoras de los
lenguajes tipo 3, autómatas finitos , tanto en su versión determinista, como
no determinista. Se tratan, también, las máquinas secuenciales que per-
miten, no sólo reconocer, sino generar una salida correspondiente a una
determinada entrada. También se describen las expresiones regulares, que
permiten representar de forma sencilla y compacta los lenguajes regula-
res. Por último, se incluyen varios tipos de autómatas finitos, como son los
autómatas probabilísticos y los autómatas de células de McCulloch-Pitts.

Capítulo 4 Se dedica a las gramáticas de tipo 2, independientes del


contexto, y las máquinas reconocedoras de los lenguajes de este tipo de
gramáticas, los autómatas a pila. La importancia que tienen estos lenguajes
es que son los más utilizados para describir los lenguajes de programación
de alto nivel.

Capítulo 5 Se presentan las gramáticas de tipo O y 1 y las máquinas de


Thring como dispositivos de cómputo universal y reconocedoras de lengua-
jes de gramáticas sin restricciones.

Capítulo 6 En este capítulo se realiza una breve descripción de algunas


de las diferentes líneas de aplicación de los conceptos tratados en el libro.
Así, se presentan ejemplos de sistemas reales cuyo diseño fundamental está
completamente ligado a los conceptos teóricos descritos en el libro.
6

1.3 Notaciones
El libro asume el conocimiento, por part e del
básica matemática. En un breve resumen .
ciones:

• Conjunto: {xl ... }, significa el conj unto e

• Pertenencia: x E ~, significa que el eleme o :: -=>,....;.-,-.:!:--. .~c::::I~r::::::;;b


~.

• Inclusión: G ~ G', significa que el conjun o e


G' .

• Cardinalidad: IGI, representa el número de clem!E::~


G.
• Unión de conjuntos: G U G' , significa la unión de los conjuntos e y
G' .

• Intesección de conjuntos: G n G' , significa la intersección de los con-


juntos G y G' .

• Simplificación de notación de elementos de conjunto: a .. z ó a, . ... z .


significa todas las letras entre a y z.

• Aplicación entre conjuntos: f : El X E 2 X . .. x En ~ SI X S2 X ... X Sm·


significa que la función f (aplicación) está definida entre los conjuntos
Ei y los conjuntos Sj. También se puede entender desde el punto de
vista computacional como que recibe a la entrada un elemento de
cada uno de los conjuntos Ei y genera como salida un elemento de
cada uno de los conjuntos Sj.

• Definición: Concepto , notación: . . . , significa que la definición del


concepto cuya notación aparece después de la coma es lo que aparece
después de los dos puntos.

Capítulo 2
LENGUAJES y GRAMÁTICAS
FORMALES

Este capítulo describe los elementos básicos de la Informática Teórica: los


lenguajes y gramáticas formales. Dentro de las gramáticas, se estudia la .
clasificación más clásica de gramáticas, que sirve de hilo conductor para el
resto de capítulos.

2.1 Lenguajes
En esta sección se tratarán los temas relacionados con lenguajes formales.
Se verán algunas definiciones y operaciones que se pueden realizar con las
palabras de un lenguaje, así como con los propios lenguajes.

2.1.1 Definiciones básicas


• Alfabeto, ~: conjunto no vacío finito de símbolos (letras, números,
combinaciones de letras y números , ... )
Ejemplos:
el alfabeto español, el inglés, el alfabeto de los números, el alfabe-
to formado por todos los símbolos del teclado de un ordenador, el
alfabeto formado por los cuatro símbolos {na,pa,la, bra}

7
8 CAPÍTULO 2. LENG UAJES y G

• Palabra ° cadena: secuencia finita de SJ


u 'u nOO!(jE

Ejemplos:
"palabra", "word", "1234", "alfa-?23!", "napa-

• Longitud de una palabra, Ixl: dada una palabra I C:


~ ]l'C:ec:a
símbolos de un alfabeto ~, su longitud es el número de . 1
alfabeto que la forman.
Ejemplos:
Ipalabral=7 en el caso de que los símbolos sean los del alfabe
Si ~l = {na,pa,la,bra}, la longitud de la palabra palabra seria 3_

• Palabra vacía, A: palabra de longitud O (IAI = O); es decir. _ I

contiene ningún símbolo

• Universo de un alfabeto, W(~): todas las palabras que se puro


formar con símbolos del alfabeto~ . Contiene un número infini o dE'
elementos (palabras). La palabra vacía pertenece a todos los unÍ n:'r-
sos.

Ejemplo: W (~d = {A, na,pa,la, bra, nana, napa, nala, nabra .. . . }

• Lenguaje sobre un alfabeto, L(~): es todo subconjunto de W ( ~ ) .


Como el universo asociado a un alfabeto es infinito, hay infinitos
lenguajes asociados a un alfabeto.
Ejemplos:
Dos posibles lenguajes de ~l serían:

Ll (~d = {nana,napa,lana}, y
L2(~1) = {A,nana,pana,palabra,papa,pala} .

2.1.2 Operaciones con palabras


• Concatenación: si x e y son palabras, la concatenación. x · y . una
palabra formada por los símbolos de x seguidos de los símbolos de y .
Muchas veces, se representará simplemente como xy.

Ejemplo: En ~l, si x =pa e y =labra, x . y =palabra


LENGUAJES , GRAMÁTICAS y AUTÓMATAS: UN ENFOQUE PRÁCTICO 9

.
• Potencia: la potencia i-ésima de una palabra
.
x, x\ se forma por la
concatenación i veces de X; xi = 1 . x .,: ... :z;,.

Por definición, para toda palabra x, se cumple: xO = A

Ejemplo: En I: I , si x = pala, x2 =palapala


Si I:2 = {O, 1} Y x = 01, x 3 = 010101

• Reflexión: si la palabra x está formada por los símbolos Al, A 2, .. . , A n ,


entonces la palabra inversa de x, x- 1 , se forma invirtiendo el orden
de los símbolos en la palabra; x- 1 = An ...A2Al'

Ejemplo: En I: 1 , si x = pala, x- 1 =lapa


En I: 2 , si x = 01 , x- l = 10

2.1.3 Operaciones con lenguajes


• Unión: si LI y L 2 son lenguajes, su unión, LI U L 2 , contendrá todas
las palabras que pertenezcan a cualquiera de los dos lenguajes;

Ejemplo: Si LI (I: I ) = {nana, napa, lana}, y


L 2 (I: I ) = {A,nana,pana,palabra,papa,pala} ,
Ll (I: I )UL 2 (I:¡) = {A ,nana,napa,lana,pana,palabra,papa,pala}

• Intersección: si Ll y L 2 son lenguajes, su intersección, LI n L 2 ,


contendrá todas las palabras que pertenezcan a los dos lenguajes;

Ejemplo: Si LI(I: I ) = {nana,napa,lana} , y


L 2 (I: 1) = {A , nana,pana,palabra,papa,pala} ,
L¡(I: I ) n L 2 (I: I ) = {nana}
10 CAPÍTULO 2. LENGUAJES y GRA MÁTICAS F O ru.L -~

'.

• Resta: si Ll y L 2 son lenguajes, la resta de L l y 0 - L : - L·2 ·


contendrá todas las palabras que pertenezcan a Ll y no pen ezca..n
a L2;

Ejemplo: Si L1(¿;1) = {nana,napa,lana}, y


L 2 (¿;l) = {A, nana,pana,palabra,papa,pala} ,
L1(¿;1) - L 2 (¿;1) = {napa,lana} , y
Ld¿;l) - L1(¿;d = {A,pana,palabra,papa,pala}.

• Concatenación: dados dos lenguajes Ll y L 2 , su concatenación .


Ll . L 2 , contendrá todas las palabras que se pueden formar por la
contenación de una palabra de Ll y otra de L 2 ;

Ejemplo: Dados Ll (¿;l) y L 2 (¿;t},


Ll (¿;t}·L 2(¿;1) = {nana,napa,lana,nananana,napana na .. . . }

• Potencia: la potencia i-ésima de un lenguaje corresponde a la con-


catenación i veces del lenguaje con él mismo;

Por definición, para todo lenguaje L i , se cumple: L? = {A}

Ejemplo: Si Ll (¿;2) = {O, 1}, entonces Lr(¿;2) = {00, 01. 10. 11}

• Clausura positiva:
La clausura positiva de un lenguaje L se forma por la Uillon
de todas las potencias del lenguaje, excluyendo la potencia O:
L+ = U~ l L i
,
LENGUAJES , GRAMÁTICAS y AUTÓMATAS: UN ENFOQ UE PRÁCTICO 11

Ejemplo: Si Ll(~2) = {O, 1} ,


entonces Ll (~2)+ = {O, 1,00, 01 , 10, 11,000,001 , ... }

La clausura positiva de cualquier alfabeto (considerado como el


lenguaje formado por todos sus símbolos) corresponde al uni-
verso del alfabeto excluyendo la palabra vacía (potencia O de un
alfabeto);

~+ = W(~) - {A}

• Iteración, cierre o clausura:

El cierre de un lenguaje L se forma por la unión de la palabra


vacía a la clausura positiva del lenguaje;
00

L * =L+U {A}=UL i
i=O

~ * = W(~)

Ejemplo: Si Ll (~2) = {O, 1},


entonces Ll (~2)* = {A, 0, 1, 00 , 01 , 10, 11 , 000, 001 , ... }

• Reflexión: la reflexión de un lenguaje L está formada por la aplica-


ción de la reflexión a cada una de las palabras del lenguaje;

Ejemplo: Si L2( ~ 2 ) = {O, 1, 00, lO} , entonces


L2(~2) - 1 = {O, 1, 00, 01}

2.1.4 Otras definiciones


• Producción o regla, (x ::= y): es un par ordenado de palabras
(x, y) , x, y E ~*. Tiene el significado, que se matizará posteriormente,
de que si se encuentra x como parte de cualquier palabra v, se puede
sustituir x por y en v, lo que permite transformar palabras en otras.
12 CAPÍTULO 2. LENGUAJES y GRAMÁTICAS F OruLUES

Ejemplo: En E 2 , se podrían tener las producciones


(000 ::= 010) ó (10 ::= 01)

• Derivación directa, v -+ w: aplicación de una producción


(x ::= y) a una palabra v para convertirla en otra palabra tL' donde
v = z . x . u, w = z . y. u (v, w, z, u E E*).
Se cumple que, para cada producción (x ::= y), existe una derivación
directa de x a y : x -+ y, lo que se deduce de lo anterior, sin más que
hacer z = u = A.

Ejemplo: Con las producciones PI = (000 ::= 010) y


P2 = (10 ::= 01), y la palabra 1000, se pueden hacer la.s
siguientes derivaciones directas:
1000 ~ 1010, 1010 ~ 0110, 0110 ~ 0101, Y
0101 ~ 0011

• Derivación, v -+* w: aplicación de una secuencia de produccion a '.


una palabra.

Ejemplo: En el ejemplo anterior, la ejecución continuada


de las derivaciones directas, proporciona una derivación de
la palabra 1000 a la palabra 0011:

1000 ~ 1010 ~ 0110 ~ 0101 ~ 0011

Otra posible derivación sería pasar de la palabra 1000 a la


palabra 0110.

• Derivación más a la izquierda: si se utiliza en cada derivación


directa la producción aplicada a los símbolos más a la izquierda de la
palabra.

Ejemplo: En el ejemplo anterior de derivación, la derivación


más a la izquierda sería:

1000 ~ 0100 ~ 0010 ~ 0001 ~ 0101 ~ 0011


LENGUAJES, GRAMÁTICAS y AUTÓMATAS: UN ENFOQUE PRÁCTICO 13
l ,

• Derivación más a la derecha: si se utiliza en cada derivación


directa la producción aplicada a los símbolos más a la derecha de la
palabra.

Ejemplo: En el ejemplo anterior de derivación, la derivación


más a la derecha sería:

1000 ~ 1010 !4 1001 !4 0101 !4 0011

2.2 Gramáticas formales


Las gramáticas formales son descripciones estructurales de las sentencias de
los lenguajes, tanto formales (lenguajes de programación), como naturales
(humanos). Las definiciones proporcionadas en la sección anterior de los
lenguajes son extensionales; es decir, para describir el lenguaje se enumeran
todas las palabras que lo forman. Las gramáticas permiten describir de
forma intensional a los lenguajes; se describirán los lenguajes mediante: el
alfabeto sobre el que se construirán sus palabras; un símbolo inicial del que
partirá la obtención de cualquiera de las palabras del lenguaje, denominado
axioma; un conjunto de símbolos especiales denominados no terminales que
permiten representar subconjuntos del lenguaje o estados intermedios de la
generación de las palabras del lenguaje; y un conjunto de producciones, que
permitirán realizar las transformaciones desde los símbolos no terminales a
las palabras del lenguaje. Por lo anterior, pese a que normalmente se dice
que una gramática genera un lenguaje, en este libro también se dirá que
una gramática describe un lenguaje.

2.2.1 Definiciones
• Gramática formal, G: se define como una cuádrupla

donde

- ~T es el alfabeto de los denominados símbolos terminales

.....
/"
14 CAPÍTULO 2. LENGUAJES y GRAMÁTICAS F ORMAL ES

- L, N es el alfabeto de los denominados símbolos no terminales.


cumpliéndose:

y
L,T n L,N = 0
8 es un símbolo no terminal especial (8 E L,N), denominado el
axioma de la gramática
- P es un conjunto finito de reglas (o producciones) que tienen
como única restricción que en la parte izquierda de las produc-
ciones debe haber al menos un símbolo no terminal. Es decir.

P = {(u ::= v)lu = xAy,u E L,+,v,x,y E L,*,A E L,N}

Ejemplo:
G l = ({O,l},{A,B},A,P)

donde

P = {(A ::= lBl), (A ::= OBO), (B ::= A), (B ::= 1),


(B ::= O), (B ::= A)}

Una simplificación usual al describir las reglas de una gramá.tica es


agrupar todas las producciones de cada símbolo no terminal y separar
las partes derechas por el símbolo l.

Ejemplo: Las producciones del ejemplo anterior se podrían ,


-,
describir como:

A ::= lBl lOBO


B ::= A 11 1O 1A

• Forma sentencial: x es forma sentencial si existe una derivación


desde el axioma hasta esa palabra; es decir, 8 -+* x

Ejemplo: Dada la gramática definida anteriormente, G l.


las siguientes son formas sentenciales:
- 010: A -+ OBO -+ 010
LENGUAJES, GRAMÁTICAS y AUTÓMATAS: UN ENFOQUE PRÁCTICO 15

lAl: A -+ lBl -+ lAl


1001: A -+ lBl -+ lAl -+ lOBOl -+ 1001

• Sentencia: x es sentencia si es forma sentencial y todos sus símbolos


pertenecen al alfabeto de símbolos terminales; es decir, S -+* x, y
x E L:Y.

Ejemplo: En el ejemplo anterior, 010 y 1001 son sentencias,


mientras que lAl no lo es.

• Lenguaje generado por una gramática, L(G): es el conjunto


de todas las sentencias de la gramática; es decir, todas las palabras
que se pueden obtener a partir del axioma de la gramática por la
aplicación de derivaciones:

L(G) = {xlS -+* x,x E L: y }

Ejemplo: El lenguaje generado por la gramática G 1 sería:

Lal = {11,101, 111,00,000,010, 1001, 1111,0000,0110, ... }

Como se puede observar, el lenguaje obtenido es el de las


palabras binarias simétricas o palíndromas
(L = {xix = x- 1 }).

• Equivalencia de gramáticas: dos gramáticas G 1 y G 2 son equi-


valentes, denotado G 1 EG 2, si L(G¡) = L(G 2 ); es decir, si generan el
mismo lenguaje.

Ejemplo: Dada la G 1 definida anteriormente y la G2 defi-


nida como:

G2 = ({O , l} , {A , B ,C, D} , A , P)

donde

......
16 CAPÍTULO 2. LENGUAJES y GRAMÁTICAS F ORMALES

P = {(A ::= 1B1), (A ::= OCO), (B ::= D ), (D ::= A ).


(D ::= 1), (D ::= O), (D ::= A) , (C :: = D )}

G I y G 2 son equivalentes ya que L(G¡) = L (G2 ).

• Regla compresora: aquélla cuya parte derecha está formada por


menos símbolos que la parte izquierda (al ::= a 2, la21< 101). en
ejemplo de este tipo de reglas son las reglas en las que la palabra nl.CÍa
es la parte derecha de la regla: x ::= A. Se denominan así porque
transforman una palabra en otra de menor longitud.

Ejemplo: oeo ::= 1 y A ::= A son reglas compresoras.

2.2.2 Tipos de Gramáticas


Noah Chomsky definió cuatro tipos de gramáticas formales , que se dife-
rencian en los tipos de producciones de la gramática. Esta clasificación
describe las gramáticas desde los tipos más generales a los más específicos.
dependiendo de la forma de las reglas de la gramática. Esta clasificación
permite introducir, al mismo tiempo, una clasificación en los lenguajes que
las gramáticas generan, y, también, una clasificación en los autómatas que
reconocen los lenguajes generados por las gramáticas .

• Tipo O (sin restricciones): en la parte izquierda tiene que haber


al menos un símbolo no terminal. Respecto a las partes derechas de
sus producciones no hay ningún tipo de restricción;

P = {u ::= vlu = xAy,u E 1:;+,v, x, y E 1:;*, A E 1:;N}

Ejemplo: Una posible gramática de tipo Osería la siguiente:

G3 = ({O , l} , {A , B , S} , S, P)

donde

P = {(S ::= AO), (AO ::= 1B1), (lA ::= OBO), (B ::= A),
(B ::= 1), (B ::= O)}
LENGUAJES, GRAMÁTICAS y AUTÓMATAS: UN ENFOQUE PRÁCTICO . 17

El lenguaje generado por esta gramática es:

LC3 = {11,lOl,11l}

• Tipo 1 (dependientes del contexto o sensibles al contexto):


las partes izquierdas y derecha tienen que tener una parte común y
sólo se admite como regla compresora la regla S ::= >..

P = {(S ::= >') ó (x Ay ::= xvy)lx,y E I:*,A E I:N,v E I:+}

Se denominan dependientes del contexto porque se tiene en cuenta


lo que viene antes y después del símbolo que se sustituye. Así, en
la fórmula anterior, x e y son el contexto de la transformación de
A en v. La peculiaridad de estas gramáticas consiste en que las de-
rivaciones producidas por aplicación de sus reglas cumplen que las
palabras siempre tienen longitud mayor o igual que las anteriores en
la derivación.

Ejemplo: La gramática G 3 no es de tipo 1, ya que hay


una regla compresora cuya parte izquierda no es el axioma
(B ::= >.). Una gramática de tipo 1 sería la siguiente:

G 4 = ({O,l},{A,B},A,P)

donde

P = {{(A ::= lBl), (A ::= 11), (lBl ::= 101), (lBl ::= 11l)}.

Esta gramática es equivalente a la anterior, ya que generan


el mismo lenguaje:

LC4 = LC3 = {11, 101, l11}

.......
18 CAPÍTULO 2. LENGUAJES y GRAMÁTICAS F ORM ALES

• Tipo 2 (independientes del contexto): en estas gramát icas. la


parte izquierda de las producciones sólo puede tener un símbolo no
terminal:

p = {(S ::= >') ó (A ::= v)IA E ~N,V E ~+}

Estas gramáticas se denominan de contexto libre, porque a la hora


de transformar una palabra en otra, el símbolo no terminal que se
transforma no depende de los que estén a la izquierda o derecha. Así.
cuando se realicen derivaciones en las que se transforme el símbolo .--1
de la fórmula anterior, no hace falta saber qué hay alrededor de él.

Ejemplo: La gramática G4 no es de tipo 2, ya que varias


reglas tienen en la parte izquierda más de un símbolo no
terminal. Un ejemplo de gramática de tipo 2 equivalente a
las anteriores sería la siguiente:

G5 = ({O,l},{A,B},A,P)

donde

P = {(A ::= 1B1), (A ::= 11), (B ::= 1), (B ::= O)}.

Esta gramática es equivalente a la anterior, ya que generan


el mismo lenguaje:

LC5 = LC4 = {11, 101, 111}

• Tipo 3 (regulares o lineales)


Estas gramáticas, las más restrictivas, pueden ser de dos tipos:

Lineales por la izquierda:


P = {(S ::= >') ó (A ::= Ba) ó (A ::= a)IA, B E ~ N , a E Er}
Lineales por la derecha:
P = {(S ::= >') ó (A ::= aB) ó (A ::= a)IA,B E ~ N , a E Er}
LENGUAJES, GRAMÁTICAS y AUTÓMATAS: UN ENFOQUE PRÁCTICO 19

Ejemplo: La gramática G s no es de tipo 3, ya que las dos


primeras reglas tienen partes derechas que no se ajustan a
ninguna de las dos categorías de gramáticas regulares. Un
ejemplo de gramática de tipo 3 lineal derecha equivalente
a las anteriores sería la siguiente:

G6 = ({O,l},{A,B},A,P)

donde

P = {(A ::= lB), (B ::= 1), (B ::= OC) , (B ::= lC), (C ::= l)}.

Esta gramática es equivalente a la anterior, ya que generan


el mismo lenguaje:

LG6 = LG5 = {11, 101, l1l}

• Existe, además, una jerarquía entre los tipos de gramáticas tal que
las gramáticas del tipo i son más generales que las de tipo i + 1.
Formalmente, G 3 ~ G 2 ~ G I ~ G o

2.2.3 Árboles de derivación


Son una forma de representar las derivaciones, siendo utilizados, por ejem-
plo, en la construcción de compiladores para representar el análisis sintáctico
de los programas fuente y sirviendo de base para la generación de código.
Sólo se pueden definir árboles de derivación para gramáticas de tipo 1 o
más restrictivas (tipos 2 y 3). En los árboles de derivación:

• el axioma se representa en la raíz del árbol;

• los nodos hojas del árbol son símbolos terminales de la gramática;

• los nodos intermedios son símbolos no terminales de la gramática; y

• las derivaciones se representan creando tantos sucesores del símbolo


no terminal de la izquierda de las producciones como símbolos (ter-
minales y no terminales) aparezcan en la parte derecha de las pro-
ducciones.
20 CAPÍTULO 2. LENGUAJES y G RAc\1ÁTICAS F O ruLU ES

Ejemplo: Supóngase la siguiente gramática:

G7 = ({O,l,[,J,+,*},{E},E,P)
P = {(E ::= [EE+]), (E ::= [EE*]), (E ::= O) , (E ::= I n

La figura 2.1 muestra un posible árbol de derivación para ob e-


ner la palabra [O[OhJ+]).
E

E E +

I
O E
E *
I
O 1

Figura 2.1: Ejemplo de árbol de derivación de la palabra [0[01*J+J.

2.2.4 Ambigüedad
El concepto de ambigüedad en la teoría de lenguajes y gramáticas es similar
al empleado en el lenguaje coloquial; existe más de una forma de generar
una palabra a partir del axioma de una gramática. La ambigüedad puede
surgir a varios niveles: en sentencias, lenguajes, y gramáticas. A la hora
de utilizar eficientemente los lenguajes y gramáticas, es conveniente que no
exista ambigüedad, pues provoca que el análisis de las sentencias no sea
determinista .

• Sentencia: una sentencia es ambigua si tiene más de una derivación


o árbol de derivación.

Ejemplo: En el caso de la gramática

Gs = ({l} , {A,B} , A, {(A ::= 1B) , (A ::= l1) , (B ::= 1)} )

la sentencia 11 puede ser obtenida por las dos derivaciones


siguientes: A -+ lB -+ 11 Y A -+ 11.
LENGUAJES, GRAMÁTICAS y AUTÓMATAS: UN ENFOQUE PRÁCTICO 21

• Gramática: una gramática es ambigua si tiene al menos una sen-


tencia ambigua.

Ejemplo: La gramática G s es ambigua, ya que 11 es una


sentencia y es ambigua.

• Lenguaje:
un lenguaje es ambiguo si existe una gramática ambigua que lo
genera.

Ejemplo: El lenguaje Ls = {11} es ambiguo ya que la


gramática G 8 lo genera y es ambigua.

si todas las gramáticas que generan un lenguaje son ambiguas,


el lenguaje es inherentemente ambiguo.

Ejemplo: El lenguaje Ls no es inherentemente ambiguo


ya que la siguiente gramática lo genera y no es ambigua.

G 9 = ({l},{A},A,{(A ::= 11)})

2.2.5 Recursividad
El concepto de recursividad en lenguajes y gramáticas también es análogo
al utilizado en otras ramas de la computación; la definición de un concepto
utiliza a ese mismo concepto en la definición. Existen varios niveles de
recursividad:

• Producción recursiva: si el mismo símbolo no terminal aparece en


los dos lados de la producción; es decir, existe un A E ¿'N tal que
(A ::= xAy) E P , (x , y E ¿,*)

Ejemplo: Las siguientes producciones son recursivas:

A ::= OAO, B ::= BlO, C ::= 111C

/
J.
22 CAPÍTULO 2. LENGUAJES y GRAMÁTICAS F o ~ L~LES

• Gramática recursiva: si existe al menos una producción recursiva


en su conjunto de producciones.

• Recursividad por la izquierda: si el símbolo no terrrúnal aparece


el primero de la parte derecha; es decir, A ::= Ay. (A E ~ _ -.y E ~ ' ) .

Ejemplo: En el ejemplo anterior, B ::= BlO es recursi -a


por la izquierda.

• Recursividad por la derecha: si el símbolo no terminal a parece el


último en la parte de la derecha; es decir, A :: = x A , (A E E s . .r e ~') .

Ejemplo: En el ejemplo anterior, C ::= 111C es rec :I\-a


por la derecha.

• Recursividad por la izquierda en más de un paso : si ~ iene


una regla no recursiva por la izquierda A ::= B x , A f:- B . 1--1. B E
'E N, X E E*), pero desde B hay una derivación del tipo B ---' . A. y.
(y E 'E*), entonces existe recursividad por la izquierda en más de
un paso con respecto al símbolo no terminal A , ya que exis e una
derivación desde él de la siguiente forma: A -+* Ayx .

Ejemplo: En las siguientes producciones hay recursi\idad


por la izquierda en más de un paso.

E ..= T + E IT * E I variable I número


T .. = E I (E)

ya que E -+ T +E -+ E + E.

Normalmente, cuando se utilizan las gramáticas, como en el caso de la


construcción de compiladores de lenguajes de alto nivel, se necesita que las
gramáticas no sean recursivas (especialmente la recursividad por la izquier-
da). Para eliminar la recursividad se recurre al siguiente procedimiento,
dividido en dos pasos.

• Primer paso. Eliminación de recursividad por la izquierda en las


producciones de un mismo símbolo no terminal.
LENGUAJES, GRAMÁTICAS y AUTÓMATAS: UN ENFOQ UE PRÁCTICO 23

Para cada A E ~N
Si las producciones de A son:
p = (A ::= A· allA· a21·· ·IA· a n l,8ll,821·· ·1,8m)
donde ,8i no comienzan por A
Entonces Se crea un nuevo símbolo no terminal A';
~N = ~N U {A'};
P := (p- P) U {A ::=,81· A' I,82· A'I·· .1,8m· A' ,
A' ::= al . A'la2 . A'I·· .Ian . A'I),}

Como muchas veces no se desean las producciones del tipo


(A ::= ),) cuando A no es el axioma, otra variante equivalente del
procedimiento anterior consiste en modificar el conjunto de produc-
ciones resultante, sustituyendo el nuevo símbolo no terminal A' en
cada parte derecha de producción por )" de la siguiente forma:

P := (p- P) U {A ::=,81· A' 1,82 . A'I · · ·1,8m· A' I,8ll,821·· ·1,8m,


A' ::= al· A'la2 . A'I· · ·Ia n . A' la lla21·· .Ian }

Ejemplo: Supóngase las siguientes producciones de una


gramática que genera expresiones aritméticas:

P = {(E ::= E + E), (E ::= E * E), (E ::= variable),


(E ::= número)}

Para eliminar la recursividad por la izquierda de las dos pri-


meras producciones, se crea un nuevo símbolo no terminal
E' , se eliminan todas las producciones en P del conjunto
de producciones de la gramática y se crean las siguientes
nuevas producciones:

p' = {(E ::= variable E'), (E ::= número E'),


(E' ::= +EE' ), (E' ::= *EE' ), (E' ::= ),)}
24 CAPÍTULO 2. LENGUAJES y GRA~Ü nC ..\S F OruLUES

o bien:

p" = {(E ::= variable E'), (E ::= número E/ ).


(E ::= variable ), (E ::= número ),
(E' ::= +EE/ ), (E' ::= *EE / ), (El :: = + E ). (E :: = %E )}

• Segundo paso. Eliminación de recursividad por la izquierda en más


de un paso.
Aún cuando se elimine la recursividad por la izquierda de las p uc-
ciones de todos los símbolos no terminales, no se asegura que haya
eliminado de todas las producciones de la gramática. ya que puede
estar oculta por producirse en más de un paso. El algori tmo para la
eliminación de la recursividad por la izquierda en más de un ras es
el siguiente:

1. Disponer los símbolos no terminales en algún orden


A l ,A2 ... A n
2. For i:=1 to n
For j:=1 to n
2.1 Si i i- j, reemplazar cada producción A i ::= A j . ') por:
Ai ::= (h .1'162 ·1'1 · . ·16k . l'
donde Aj ::= 61 162 1... 16k son todas las reglas de A)
2.2 Eliminar la recursividad por la izquierda de las A ,

Ejemplo: En el ejemplo de la gramática de expresion


aritméticas, se enumerarían primero los símbolos no termi-
nales, como, por ejemplo, Al = E, A 2 = T. A continua-
ción, se realizan los bucles como sigue:

• i=1 (Al = E), j=1 (Al = E). Se reemplazarían las


producciones E ::= Ea por las que se obtendrían de
sustituir la E de la parte derecha por todas las pro-
ducciones a las que lleva E. Como no hay ninguna
producción de ese tipo, no se hace nada. El paso 2.1
del algoritmo eliminaría la posible recursión izquierda
en Al = E. Como no hay, se sigue con la siguiente
iteración del bucle interno.
L EN GUAJES , GRAMÁTICAS y AUTÓMATAS: UN ENFOQUE PRÁCTICO 25

• i=l (Al = E), j=2 (A 2 = T). Se reemplazan todas


las producciones E ::= Ta. Esto daría lugar al nuevo
conjunto de producciones:
E .. = E + E I E * E I (E) + E I (E) * E I
variable I número
T .. = E I (E)
y se elimina la recursión en E , quedando:
E ··= (E) + EE' I (E) * EE' I variable E' I
número E'
E'··= +EE' I *EE' 1).
T··= E I (E)

• i=2 (A 2 = T) , j=l (Al = E) . Se reemplazan las pro-


ducciones T ::= Ea , dando lugar a:
E ··= (E) + EE' I (E) * EE' I variable E' I
número E'
E'··= +EE' I *EE' I ).
T· ·= (E) + EE' I (E) * EE' I variable E' I
número E' I (E)
y se eliminaría la recursión en T si la hubiera.

• i=2 (A 2 = T) , j=2 (A 2 = T). Se reemplazan las pro-


ducciones T ::= Ta. Como no hay ese tipo de pro-
ducciones, no se producen cambios y el conjunto de
producciones en el que se ha eliminado la recursión es:
E··= (E) + EE' I (E) * EE' I variable E' I
número E'
E'··= +EE' I *EE' I ).
T··= (E) + EE' I (E) * EE' I variable E' I
número E' I (E)

2.2.6 Factorización a izquierdas


Otro problema común cuando se diseña una gramática es el hecho de que
aparezcan producciones de un mismo símbolo no terminal en cuya parte de-
recha, la primera parte sea común. Por ejemplo, las siguientes producciones
26 CAPÍTULO 2. LENGUAJES y GRA MÁT ICAS F OR~L-\LES

pueden estar tomadas de una gramática de un lenguaje de programación


de alto nivel.

s .. = e e
If Then S Else S I If Then S I
Repeat S U ntil e
I Repeat S Forever
donde ~T = {If,Then,Else,Repeat ,Until,Forever} y ~ N = { S. e } .
Este problema presenta dificultades a la realización de compiladores
para un lenguaje definido con esa gramática. El proceso que eli mina ese
problema se denomina factori zación a izquierdas, cuyo algoritmo se detalla
a continuación:

Por cada A E ~N
Si A ::= (3. all(3· a2
Entonces cambiar esas producciones por:
A ::= (3. A'
A' ::= alla2

Ejemplo: En el ejemplo anterior, la aplicación de la factorización


a izquierdas crearía dos nuevos símbolos no terminales, A' y S' .
y generaría las siguientes producciones.

S"= e
If Then S A' I Repeat S S'
A'··= Else S I ,\
S" '= U ntil eI Forever
LENGU AJES , GRAMÁTICAS y A UTÓMATAS: UN ENFOQUE PRÁCTICO 27

EJERCICIOS

Ejercicio 12.11
Dados los siguientes alfabetos:
• ~¡ = {1 , 2, 3,4, 5, 6,7,8} Y
• ~2 = {a,b,c,d, e,j,g,h}
y los lenguajes:
• L¡(~¡) = {xi x E ~l} Y
• L2(~2) = {xi x E ~2},
Definir los lenguajes Ll U L 2, L l . L2 Y (L 1 . L 2)2.

{xix E ~l ó x E ~2} =
{1,2,3,4 , 5, 6, 7,8 ,a, b,c,d,e, j , g, h}

{xylx E ~l e Y E ~2} =
{la, 2a , . .. , 8a , lb, ... , 8b, ... , lh, ... , 8h} .
En este caso, una numeración muy utilizada para los tableros
de ajedrez es numerar las filas del 1 al 8 y las columnas de
la a a la h, con lo que el lenguaje resultante de Ll . L 2
representaría todas las casillas del ajedrez .
• (L 1 • L 2)2 = {x2 = X • xix E (L¡ . L2)} =
= {lala , . .. , la8a , lalb, . .. , la8b, . .. , lbla , . . . , 8h8h}.
El número de palabras del lenguaje resultante sería I(L¡ . L2)21 = 84 .

c1
28 CAPÍTULO 2. LENGUAJES y GRAMÁTICAS F OrulALES

Ejercicio 12.21
Supóngase que la Dirección General de Tráfico desea construir u sistema
que sea capaz de determinar si una secuencia de símbolos forma una ma ríc ula
española válida. Se pide diseñar el lenguaje que serviría de base para dicho
sistema.

Se va a construir el lenguaje final en función de lenguajes más senc i-


llos. Así, primero se definirá el lenguaje de los símbolos que representan a
las provincias españolas: Lp = {A, AB, AL, ... , ZA}. Luego se define el
lenguaje formado por los dígitos:

LD = {a, 1, 2, 3, 4, 5, 6,7,8, 9}

Otro lenguaje será el formado por las letras del alfabeto, exceptuando
la Ñ, Q, R y las letras compuestas: LL = {A, B, C, ... , Z}. Como último
lenguaje simple, se partirá del lenguaje formado por el guión: L e = { - } .
A partir de estos lenguajes simples, se pueden ir realizando operaóones
sobre lenguajes para formar el lenguaje final. Así, las matrículas antiguas,
como, por ejemplo, M - 624945, se pueden definir como:

Las matrículas nuevas, como, por ejemplo, TE - 4123 - A ó


SG - 2334 - LG se pueden definir como:

Habría que hacer una salvedad con algunas matrículas no permit idas,
como, por ejemplo, las que tienen una combinación de dos letras finales con
una A como letra final (BA , CA, .. . ). Si se denomina Lp al lenguaje for-
mado por las combinaciones de dos letras no permitidas en las matrículas,
el lenguaje que describe a las matrículas sería:
LENGUAJ ES, G RAM ÁTICAS y A UTÓ MATAS : UN E NFOQUE PRÁCTICO 29

Ejercicio 12.31
Supóngase que el Ministerio de Economía y Hacienda ha decidido aceptar
las declaraciones de la renta interactivamente por Web. Para ello, el usuario
de be rellenar los datos relativos a la declaración utilizando un interface que
de be detectar errores en la entrada de datos. ¿Qué lenguajes describen los
siguientes campos?

1. Los nombres y apellidos pueden ocupar un maxlmo de 40 caracteres,


que podrán ser letras o guiones y pueden estar separados por blancos
(nombres compuestos) .

2. La casilla correspondiente al DNI ,l puede rellenarse con el DNI o con el


NIF. El DNI es una secuencia de, como máximo, ocho dígitos y el NIF
se forma con el DNI seguido de una letra.

3. La dirección postal debe estar precedida de el si es una calle, Pza. si


es una plaza, Avda. si es una avenida , o R. (resto) si no es ninguna de
estas tres cosas, pudiendo aparecer en minúsculas o mayúsculas. A conti-
nuación debe estar el nombre de la calle , que debe ocupar un máximo de
50 caracteres en los que sólo pueden aparecer letras, espacios en blanco,
o gUiones.

4. El número de la dirección postal debe ser una secuencia de, como máximo,
cuatro dígitos.

5. El código postal está compuesto de cinco dígitos.

Se definen los siguientes alfabetos básicos y los lenguajes formados sólo


por los símbolos de los alfab etos:

• L: D = {a, 1,2,3,4,5,6, 7,8, 9} = LD

• L:L = {a, b,c, ... , z, A, B ,C, ... , Z}=LL

1 Documento N aciona! de Identidad

-
..... ,...,
30 CAPÍTULO 2. LENGUAJES y GRAMÁTICAS FO~~A LES

• L;e = { - } = Le

• L;s = {/} = Ls
• L;p={.}=Lp

donde # representa al espacio en blanco. A partir de estos lenruajes,


se van a formar los lenguajes pedidos:

1. LN = [LL U LB U Le]40
Si se quisiera evitar que aparecieran determinadas combinaciones no
deseadas, como, por ejemplo, dos guiones seguidos o un guión seguido
de un blanco, habría que cambiar la unión de los lenguajes por otra
fórmula más específica. Por ejemplo, si se quieren evitar dos guiones
seguidos, se podría poner:

L N= (LL U L B )40 U [(LLLLLL U LLLLLB U LLLLLe U LLL BLL U


ULLLBL B U LLLBLe U LLLeLL U LLLe L BU
ULBLLLL U LBLLLB U LBLLLe U LBL BLL U
ULBLBL B U LBLBLe U LBLeLL U LBLCLB)13.
·(LL U LB)] =
= (LL U LB)40 U [((LL U L B )3 U (LL U LB)Le(LL U LB )U
U(LL U L B )2 Le)13 . (LL U LB)]

Si se hace (LL U LB) = LLB, se tendría:

Lo que se ha hecho es enumerar las posibles combinaciones de los


lenguajes LL , LB Y Le, que son los que pueden aparecer. evitando
aquellas combinaciones en las que haya dos guiones juntos. Para
ello, también hay que evitar que puedan aparecer al final de una
combinación y al principio de otra, ya que, como se repiten 13 \'eces
estas combinaciones de tres elementos (13 x 3 + 1 = 40). podrían
aparecer dos guiones juntos de dos pasos consecutivos.
8 .
2. LD NI=[Ui=lLb]·(LLU{A})
Es decir, son todos los posibles números entre O y 99999999 seguidos .
o no, de una letra.

.i
LENGUAJES, GRAMÁTICAS y AUTÓMATAS: UN ENFOQUE PRÁCTICO 31

3. Como en el caso de la dirección, se marca cuáles serán los comienzos


de los códigos ("el", "Pza.", "Avda." o "R."), el lenguaje se podría
formar uniendo esos prefijos a un conjunto de letras, blancos y guiones
cuya cardinalidad será 50 menos lo que ocupen cada uno de esos
prefijos. Podría ser:
LDP =[( {e} U {e}) . Ls' (LL U LB U LC)48]U
[({p} U {P})· ({z} U {Z})· ({a} U {A})· Lp'
(LL U LB U LC)46]U
[({a} U {A})· ({v} U {V})· ({d} U {D})· ({a} U {A})· Lp'
(LL U LB U LC)45]U
[({r} U {R})· Lp' (LL U LB U LC)48]
4. En el caso del número de la dirección, puede ser cualquier número
entre O y 9999:

5. Por último, el código postal estaría formado por cinco dígitos obliga-
toriamente, pudiendo definirse como:

Realmente, habría que comprobar que el código postal es uno de los


válidos. Para ello se podrían enumerar todos los elementos válidos
del lenguaje Lc p y formar con esos un nuevo lenguaje L c pv.

En los siguientes capítulos se estudiarán los autómatas, que son sistemas


que permiten, dado un lenguaje y una palabra, decidir si la palabra perte-
nece o no al lenguaje. Esto permitiría, fácilmente , construir un autómata
para cada uno de estos lenguajes y que se encargara de la labor de com-
probación de que se han introducido los datos correctamente.
32 CAPÍTULO 2. LENGUAJES y GRA~L\ nCAS F O RliU- ES

Ejercicio 12.41
Obtener derivaciones de las palabras 002 y 0001 a pa rtir de la . iente
gramática:

G = ({O, 1, 2} , {A , B}, A, {(A ::= OE) , (A ::= 2) , (E ::= OA ). (B :: = )})

Describir el árbol de derivación y obtener el lenguaje que ge era .

Las palabras se pueden obtener por las siguientes derivacion

• 002: A --t OE --t OOA --t 002

• 0001: A --t OB --t OOA --t OOOE --t 0001

Los árboles de derivación aparecen la figura adjunta.

A
A
A
0)\ ° A
° A
I °A B
2
° I

Para obtener el lenguaje, habrá que analizar qué palabras pueden deri-
varse desde el axioma. ASÍ, se pueden obtener las siguientes derivaciones:

.A--t2

• A --t OB --t 01

• A --t OB --t OOA --t 002

• A --t OE --t OOA --t OOOB --t 0001

• A --t OE --t OOA --t OOOE --t OOOOA --t 00002


LENGUAJES , GRAMÁTI CAS y AUTÓMATAS: UN ENFOQUE PRÁ CTICO 33

Por tanto, puede aparecer un 2 precedido de un número par de Os ó un


1 precedido de un número impar de ls. Si se define un lenguaje Ll como:

y un lenguaje L2 como:

Entonces, el lenguaje generado por la gramática se puede definir como


Le = Ll U L 2 , o, lo que es lo mismo:

Ejercicio 12.51
Dada la siguiente gramática, realizar factorización a izquierdas y eliminación
de recursividad por la izquierda .

G = ({ or,and,not,=,(.),id} , {C} , C, P)

donde

P = {(C::= C and C),


(C::= C or C),
(C::= not C),
(C::= ( C =C )),
(C::= id)}

Para factorizar a izquierdas se reemplazan las dos primeras producciones


por:

G::=CG'
G'::= or G I and C

A continuación, se elimina la recursividad por la izquierda de la produc-


ción (C :: =C C') creando un nuevo símbolo no terminal Gil y cambiando el
conjunto de producciones P por:

...
34 CAPÍTULO 20 LENGUAJES y GRA. L.\T1CA5 F Oru L-\ LES

e::= not e e" I ( e = e ) e" I id e"


e'::= or e I and e
e"::= e' e" I .\

Ejercicio 12.61
Dada la siguiente gramática, que utiliza la notación pola ca i ersa ( odos
los operandos de las operaciones se colocan antes de los operadores), aa m ar
a izquierdas y eliminar la recursividad por la izquierdao

G = ({id, num, fune , +, *, j, - , (,), o,;, <, >, =} , {S, N , M , 0 0R }o oP )

donde

P = {(S ::= S; S), (S :: = So), (S ::= (NNR)), (S ::= (idN = )) 0


(N ::= M NON), (N ::= M NO), (N ::= id), (N ::= num)o
(M ::= N), (M ::= fune(N)) , (M ::= fune(M)) ,
(O ::= +), (O ::= *), (O :: = -), (O ::= j),
(R ::= <), (R :: =», (R ::==)}

Mostrar dos sentencias del lenguaje generado por la gramática .

La factorización a izquierdas influye en las producciones:

(S ::= S; S) , (S ::= So), (S ::= (NNR)), (S ::= (idN =)) ,


(N ::= MNON), (N ::= MNO) , (M ::= fune(N)) , (M :: = func (.U ))

Aplicando el algoritmo, quedarían como:

(S .. - SS') , (S' .. - , S) , (S' .. -.,


00- 00 _ 0 00- )

(S ::= (S") , (S" ::= NNR)) , (S" ::= idN =)) ,


(N ::= MNON ' ), (N' ::= N), (N' ::= .\),
(M ::= fune(M / ), (M' ::= N)), (M' ::= M))

La gramática modificada, quedaría:

G' = (~~, ~~, S, PI)


LENGUAJES, GRAMÁTICAS y AUTÓMATAS: UN ENFOQUE PRÁCTICO 35

donde
E!z, = ET = {id, num, fune, +, *, /, -, (,),.,; ,<, >, =}
E~ = {S,S',S",N,N',M,M',O,R}
p' = {(S ::= SS'), (S ::= (S"),
(S ' .... -,
-. S) , (S' .... -.,
- )
(S" ::= NNR)), (S" ::= idN =)),
(N ::= M NON') , (N ::= id), (N ::= num),
(N' ::= N), (N' ::= .\),
(M ::= N), (M ::= fune(M'),
(M' ::= N)), (M' ::= M))}
(O ::= +),(0 ::= *),(0 ::= -),(0 ::= /),
(R ::=<), (R ::=», (R ::==)}
La recursividad por la izquierda aparece en las producciones correspon-
dientes a 5, N Y M. Estas dos últimas en más de un paso. Para eliminar
la recursividad por la izquierda en más de un paso, se recurre al algoritmo,
ordenando los símbolos no terminales por el mismo orden en que aparecen
en el conjunto E~, por ejemplo; Al = S, A 2 = S', ... , A g = R. Luego,
se realizan bucles en los que se reemplazan las primeras apariciones de los
símbolos no terminales en las partes derechas de las producciones por las
partes derechas de las producciones de esos símbolos no terminales y se
elimina la recursividad por la izquierda.
• i = 1, j = 1 (S, S). Como i = j, no se hace nada en el primer paso, y
luego se elimina la recursividad por la izquierda de las producciones
de S, generando un nuevo símbolo no terminal S"I , quedando sus
producciones como:

(S ::= (S" SIII) , (SIII ::= S' SIII) , (SIII ::= .\)

• i = 1,j = 2 (S, S'). No hay producciones del tipo S ::= S' y ya se ha


eliminado la recursividad por la izquierda de S, con lo que no se hace
nada en este punto.

• Lo mismo pasa con i = 1 y j = 3.. 9, i = 2 Y j = 1..9, e z 3,Y


j = 1..3.

• i = 3, j = 4 (S", N). En este caso, se sustituye la primera aparición


del símbolo no terminal N en la producción (S" :: = N N R)) por to-
das sus producciones, transformando dicha producción en el siguiente
conjunto:

.-
36 CAPÍTULO 2. LENGUAJES y GRA {ÁnCAS f OR.).H L ES

(S" ::= MNON'NR)), (S" ::= idNR)) , (S" :: = n -R

Como no hay recursividad por la izquierda en las prod e S" ,


se termina este paso.

• Para i = 3 y j = 5 no hay cambios, pero sí en el i = 3. = 6


(S", M) debido a los cambios producidos en S" en el pas enor.
Es necesario cambiar la M que aparece como primer '
parte derecha de la producción (S" ::= MNON'NR )) por ~ partes
derechas de sus producciones. Quedarían las nuevas prod uccion ~ de
S" como:

(S" ::= NNON'NR)), (S" ::= func(M'NON'NR ))

que se unirían a las anteriores producciones suyas. Como no hay


recursividad por la izquierda, no hay más cambios.

• Para i = 3 y j = 7.. 9 no hay cambios, así como para i = 4 Y j = 1.. 5.

• i = 4,j = 6 (N, M). Se sustituye la M de la producción


(N ::= M NON') por sus producciones , quedando:

(N ::= N NON') , (N ::= func(M' NON')

A continuación, se elimina la recursividad por la izquierda de _V .


quedando sus producciones:

(N ::= func(M' NON' N"), (N ::= idN") , (N ::= numN" ).


(N" ::= NON' N"), (N" ::= >..)

• Para i = 4, j = 7 .. 9 e i = 5, j = 1..3 no hay cambios.


• i = 5,j = 4 (N', N). Se realizan los mismos pasos anteriores . que-
dando las producciones de N' como:

(N' ::= func(M'NON'N") , (N' ::= idN") , (N' ::= numN" ). (_ ' ::= >..)

• En los siguientes pasos, no hay más cambios hasta i = 6. j = 4


(M , N) , donde se sustituye la N en la producción (M ::= ) por
sus producciones, quedando las producciones de M como:
LENGUAJES, GRAMÁTICAS y AUTÓMATAS: UN ENFOQUE PRÁCTICO 37

(M ::= func(M' NON' N"), (M ::= idN") , (M ::= numN"),


(M ::= func(M')

Como no hay recursividad por la izquierda, se termina al paso, no


habiendo más cambios hasta i = 7,j = 4 (M', N), donde se sustituye
la N en la producción (M' ::= N)) por sus producciones, quedando
las producciones de M' como:

(M' ::= fune(M' NON'N")), (M' ::= idN")), (M' ::= numN")) ,
(M' ::= M))

No hay recursividad por la izquierda, con lo que se siguen los pasos


hasta i = 7,j = 6.

• i = 7, j = 6 (M' , M). Se sustituye la producción (M' ::= M)) por:

(M' ::= fune(M' NON' N")), (M' ::= idN")) , (M' ::= numN")) ,
(M' ::= fune(M'))

que no tiene recursividad.

Como ya no hay ningún problema de recursividad, se terminaría el


algoritmo de eliminación de la recursividad por la izquierda, quedando la
siguiente gramática:

G" = (E"T' E"N' S , P")

donde

E!f = ~~ = {id, num, fune , +, *, /, -, (,),., ; , <, >, =}


E" = {S S' S" S'" N N' N" M M' O R}
N " " " " "
P' = {(S ::= (S"S"'),
(S' .... -_., S) , (S' .... -.
- ),
(S" ::= NNON'NR)) , (S" ::= fune(M'NON'NR)) ,
(S" ::= idNR)) , (S" ::= numNR)) , (S" ::= idN =)) ,
(S'" ::= S' S"') , (S'" ::= ,\)
(N ::= fune(M' NON' N"), (N ::= idN") , (N ::= numN") ,
(N' ::= fune(M'NON'N"), (N' ::= idN") , (N' ::= numN") ,
(N' ::= ,\),

I
38 CAPÍTULO 2. LENGUAJES y GRAMÁTICAS FORMALES

(N" ::= NON' N"), (N" ::= A)


(M ::= func(M' NON' N") , (M ::= idN") , (M :: = numN" ).
(M ::= func(M')
(M' ::= func(M' NON' N")) , (M' ::= idN")) ,
(M' ::= numN")) , (M' ::= func(M'))
(O ::= +) , (O ::= *), (O ::= -) , (O ::= j) ,
(R ::=<), (R ::=», (R ::==)}

Para obtener sentencias del lenguaje, no hay más que derivar desde
el axioma, utilizando las producciones de la gramática. Si se utiliza la
gramática primitiva (sería equivalente hacerlo con la nueva), y deriyando
por la izquierda, se podrían obtener, por ejemplo, las siguientes dos sen-
tencias:

.S -+ S; S -+ (NNR) ; S -+ (id NR); S -+ (id MNOR) ; S-+


-+ (id NNOR); S -+ (id num NOR); S -+ (id num num OR ): S -+
-+ (id num num * R); S -+ (id num num * < ); S -+
-+ (id num num * < ); S. -+ (id num num * < ); (id N = ). -+
-+ (id num num * <); (id id =).
• S -+ S . -+ (NNR). -+ (num NR). -+ (num num R). -+ (num num = ) .

Ejercicio 12.71
Dada la gramática G = {~T,~N,E,P}, donde ~T {a . - . x. ). 0,
~N = {E , T , F}, E es el axioma y Pes:
E E+ T I (E) I a
T T*FI (E) I a
F (E) I a
Eliminar la recursividad por la izquierda y construir el árbol de de rivació n
para las sentencias: a+a+a+a+a ya+(a+a).

Se eliminará primero la recursividad por la izquierda de la producción


E::= E+T. Para ello, se añadirá un nuevo símbolo no terminal A y se
sustituirá la producción por las siguientes producciones.
LENGUAJES , GRAMÁTICAS y AUTÓMATAS: UN ENFOQUE PRÁCTICO 39

E .. - aA I a I (E)A I (E)
A 00-
+TA I +T

El nuevo conjunto de producciones es:

E 00-
00 aA I a I (E)A I (E)
A 00-

00 +TA I +T
T 00 -

00 T *F I (E) l a
F 00-

00 (E) I a

Se eliminirá ahora la recursividad por la izquierda de la producción


T : : = T * F introduciendo un nuevo símbolo no terminal B. Las nuevas
producciones son:

T 00-

00 (E)B I aB I (E) I a
B 00-

00 *FB I *F

El conj unto final de producciones es:

E 00-
00
aA I a I (E)A I (E)
A 00 -
00
+TA I +T
T 00-

00 (E)B I aB I (E) I a
B 00-

00 *FB I *F
F 00 -
00 (E) I a

Las figura 2.2 muestra el árbol de derivación de la primera sentencia y


la figura 2.3 el á.rbol de derivación de la segunda.
40 CAPÍTULO 2. LENGUAJES y GRA ~L~TI C.\.S f O IDL\L ES

+ T A

a +
1\ a

Figura 2.2: Arbol de derivación para la sentencia a +a+a - a - a.

+ T

( E )

/\
a A

1\T
+
I
a

Figura 2.3: Arbol de derivación para la sentencia a + (a + a).


LENGUAJES, GRAMÁTICAS y AUTÓMATAS: UN ENFOQUE PRÁCTICO 41

Ejercicio 12.81
Dados los siguientes lenguajes:

• Ll = {raíces de los verbos regulares de la primera congujación}

• L 2 = {terminaciones de presente de indicativo de la primera congujación}

• L3 = {raíces de adjetivos calificativos que admiten desinencia de género}

• L4 = {morfemas de género}

• L5 = {morfemas de número}
Definir los lenguajes de las formas verbales regulares de presente de indi-
cativo y de los adjetivos calificativos masculinos y femeninos tanto singulares
como plurales.

Simplificando estos lenguajes pueden ser:

• Ll = {cant, am, salt, ... }

• L2 = {o, as, a, amos, ais, an }


• L3 = {bonit, ric, guap, amarill, ... }

• L4 = {o, a }

• L5 = {A, s }
Así, L 1 ·L 2 define el lenguaje de las formas verbales regulares de presente
de indicativo de la primera conjugación:
Ll . L 2 = {canto, cantas, ... , ama, amamos, . .. , saltais, saltan, ... }
Para los adjetivos, L3 . L4 incluye los adjetivos masculinos y femeninos :
L3 . L4 = {bonito, bonita, amarillo, amarilla, ... }
Por último, el lenguaje L 3·L 4·L 5 incluye también los adjetivos singulares
y plurales, pues:
L3 . L4 . L 5 = {bonito, bonita, bonitos, bonitas, amarillo, amarilla, .. . }

...
Capítulo 3
GRAMÁTICAS REGULARES y
AUTÓMATAS FINITOS

En este capítulo se van a estudiar las gramáticas regulares, de tipo 3 según


la clasificación de Chomsky. A continuación, se tratarán los autómatas
que reconocen el lenguaje generado por una gramática de ese tipo: las
Máquinas Secuenciales; los Autómatas Finitos Deterministas, No Determi-
nistas, y Probabilísticos; y los autómatas de Células de McCulloch-Pitts.
También se estudiarán las Expresiones Regulares que permiten describir de
forma concisa el lenguaje generado por una gramática de tipo 3 (Lenguajes
Regulares) y, por tanto, aceptado por un autómata de los tipos enunciados
anteriormente.

3.1 Gramáticas regulares


Las Gramáticas Regulares son el tipo más específico de gramática según la
jerarquía de Chomsky. Como se ha visto, las producciones pueden ser de
dos tipos, según sea regular (lineal) por la derecha o por la izquierda:
• Lineales por la izquierda:
p = {(S ::= A) ó (A ::= Ba) ó (A ::= a)IA, BE ¿'N, a E ¿'T}

• Lineales por la derecha:


p = {(S ::= A) ó (A ::= aB) ó (A ::= a)IA,B E ¿'N,a E ¿'T}

43
44 CAPÍTULO 3. GRAMÁTICAS REGULARES y AUTÓMATAS FI ITOS

A continuación, se estudiará la equivalencia entre ambas representa-


ciones, ya que, para cada Gramática Lineal derecha existe una Gramática
Lineal izquierda equivalente y viceversa. El algoritmo para convertir una
gramática lineal derecha en otra equivalente lineal izquierda tiene cuatro
pasos:

1. Se transforma la gramática de forma que no haya ninguna regla en


cuya parte derecha esté el axioma de la gramática (cuando esto ocu-
rre se denomina axioma inducido) . Para ello, se aplica el si!!UÍente
proceso:

• Se crea un nuevo símbolo no terminal S'.


• Por cada regla de la forma S ::= x, donde S es el axioma. y
x E ~*, se crea una nueva regla S' ::= x.
• Cada regla de la forma A xSy (A E ~ N, x, Y E L' ). se
transforma en A ::= xS'y.

2. Se crea un grafo G dirigido:

• Para cada A E ~N U {A} se crea un nodo.


• Para cada producción (A ::= aB) E P (A, B E ~ N, a E LT ). se
crea un arco etiquetado con a que va del nodo A al nodo B.
• Para cada producción (A ::= a) E P (a E ~T) , se crea un arco
etiquetado con a que va del nodo A al nodo A.
• Si existe una regla S ::= A, se crea un arco sin etiqueta de de el
nodo del axioma al nodo A.

3. Se crea otro grafo G' a partir de G:

• Se intercambian las etiquetas del axioma, S, y A.


• Se invierte la dirección de todos los arcos.

4. Se transforma en un conjunto de reglas:

• Para cada nodo, se crea un símbolo no terminal de la gramática,


excepto para el etiquetado como A.
• Para cada arco etiquetado con a E ~T que va del nodo A E ~N
al nodo B E ~N U {A} , se crea una producción A ::= B a.
• Si existe un arco del nodo del axioma al nodo de A, se crea una
regla S ::= A.
LENGUAJES, GRAMÁTICAS y AUTÓMATAS: UN ENFOQUE PRÁCTICO 45

El algoritmo para realizar el paso inverso es similar al descrito.

Ejemplo: Supóngase la siguiente Gramática Lineal derecha.

G IO = ({O,l},{A , B},A,P)
P = {(A ::= lB), (A ::= A) , (B ::= OA), (B ::= On
La Gramática Lineal izquierda equivalente se formará en los
siguientes cuatro pasos:

1. Se transforma la gramática de forma que no aparezca la A


en la parte derecha de la producción B ::= OA.
• Se crea un nuevo símbolo A'
• Se crean las reglas A' ::= lB y A' ::= A
• Se crea la regla B ::= OA'
• Se borra la regla B ::= OA.
La gramática queda como:

GlOl = ({O,l},{A,B , A'} , A,P)


P = {(A ::= lB), (A ::= A), (A' ::= lB), (A' ::= A),
(B ::= OA' ), (B ::= On
Como la gramática, por definición, no puede tener la regla
A' ::= A, ya que A' no es el axioma, se elimina dicha regla
y se sustituye la A' en todas las producciones en las que
aparezca en la parte derecha, quedando la gramática como:

= {{O, l} , {A, B, A'}, A, P)


GlOlI
P = {(A ::= lB), (A ::= A), (A' ::= lB), (B ::= OA' ),
(B ::= O)}

2. Se crea un grafo que representa las transiciones de esta


gramática (figura 3.1).
3. Se invierte el grafo, tal como se muestra en la figura 3.2.
4. Se transforma el grafo en la siguiente gramática:

GlOlIl = ({O , l} , {A,B,A'} , A,P)


P = {(A ::= BO), (A ::= A), (A' ::= BO) , (B ::= A'l),
(B ::= In
46 CAPÍTULO 3. GRAMÁTICAS REGULARES y AUTÓ MATAS FINITOS

Figura 3.1: Grafo construido a partir de la gramática G lO

Figura 3.2: Grafo construido a partir invertir el grafo en la fi!!UIa3. l.

3.2 Máquinas Secuenciales


Las Máquinas Secuenciales representan un tipo de autómata que es capaz
de, dada una palabra de entrada, generar otra palabra de salida. Para
ello, se definen un conjunto de estados, que "memorizan" la parte de la
palabra de entrada leída en cada momento y generan, al mismo tiempo que
transitan entre los estados, una salida. Se pueden ver como un autómata
que tiene dos cintas asociadas: una por la que va leyendo las palabras de
entrada, y otra de salida, en la que va generando la salida. En es a sección
se tratarán los aspectos básicos de este tipo de autómatas.

3.2.1 Definición
• Máquina finita de Mealy: es una quíntupla definida como

donde
LENGUAJES, GRAMÁTICAS y AUTÓMATAS: UN ENFOQUE PRÁCTICO 47

~E es el alfabeto de símbolos de entrada

~s es el alfabeto de símbolos de salida

Q es el conjunto finito no vacío de estados

f es la función de transición definida como:

f :Q x ~E ---+ Q

- 9 es la función de salida, definida como:

9 :Q X ~E ---+ ~s

Ejemplo: Supóngase la siguiente Máquina Secuencial, que


genera como salida una p en el instante t si hasta ese ins-
tante de tiempo ha recibido en la entrada un número par
de unos (considerando la entrada que no contiene ningún 1
como número par de unos), y genera una i en la salida si
hasta ese instante ha recibido un número impar de unos en
la entrada.

Af1 = ({O,I},{p,i},{qO,ql},f,g)

donde

f(qo, O) = qo g(qO, O) = p
f(qo , 1) = ql g(qO , 1) = i
f(ql, O) = ql g(ql , O) = i
f(ql, 1) = qo g(ql , 1) = P
48 CAPÍTULO 3. GRAMÁTICAS REGULARES y AUTÓMATAS FINITOS

El comportamiento de las Máquinas Secuenciales es el si-


guiente: la máquina dispone de un conjunto de estados que
modelizan los diferentes momentos en los que puede estar
a la hora de resolver un problema. En este caso, hay dos
estados, qo, que simboliza el estado en el que, hasta ese ins-
tante, se han leído un número par de unos en la entrada . y
qI, que representa el hecho de que se han leído un número
impar de unos en la entrada. La función ¡ permite transitar
de un estado a otro en cuanto lee un 1 en la entrada (por-
que hay cambio de par a impar o viceversa), y transita al
mismo estado en el que se encuentre (no cambia de estado )
si se lee un 0, ya que no cambia la salida (de par a impar o
viceversa). La función g genera la salida correspondiente a
ese instante. En este caso, si está en el estado qo y lee un o.
sigue habiendo leído un número par de unos en la entrada.
con lo que generará una p en la salida. Esto es debido a
que, si está en el estado qo es porque hasta el momento de
leer el siguiente dígito de la entrada, había leído un número
par de unos, y si ahora lee un 0, el número de unos leídos en
la entrada no cambia y, por tanto, seguirá siendo par. Así
se razona con el resto de las salidas que genera la función g .

• Máquina finita de Moore: es una definición alternativa de Máquina


Secuencial en la que la función g sólo depende del estado en el que se
esté. La definición será:

MO = CEE, L.S, Q, ¡, g)

donde la única diferencia con respecto a la definición de Mealy es que


la función de salida g se define como:

g : Q -+ L.s

Ejemplo: Una Máquina de Moore que realiza la misma la-


bor que la MI definida anteriormente, sería:

M2 = ({O,l},{p,i},{qO,ql},¡,g)
donde
LENGUAJES, GRAMÁTICAS y A UTÓMATAS: UN ENFOQUE PRÁCTICO 49

f(qo , O) = qo g(qo) =P
f(qo, 1) = qi
f(qi, O) = qi g(qd = i
f(qi , 1) = qo
En el caso de las Máquinas de Moore, generan en la salida el
correspondiente símbolo del estado en el que estén después
de realizar cada tansición. Siempre que esté en el estado qo
genera una p en la salida, y siempre que esté en el estado
qi genera una i en la salida.

La diferencia fundamental entre los dos tipos de Máquinas Secuen-


ciales es que las ~áq~!!l_as_Q~Mealy suponen velocidad de proceso
infinita, ya que estas máquinas generan una salida inmediatamente
después de recibir la entrada, y, p-or" erconfiari¿~' las ' cleMoore supo-
nen una v~íocida,d finiÍa; que la respuesta sólo dep~n:Qe~I~.~g.dQ
ya,
en el que se encu~J1t.r~J-ª- má<luina d~~i~~s q~.Jiªiii·a:r:cªQª trar.t¡¡ición.

3.2.2 Representación
Existen tres formas equivalentes de representar una Máquina Secuencial:

• Tablas de transición y de salida: se crea una matriz de IQI x I~ E I


elementos para representar la función f y una matriz de IQI x I~ E I
elementos (ó IQI para las Máquinas de Moore) para representar la g,
tal como se muestra en la figura 3.3. Los estados aparecen en las filas
de todas las tablas, mientras que los símbolos del alfabeto de entrada
aparecen en todas las tablas, menos en las tablas de la función de
salida de las Máquinas de Moore.
En el caso de las tablas que representan la función f, la posición
(qi, ej) está ocupada por el estado qk al que se transita en el caso
de que se esté en el estado qi y se lea en la entrada el símbolo ej.
En las tablas que representan la función de salida, la posición (qi, ej )
(o qi si es de Moore) está ocupada por el símbolo Sk que se genera
en la salida al estar en el estado qi y recibir en la entrada el símbolo
ej (o simplemente haber transitado al estado qi en las Máquinas de
Moore) .

Ejemplo: Las máquinas Mi y M 2 definidas anteriormente


se representarían como:
50 CAPÍTULO 3. GRAMÁTICAS REGULARES y AUTÓMATAS FINITOS

~E ~E
Q I el I ... I em I Q I el I ... I em I
ql qi ... qj ql Si . .. Sj
.. . .. .
qn qk ... ql qn Sk . .. Sl
(a) f (b) gME

Figura 3.3: Ejemplos genéricos de tablas que representan la fun ción de


transición f de una Máquina Secuencial (a), la función de salida 9 _\f E de
una Máquina de Mealy (b) o la función de salida gMO de una Máquina de
Moore (c), donde ei E ~E, qi E Q y sr E ~s ·

~E
Q lO 1
1 I

qo qo ql
~
ql ql qo ~
gMl

• Tabla única de transición y de salida: las dos funciones se pueden


representar en una sóla tabla, en la que, en las Máquinas de :\ Iealy,
en cada posición (qi, ej) aparecerá el estado al que se t rans ita y la
salida correspondiente, si, estando en el estado qi se lee de la ent rada
el símbolo ej. En el caso de las Máquinas de Moore, las filas están
etiquetadas como Q /~ s y el significado de las posiciones es el mismo
que en las tablas anteriores. La figura 3.4 muestra la representación
genérica.

• Diagramas de transición: son representaciones gráficas de las


Máquinas Secuenciales.

Mealy: se crea un grafo dirigido en el que


* para cada estado qi E Q se crea un nodo, y
* para cada transición f(qi,ej) = qk Y g(qi ,ej) = SI . se crea
un arco de qi a qk etiquetado con ej / SI
Moore: se crea un grafo dirigido en el que
* para cada estado qi E Q, si g(qd = Sj , se crea un nodo
etiquetado qd S j, y
LENGUAJES , GRAMÁTICAS y AUTÓMATAS: UN ENFOQUE PRÁCTICO 51

~E
Q I el l··· I em
ql qi/sp ... qj/Sr
.. .
qn qk/Ss ... qt!St qn/Sr qk q¡ ...J

(a) f/gME (b) f /gMO

Figura 3.4: Ejemplos genéricos de tablas únicas que representan la función


de transición y la de salida de una Máquina Secuencial de Mealy (a) , y de
una Máquina de Moore (b), donde ei E ~E , qi E Q y Si E ~s.

* para cada transición f (% ej) = qk, se crea un arco de qi a


qk etiquetado con ej.

Ejemplo: Las figuras 3.5(a) y 3.5(b) muestran la represen-


tación de las máquinas MI y M 2 utilizando diagramas de
transición.
l/í
O/p ~ Olí

C6J ~
@~
l/p

(a) (b)

Figura 3.5: Diagramas de transición de la Máquina de Mealy MI (a) y la


de Moare M 2 (b)

3.2.3 Extensión a palabras de la entrada y salida


En lugar de tratar uno a uno los símbolos de la entrada y generar uno a uno
los símbolos de salida, se va a estudiar cómo se puede tratar una secuencia
seguida de entradas y generar la salida correspondiente por medio de una
extensión de las definiciones anteriores.
52 CAPÍTULO 3. GRAMÁTICAS REGULARES y AUTÓMATAS FINITOS

Extensión de Mealy
La función de transición f se redefine como:
f: Q x ~E -+ Q
Además,
f(q , ax) = f(J(q, a), x) para cada q E Q, a E ~E , x E ~E
f(q, >') = q para cada q E Q
donde >. es la palabra vacía. Es decir, para una palabra formada por
varios símbolos, el estado al que transita la Máquina Secuencial es el co-
rrespondiente a transitar con cada uno de los símbolos.
La función de salida, g, se redefine como:

g: Q x ~E -+ ~s
y, a las salidas anteriores, se les añaden las siguientes salidas correspon-
dientes a palabras de longitud cero o mayor que uno:
g(q, ax) = g(q, a) . g(J(q, a) , x) para cada q E Q, a E ~E , X E ~E
g{q, >') = >. para cada q E Q
La salida que se genera es la correspondiente a concatenar la salida
producida con cada uno de los símbolos de la entrada y sus transiciones.

Ejemplo: Si la palabra de entrada es 01001 y la máquina MI


comienza en el estado qo , MI generaría el siguiente comporta-
miento en cuanto a transiciones y salida:

f(qo, 0100) = f(J(qo, 0),100) = f(qo, 100) = f(J(qo, 1) , 00) =


= f(qI, 00) = f(J(qI, O), O) = f(qI, O) =
f(f(qI,O),>.) = f(qI,>') = qI

y, al mismo tiempo:

g(qO , 0100) = g(qO , O)g(J(qO, 0) , 100) = pg(qO , 100) =


pg(qO, 1)g(f(qo , 1) ,00) =
pig(qI, 00) = pig(qI, O)g(J(qI , O), O) = piig(qI , O) =
piig(qI, O)g(J(qI, O), >') = piiig(qI, >') = piii
LENGUAJES, GRAMÁTICAS y AUTÓMATAS: UN ENFOQUE PRÁCTICO 53

Extensión de Moore
Se redefinen f y 9 de la misma forma que para las Máquinas de Mealy.
• f: Q x ~E -+ Q
• g: Q -+ ~s
Pero se añade una nueva función de salida de palabras g' definida como:

g' : Q x ~E -+ ~s
También se cumplen las siguientes igualdades:

• f(q, ax) = f(J(q, a), x) (Vq E Q, a E ~E, X E ~E)'

• f(q, A) = q (Vq E Q)
• g'(q , ax) = g(q) . g'(J(q, a) , x), (Vq E Q, a E ~E, X E ~E)

• g'(q, A) = A (Vq E Q)
donde, a la hora de calcular la función de salida, g', de una palabra
se utiliza la función de salida, g, de un único símbolo. Hay que tener en
cuenta que a la hora de calcular la función salida, hay que realizar primero
la transición. Así, la primera salida será la correspondiente al estado al que
se llega desde el estado inicial y el primer símbolo de la entrada.

Ejemplo: Si la máquina M 2 recibe como entrada la palabra


01001 y comienza en el estado qo , generaría el siguiente com-
portamiento en cuanto a transiciones y salida:

f(qo,0100) = f(f(qo,0),100) = f(qo,100) = f(f(qo,l),OO) =


f(qI,OO) = f(J(qI, O), O) = f(qI, O) =
f(f(qI,O),A) = f(qI,A) = qI

y, al mismo tiempo:

g'(qo,0100) = g(qo)g'(J(qO, 0),100) = pg'(qO, 100) =


pg(qI)g'(J(qO , 1),00) =
pig'(qI, 00) = pig(qdg'(J(qI , O), O) = piig'(qI, O) =
piig(q¡)g'(f(qI, O), A) = piiig'(qI , A) = piii
54 CAPÍTULO 3. GRAMÁTICAS REGULARES y AUTÓMATAS FINITOS

Función respuesta de una Máquina Secuencial


A partir de las funciones de salida y con el objetivo de unificar los dos
tipos de Máquinas Secuenciales, se define una función respuesta, h, de la
siguiente forma:

Vq E Q, x E ~E, h(q, x) = { g~(q, x))


g q,x
si es de Mealy
si es de Moore

Dada esa nueva función, en cada Máquina Secuencial se cumplen los


siguientes teoremas:

• Vq E Q, x E ~E' Ih(q, x)1 = Ixl


• Vq E Q, x, y E ~E' f(q, xy) = f(f(q, x), y)

• Vq E Q, x, y E ~E' h(q, xy) = h(q, x) . h(f(q, x), y)

Ejemplo: Dada la máquina MI , se define la h(q, x) = g(q , x)


Vx E {O, 1} * ,q E {qo, ql}. Entonces, se cumplen, entre otras ,
las siguientes igualdades (provenientes de los teoremas):

• Ih(qo, 0100)1 = 101001 = 4, lo cual se cumple al ser

h(qo, 0100) = g(qO , 0100) = piii

• f(qo, 0100) = f(f(qo, 01) , 00)


Por una parte, f(qo,0100) = ql como se ha mostrado en
ejemplos anteriores. Por otra parte,

f(f(qo,Ol),OO) = f(f(f(qo,O), 1),00) = f(f(qo , 1) , 00) =


f(ql , 00) = f(f(ql , O) , O) = f(ql , O) =
f(f(ql,O) , A) = f(ql,A) = ql

• h(qo , 0100) = h(qo, 01)f(f(qo, 01), 00)


Por una parte, h(qo , 0100) = piii como se ha mostrado en
ejemplos anteriores. Por otra parte,
L ENGUAJES , GRAMÁTICAS y A UTÓMATAS: UN ENFOQ UE PRÁCTICO 55

h(qo,OI)h(f(qo,OI),OO) = h(qo ,O)h(f(qo , O) , I)h(f(qo , OI) , OO) =


ph(qo, l)h(ql,OO) =
pih(ql,O)h(f(ql,O),O) =
piih(ql , O) = piih(ql, O)h(f(ql , O) , >.) =
piiih(ql, >.) = piii c.q.d.

3.2.4 Equivalencia de Máquinas Secuenciales


Dadas dos Máquinas Secuenciales es importante saber si, dadas las mismas
palabras de entrada generan la misma salida; es decir, si son equivalentes.
Para poder analizar cuándo dos máquinas son equivalentes, se van a definir
primero unos conceptos básicos.

Definiciones
• Equivalencia de estados: dos estadosql, q2 E Q son equivalentes,
qlEq2 , si para cada palabra x E ¿:E se cumple que la salida generada
comenzando por ql y recibiendo x como entrada, genera la misma
salida que comenzando por q2 y recibiendo x como entrada:

h(ql ,X ) = h(q2,X )

Ejemplo: Dada la siguiente Máquina Secuencial:

A/3 = ({0 , 1} , {p ,i }, {qO , ql , q2} , f , g)

donde f y 9 serán:

f(qo, O) = q2 g(qO, O) = p
f(qo , 1) = ql g(qo, 1) = i
f(ql , O) = ql g(ql, O) = i
f(ql, 1) = qo g(ql, 1) = P
f(q2 , O) = qo g(q2 , O) = P
f(q2 , 1) = ql g(q2 , 1) = i

....
56 CAPÍTULO 3. GRAMÁTICAS REGULARES y AUTÓMATAS FINITOS

Los estados qo y q2 son equivalentes (q OEq2)' Pese a que no


se va a demostrar formalmente, esto es debido a que, para
cualquier palabra formada con los símbolos del alfabeto de
entrada, la salida es la misma empezando en cualquiera de
los dos estados . Así, por ejemplo:

h(qo, 011) = h(qo, O)h(f(qo, O), 11) = ph(q2 , 11) =


= ph(q2, 1)h(f(q2, 1), 1) = pih(ql , 1) = pip

h(q2,011) = h(q2, 0)h(f(q2, 0),11) = ph(qo, 11) =


ph(qo, l)h(f(qo, 1), 1) = pih(ql , 1) = pip

Lemas

• Lema 1: Si Vql , q2 E Q, x E ¿,'E, q1 Eq2 entonces f(ql , x)Ef(q2, x)


• Lema 2: Para cada estado q E Q, qEq

Ejemplo: En el ejemplo anterior, para comprobar si se cum-


ple el lema 1 para los estados qo y q2, a partir de que qOEq2,
se va a estudiar si se cumple que f(qo, x)Ef(q2 , x) para
una palabra x concreta. Así, si x = 011 , f(qo , 011) = qo
y f(q2,011) = qo. Como, por el segundo lema, qoEqo , se
demuestra que f(qo, 011)Ef(q2, 011) .

• Equivalencia de longitud n: dos estados ql, q2 E Q son equiva-


lentes de longitud n, q1 E n q2 , si son equivalentes (h(ql , x) = h(q2, ~))
cuando la palabra de entrada x E ¿,'E es de longitud n (Ixl = n).

Ejemplo: En la máquina M4 definida como:

M4 = ({0,1},{p,i},{qO,ql,q2,q3},f,g)

donde f y 9 serán:
LENGUAJES, GRAMÁTICAS y AUTÓMATAS : UN ENFOQUE PRÁCTICO 57

1 1i
f(qo , O)
f(qo, 1)
= q2
= qo
g(qo, O)
g(qO, 1)
=P
=i e CJo ~@
f(ql, O)
f(ql , 1)
f(q2, O)
= q3
= ql
= qo
g(ql, O)
g(ql, 1)
g(q2, O)
=P
=i
=P
O/p
)", 01, ( )
IIp

f(q2, 1) = ql g(q2, 1) =i
f(q3 , O) = qo g(q3, O) =i 6) ___________ @0
f(q3, 1) = ql g(q3 , 1) =P 1 1i I1 i

En este caso, qOE 1 ql, ya que, para cualquier palabra x de


longitud 1, se cumple que h(qo, x) = h(ql, x) . Sin embargo,
para palabras de longitud 2, ya no se cumple, dado que,
por ejemplo, si x = 00:

h(qo,OO) = h(qo, O)h(J(qo, O), O) = ph(q2, O) = pp


h(ql , OO) = h(ql,O)h(J(ql,O),O) =ph(q3,0) = pi

• Equivalencia entre estados de Máquinas Secuenciales dife-


rentes
Si se tienen dos Máquinas Secuenciales MI y M 2 definidas como:

MI = ('EE, 'Es, Ql, h, gd


M 2 = ('EE, 'Es, Q2, 12, g2)

Dos estados p E Ql Y q E Q2, son equivalentes, pEq, si y sólo si

h 1 (p , x) = h2(q , X) ,Vx E 'EE

• Equivalencia de Máquinas Secuenciales


Dos Máquinas Secuenciales MI y M 2 son equivalentes, MI EM2 , si y
sólo si para cada estado pE Ql, existe un estado q E Q2 tal que pEq
y, además, para cada estado q E Q2, existe otro estado p E Ql tal
que pEq.
58 CAPÍTULO 3. GRAMÁTICAS REGULARES y AUTÓMATAS FINITOS

Cálculo del conjunto cociente

La relación de equivalencia entre estados definida anteriormente particiona


el conjunto de estados en subconjuntos (clases de equivalencia) en los que
los estados pertenecientes a una misma clase son todos equivalentes entre
sí. Esta partición se denomina conjunto cociente, Q/ E , generado por la
relación de equivalencia E. El procedimiento para su cálculo se muestra
en la figura 3.6. En cada iteración, el procedimiento calcula las part iciones
de equivalencia con las relaciones sucesivas de longitud i. Así, se comienza
calculando el conjunto cociente de la relación de equivalencia de longitud 1,
Q/ El, Y se continua hasta que dos conjuntos cociente seguidos son iguales,
Q / Ei = Q / E i+l ' En este caso, se habrá encontrado el conjunto cociente
de la relación de equivalencia, Q/ E.

Función Conjunto-Cociente (M): QE

M: entrada a la función, Máquina Secuencial definida por (~E, ~s , Q, f, g)


QE: salida de la función , conjunto cociente de la Máquina Secuencial

Para todos los estados p, q E Q


Si Va E L, E se cumple h(p, a) = h(q, a)
Entonces p y q estarán en la misma clase ci E Q/ El ;
i:=l;
Repetir
Para todos los estados p, q E Q
Si p, q E Cj E Q/ Ei y
Va E L,E, f(p , a) E cm, f(q , a) E Cm, Cm E Q/ Ei
Entonces p y q seguirán estando en la misma clase Cj E Q / E i+ 1 ;
i:=i+1
Hasta que Q/ Ei-l = Q/ E i ;
Devolver Q/E = Q/Ei

Figura 3.6: Procedimiento de cálculo del conjunto cociente de una Máquina


Secuencial.
LE" GUAJES, GRAMÁTICAS y AUTÓMATAS: UN ENFOQUE PRÁCTICO 59

Ejemplo: Supóngase la siguiente Máquina Secuencial:

donde f y 9 serán:
O/a
f(qo, O) = q3 g(qo, O) =a
f(qo , 1) = q2 g(qO, 1) =b !Jo ~@
f(ql, O) = q3 g(ql, O) =a
f(ql, 1) = ql g(ql,1) =b ) o,.
f(q2, O)
f(q2, 1)
= qo
= ql
g(q2, O)
g(q2, 1)
=b
=a
1/ b
)0" I/b

f(q3, O) = qo g(q3, O) =a 6)~@;)


f(q3, 1) = q2 g(q3, 1) =b l/a I/b

En el conjunto cociente inicial, Q/ El, estarán en la misma clase


los estados tales que la salida con cada símbolo de entrada sea la
misma, o, lo que es lo mismo, que sean equivalentes de longitud
1 (pE l q). Así, qo y q3 estarán en la misma clase, ya que

h(qo, O) = a h(q3, O) = a
h(qo, 1) = b h(q3, 1) = b

Sin embargo, qo y q2 no estarán en la misma clase, ya que

h(qo, O) =a h(q2, O) =b

El conjunto cociente inicial quedará como:

En el siguiente conjunto cociente, Q/E2, dos estados estarán en


la misma clase si estaban ya en la misma clase en Q/ El Y para
cada símbolo de entrada las transiciones respectivas desde cada
estado con cada símbolo llevan a estados que estuvieran en la
misma clase en el conjunto cociente anterior. En este caso, qo Y
q3 seguirán en la misma clase de equivalencia ya que pertenecían
a la misma en Q/ El y, además:
60 CAPÍTULO 3. GRAMÁTICAS REGULARES y AUTÓMATAS FINITOS

j(qO, O) = q3 j(q3 , O) = qo
j(qO , 1) = q2 j(q3 , 1) = q2

y q3 Y qo estaban en la misma clase de equivalencia en Q/ El ,


al igual que, trivialmente, q2 y q2. Por tanto, Q/ E 2 será:

Como Q/ E 2 =F Q/ El, se continua con el algoritmo, formando


Q/ E 3. Ahora se puede comprobar que:

Por tanto, el algoritmo termina y el conjunto cociente será:

Minimización de Máquinas Secuenciales


U na vez definido el conjunto cociente, se puede calcular la Máquina Se-
cuencial mínima equivalente a otra. Es decir, una Máquina Secuencial con
el mismo comportamiento, pero con el menor número de estados. Si

M = (L.E, L.s, Q, j, g)

se define la Máquina Secuencial mínima como:

M' = (L.E , L.S, Q',1', g')

donde

• Q' = Q / E; es decir, los estados de la máquina mínima son las clases


de equivalencia del conjunto cociente

• j'(e, a) = e' si (Vq E e,j(q,a) E e') donde e,e' E Q/E

• h'(e,a ) = h(q,a), (Vq E e) donde e E Q/E

• g' es la función salida correspondiente a h'


1

LENGUAJES , GRAMÁTICAS y AUTÓMATAS: UN ENFOQUE PRÁCTICO 61

Ejemplo: Dada la Máquina Secuencial M5 definida en el ejer-


cicio anterior, su Máquina Secuencial mínima equivalente sería:

M~ = ({0,1},{a,b,c},{CO,Cl,C2},!"g')

donde ca = {qO , q3}, Cl = {qt} y C2 = {q2} Y l' y g' serán:

¡'(ca, O) = Co g'(Co , O) = a
¡'(co, 1) = C2 g'(co , l) = b
¡'(Cl , O) = Co g'(Cl , O) = a
¡'(Cl, 1) = Cl g'(Cl , 1) = b
j'(C2, O) = Co g'(C2, O) = b
j'(C2 , 1) = Cl g'(C2, 1) = a

l/a l/b

3.2.5 Equivalencia de Máquina de Mealy y


Máquina de Moore
Toda Máquina de Mealy se puede transformar en una equivalente de Moore
:' viceversa. A continuación, se presentan cuáles son los procedimientos a
seguir en cada caso .

• Mealy -+ Moore: dada la Máquina de Mealy, M E = (~E , ~s , Q, ¡, g),


se construye una Máquina de Moore de la siguiente forma:

MO = (~E , ~s , Q' , !"g')

donde, por cada transición y salida que cumplan

¡(q, a) = p, g(q, a) = b, (q ,p E Q, a E ~ E, b E ~ s)

se crea:

- Un estado pb E Q' en el que su función de salida será


g'(pb) = b, y
62 CAPÍTULO 3. GRAMÁTICAS REGULARES y A UT ÓMATAS FINITOS

- U na transición f' (qS , a) = pb para cada estado qS. s E L: s.

Si a un determinado estado q E Q no llega ninguna transición, se crea


un nodo etiquetado con qA.

Ejemplo: Dada la Máquina de Mealy M~ definida ante-


riormente, minimización de la M 5 , se define la Máquina de
Moore equivalente como:

M6 = ({O,l},{a,b,c},Q',j',g')
donde:
f(co, O) = Co, g(co, O) = a Entonces
cg E Q',g'(cg) = a,j'(cg,O) = cg y f'(c~,O) = cg
f(co , 1) = C2, g(co, 1) = b Entonces
c~ E Q', g'(c~) = b, f'(cg, 1) = c~ y f'(c~, 1) = ~
f(Cl , O) = cO , g(Cl , O) = a Entonces
cg E Q',g'(cg) = a,f'(c~,O) = cg y f'(c~,O) = cg
f(Cl,l) = cl,g(Cl , 1) = b Entonces
c~ E Q', g' (C~) = b, f' (c~ , 1) = c~ y f' (c~, 1) = c~
f(C2,0) = cO,g(C2,0) = b Entonces
c~ E Q',g'(c~) = b,f'(c~,O) = c~ y f'(c~,O) = c~
f(C2, 1) = Cl, g(C2, 1) = a Entonces
c~ E Q' , g'(c~) = a, f'(c~, 1) = c~ y f'(c~, 1) = c~

Por tanto, Q' = {cg , c~ , c~ , c~ , c~}, ya que el estado c~ no se


ha creado. También se eliminarían las transiciones corres-
pondientes a dicho estado .

• Moore -t Mealy: dada la Máquina de Moore, MO = (L:E, L:s , Q, f,g),


se construye una Máquina de Mealy de la siguiente forma

M E = (L:E, L:s , Q, f , g')

donde, por cada transición y salida en el que se cumpla

f(q, a) = p, g(q) = b, (q,p E Q, a E L:E , bE L:s)

se define g'(q, a) = b.
LENGUAJES, GRAMÁTIC AS y AUTÓMATAS: UN ENFOQ UE PRÁCTICO 63

Ejemplo: Dada la Máquina Secuencial de Moore M 2 , de-


finida al principio del tema de Máquinas Secuenciales, se
crearía la de Mealy equivalente como:

M~ = ({O , l} , {p,i} , {qo,qd , f ,g')

donde

f(qo , O) = qO ,g(qo) = P Entonces g'(qO , O) = P


f(qo , 1) = ql,g(ql) = i Entonces g'(qO, 1) = i
f(qI,O) = ql, g(qd = i Entonces g'(ql,O) = i
f(ql , 1) = qo,g(qo) = P Entonces g'(ql, 1) = P

3.3 Autómatas Finitos Deterministas (AFD)


Se pueden considerar a los Autómatas Finitos como una subclase de las
Máquinas Secuenciales. La principal diferencia está en que la salida, en
cada momento, está liml§.Q-ª-ª..Q.Q_~U~:<:l:!or_es : aceptada la palabra de entrad~¡
!l-"!:.<?-_~ Al igual que las Máqui~as- SéCliEméTale~í:" iOS-Ati'tÓm;t~
Finitos transitan entre estados de un conjunto de estados según reciben los
símbolos que forman la palabra de entrada. Sin embargo, hay tres tipos de
estados: estado inicial, que p ermite empezar la ejecución del autómata, a
diferencia de las Máquinas Secuenciales que carecían de un estado señalado
de comienzo; estados finales , que permiten realizar la salida de aceptación
de la palabra de entrada en el caso de que no haya más símbolos en la
entrada; y estados intermedios, que son equivalentes a los estados de las
Máquinas Secuenciales.

3.3.1 Definición
Se define un Autómata Finito Determinista como la tupla:

AF D = ('r" Q, f , qo, F)

donde

• ~ es el alfabeto de símbolos de entrada

• Q es el conjunto de estados
64 CAPÍTULO 3. GRAMÁTICAS REGULARES y AUTÓMATAS FINITOS

• qo E Q es el estado inicial

• F ~ Q es el conjunto de estados finales

• f es la función de transición entre estados, definida como

f:Qx'L.-tQ

Como se ha comentado, un AF genera un sólo tipo de salida: aceptación,


si están en un estado del conjunto F; o no aceptación si no están en un
estado de F. El comportamiento es similar al de las Máquinas Secuenciales:
comienzan en el estado inicial, y según se van recibiendo los símbolos de la
entrada transita entre los estados, de acuerdo a la función de transición f.
Si en un determinado momento se encuentra en un estado de aceptación,
reconoce como válida la palabra formada por los símbolos de entrada leídos
hasta ese momento. Si no, no es aceptada.

Ejemplo: El siguiente autómata acepta, como se estudiará más


adelante, un número par de unos en la entrada y no acepta un
número impar.

donde f se define como:

f(qo , O) = qo
f(qo, 1) = ql
f(ql, O) = ql
f(ql , 1) = qo

Si la palabra de entrada es 0110, el autómata irá transitando


entre los estados:
LE:\GU AJES , GRAMÁTI CAS y AUTÓMATAS: UN ENFOQUE PRÁCTICO 65

3.3.2 Representación de un AFD


A.l igual que las Máquinas Secuenciales, las dos representaciones más utili-
zadas para describir un Autómata Finito son las siguientes:
• Tabla de transiciones
• En las filas estarán los estados q E Q
• El estado inicial se precederá del símbolo -+
L!.'Ca,d eªt~do)ln.aI sfE0éede~~]ler~~~~]
• En las columnas estarán los símbolos de entrada a E ~

• En la posición (q, a), estará el estado que determine f (q, a)

Ejemplo: El autómata Al se representaría como:

f O 1
-+ *qo qo ql
ql ql qo

• Diagrama de transiciones
• En los nodos estarán los estados
• El estado inicial tendrá un arco entrante no etiquetado
• Los estados finales estarán rodeados de doble círculo
• Habrá un arco etiquetado con a entre el nodo qi y el nodo qj si
¡(qi , a) = qj

Ejemplo: En el ejemplo anterior, el diagrama de transicio-


nes sería el representado en la figura 3.7.

Figura 3.7: Diagrama de transiciones para el autómata Al.


66 CAPÍTULO 3. GRAMÁTICAS REGULARES y A UTÓ MATAS FINITOS

3.3.3 Conceptos relativos a AFDs


En esta sección se definirán algunos conceptos relativos a los Autómatas
Finitos Deterministas.

• Extensión a palabras: dado que la j sólo transita cuando recibe un


símbolo de entrada, se puede generalizar para cuando se recibe una
palabra formada por más de un símbolo o por la palabra vacía. En
este caso, se define la función de transición f' como j' : Q x ¿;* --7 Q,
donde

j'(q, ax) = f'(f(q, a), x)


j'(q, >') = q

y a E ¿;, x· E ¿;*, q E Q.

Ejemplo: En Al,

j'(qo,0110) f' (f(qO, 0),110) = f' (qO, 110) = l' (f (qO, 1),10) =
l' (ql, 10) = l' (f (ql, 1), O) = l' (qO , O) =
l' (f (qo, O), >') = l' (qo, >') = qo

• Aceptación de palabras: x E ¿;* es aceptada o reconocida por un


AFD si f' (qO, x) E F. Es decir, si se parte del estado inicial y se
recibe la palabra de entrada x, se transita a un estado que pertenece
al conjunto de estados finales o de aceptación F.

Ejemplo: En el ejemplo anterior, como 0110 transita desde


el estado inicial al qo, que también es final, la palabra es
aceptada por A l.

• Lenguaje reconocido por un AFD: es el conjunto de palabras


aceptadas por un AFD .

LAFD = {xix E ¿;* Y 1'(qO,x) E F}


LENGUAJES , GRAMÁTICAS y AUTÓMATAS: UN E NFOQ UE PRÁCTICO 67

Así se comprueba la relación que existe entre autómatas y lenguajes,


de forma que cada autómata reconoce un determinado lenguaje (re-
gular en el caso de los AF), generando como salida una aceptación
si la palabra de entrada pertenece al lenguaje y una no aceptación
si la palabra de entrada no pertenece al lenguaje. También existe la
relación inversa que permite asegurar que, para cada lenguaje regu-
lar, hay un AF que reconoce palabras de ese lenguaje y no reconoce
ninguna palabra que no pertenezca al lenguaje.

Ejemplo: En el caso anterior, el lenguaje aceptado será


aquél en el que se reciba número par de unos en la entrada.

• Accesibilidad entre estados: p E Q es accesible desde q E Q,


pAq, si existe una palabra x E ~* tal que f'(q ,x) = p. A efectos de
simplificar los autómatas, todos aquellos estados no accesibles desde
~m~ se ueden borra; a que no arécta;'á~~~ta~iento
del autómata, al no poder nunca llegar a e os.
......... ..... iI .,

Ejemplo: En el autómata Al , los dos estados son accesibles


desde cualquiera. En el caso de que se tuviera el autómata
A~ definido como:

donde f se define como:

f(qo, O) = qo
f(qo, 1) = ql
f(ql, O) = ql
f(ql , 1) = qo
f(q2 , O) = q2
f(q2, 1) = ql

El estado q2 no sería accesible desde qo ni ql, por lo que se


puede eliminar sin afectar al comportamiento del autómata.
68 CAPÍTULO 3. GRAMÁTICAS REGULARES y AUTÓMATAS FINITOS

• Autómatas conexos: un AFD es conexo si para cada estado q E Q,


q es accesible desde qo.

Ejemplo: En el ejemplo anterior, Al es conexo y Ai no lo


es.

3.3.4 Equivalencia de AFD


Al igual que en el caso de las Máquinas Secuenciales, se puede definir la
equivalencia de Autómatas Finitos. Se presentarán primero unas definicio-
nes previas a la de equivalencia entre Autómatas Finitos Deterministas.

Equivalencia entre estados


• Dos estados p, q E Q son equivalentes, pEq, si

Vx E 'L.*, f'(p, x) E F {:} f'(q, x) E F

Si las transiciones ~esde p con la x llegan a un estado final , las de


q con x también tienen que llegar, y si desde p con x no se llega a
un estado final, desde q con x tampoco se puede llegar. Se puede
demostrar fácilmente que para cada estado q E Q, qEq.

Ejemplo: Dado el autómata A 2,

donde f se define como:

f(qo, O) = qo
f(qo, 1) = q4
f(ql, O) = ql
f(ql, 1) = q2
f(q2, O) = q2
f(q2, 1) = q2
f(q3, O) = q3
f(q3, 1) = q2
f(q4, O) = qo
f(q4 , 1) = q2
LENGUAJES, GRAMÁTICAS y AUTÓMATAS: UN ENFOQUE PRÁCTICO 69

El estado ql es equivalente al q3, !1lEq3, debido a que con


-"--
cualquier palabra de entrada transitan a un estado que o
es final en los dos casos, o no lo es en los dos casos. Así,
por ejemplo, cuando reciben una secuencia de ceros, cada
uno transita a sí mismo, que no son estados finales, y cuan-
do reciben un 1, transitan a q2, que es final. A partir de
ese momento, cualquier símbolo que reciban va a transitar
siempre a q2. Sin embargo, el qo y el ql no son equivalentes,
rt
ya que f'(qo, 1) = q4 F Y f'(ql, 1) = q2 E F .

• Dos estados p"q E Q son equivalentes de longitud n , pEnq , si

"Ix E ~*, Ixl :s; n, !,(p,x) E F {:} f'(q, x) E F

Esto restringe la longitud de las palabras de entrada a n .

!,(ql, O) = ql rt F !,(q4, O) = qo F rt
f'(ql, 1) = q2 E F f'(q4, 1) = q2 E F

pero no son equivalentes de longitud 2, ya que:

• Dos estados p, q E Q son equivalentes de longitud n + 1, pEn+1q, si y


sólo si son equivalentes de longitud n, pEnq , y Va E ~,f(p , a)Enf(q, a)

f'(ql, O) = ql , f'(q3 , O) = q3 Y q1E 1q3


!,(ql, 1) = q2, f'(q3, 1) = q2 y, obviamente, q2 E lq2
70 CAPÍTULO 3. GRAMÁTICAS REGULARES y AUTÓMATAS FINITOS

Cálculo de clases de equivalencia


Al igual que en Máquinas Secuenciales, las relaciones de equivalencia defi-
nidas anteriormente particionan el conjunto de estados en clases, definiendo
el conjunto cociente, Q / E. Para calcular dicho conjunto, se comienza con
el conjunto cociente de la relación de equivalencia de longitud 0, que está
formado por dos clases: el conjunto de los estados finales (F) ; Y el resto
de los estados (F). Después, en cada iteración, se utiliza la definición de
equivalencia de longitud i + 1 para calcular el conjunto cociente Q/ Ei+l a
partir del conjunto cociente Q/ E i de acuerdo a la definición anterior. Un
posible algoritmo se muestra en la figura 3.8.

Función Conjunto-Cociente (A): QE

A: entrada a la función, AF definido por (~, Q, j , qo , F )


QE: salida de la función, conjunto cociente del AF

Q/Eo := {F, F} ;
i:=-l;
Repetir
i:=i+l;
Si pEiq y
Va E E, f(p , a) E q , f(q , a) E Ck, (Ck E Q/ E i )
Entonces pEi+l q
Hasta que Q/ Ei-l = Q/ Ei
Devolver Q/E = Q/Ei

Figura 3.8: Procedimiento de cálculo del conjunto cociente de un AF.

Ejemplo: Dado el autómata A 2 , se calcularía el conjunto co-


ciente Q/ E en los siguientes pasos:
L EN G UAJES, GRAMÁTICAS y A UT Ó MATAS: UN E NFOQ UE PRÁCTI CO 71

qOEOql f(qo , O) = qo E el , f(ql, O) = ql E el


f (qO , 1) = q4 E el, f (ql, 1) = q2 E eo no qOElql
qOEOq3 f(qo , O) = qo E el , f(q3 , O) = q3 E el
f(qo , 1) = q4 E el , f(q3 , 1) = q2 E eo no qOE l q3
qOEOq4 f(qo , O) = qo E el , f(q4 , 0) = qo E el
f(qo , 1) = q4 E el , f(q4 , 1) = q2 E eo no qOE l q4
ql E oq3 f(ql , O) = ql E el, f(q3 , O) = q3 E el
f(ql, 1) = q2 E eo, f(q3 , 1) = q2 E eo ql E l q3
ql E oq4 f(ql , O) = ql E el, f(q4, O) = qo E el
j(ql, 1) = q2 E eo, f(q4, 1) = q2 E eo ql E l q4

Por tanto, Q/E I = [eo = {q2} , el = {qo} , e2 = {ql , q3, q4}]


3. Q/E2 :

ql E l q3 f(ql , O) = ql E e2, f(q3 , O) = q3 E e2


f(ql, 1) = q2 E eo, f(q3, 1) = q2 E eo ql E 2q3
ql E l q4 f(ql, O) = ql E e2 , f(q4, O) = qo E el no ql E 2q4

Por tanto,

4. Q/E3:

ql E l q3 f(q l, O) = ql E e2, f(q3 , O) = q3 E e2


f(ql, 1) = q2 E eo , f(q3, 1) = q2 E eo ql E 3q3

Como

el conjunto cociente será Q/E = Q/E2 = Q/E3.


72 CAPÍTULO 3. GRAMÁTICAS REGULARES y AUTÓMATAS FINITOS

Equivalencia de autómatas
Dados dos autómatas Al = (~, Ql, JI, qOl, F l ) Y A 2 = (L Q2 , 12 , q02, F 2 ),
el estado p E Ql y el q E Q2 son equivalentes, pEq, si y sólo si para cada
palabra x E ~*, f{(p,x) E Fl si y sólo si fHq ,x) E F 2.

Ejemplo: Supóngase que se tienen los autómatas A 2, definido


anteriormente, y A 3 , definido como:

donde f se define como:

f(qo, O) = qo
f(qo, 1) = q2
f(ql, O) = ql
f(ql, 1) = ql
f(q2, O) = q2
f(q2, 1) = ql

En este caso, qOA2 EqOA 3 ' ya que, para cada posible palabra. si
sólo está formada por ceros, se quedan en estados no fin ales: si
aparece un 1, los dos transitan también a estados no fin ales (si
después del 1 reciben una sentencia de ceros, transitan a estados
no finales); y si reciben dos unos o más , transitan a estados
finales y se quedan en ellos. También ocurre que q24. 2 Eql4. 3 Y
q4A 2 E q2A 3 •

A partir de la definición de estados equivalentes de autómatas diferentes,


se puede decir que dos autómatas, Al y A 2, son equivalentes. A IEA2, si y
sólo si los estados iniciales son ~quivalentes; o, lo que es lo mismo:

Vx E ~*, f{(qOl, x) E Fl si Y sólo si f~(q02, x) E F 2


De esto se deduce que dos autómatas son equivalentes si y sólo si aceptan
el mismo lenguaje.

Ejemplo: Los autómatas A 2 y A3 son equivalentes, ya que sus


estados iniciales lo son.
LENGUAJES, GRAMÁTICAS y AUTÓMATAS: UN ENFOQUE PRÁCTICO 73

Minimización de AFD
Como resultado de las anteriores definiciones de equivalencia de autómatas,
una de las aplicaciones más interesantes consiste en diseñar el autómata
equivalente a uno dado que contenga el mínimo número de estados. Se
puede demostrar que, para cada AFD, existe un AFDm mínimo equivalen-
te. La construcción del AFD mínimo se realiza en los pasos especificados en
la figura 3.9. El algoritmo primero calcula el autómata conexo, eliminando
todos aquellos estados no accesibles desde el inicial. Después, calcula el
conjunto cociente, que determina el mínimo número de estados con signifi-
cado diferente. Estos estados serán las clases de equivalencia del conjunto
cociente y formarán el conjunto de estados, Q', del autómata mínimo.

Función Autómata-Mínimo (A): AF Dm

A : entrada a la función, AF definido por (~ , Q, j, qo , F)


AFDm : salida de la función, autómata mínimo equivalente a .4.

Eliminar de A todos los estados inaccesibles desde qo ;


Construir el AFDm = ('L.,Q',j',qb,F') donde
Q' =Conjunto-Cociente(A);
qo, .
= eo SI qo E eo, eo E
Q' ;
F' = {el:Jq E e,q E F}; Y
Va E 'L., j'(Ci, a) = ej si :Jp E ej, q E eilf(q, a) = P

Figura 3.9: Procedimiento de cálculo del autómata mínimo de un AF .

El resto de los elementos del autómata se calculan en función de esos


estados. ASÍ, el estado inicial del autómata mínimo será la clase de equiva-
lencia donde esté el estado inicial del autómata de partida. Las transiciones
de los nuevos estados (clases de equivalencia) se realizarán en función de las
t ransiciones de los estados que los forman. Como los estados del autómata
de partida que pertenezcan a la misma clase de equivalencia son equivalen-
tes (generan la misma aceptación o no dada la misma palabra de entrada) ,
da igual cuál se considere a la hora de fijar las transiciones desde el nuevo
estado que los representa en el autómata mínimo. El conjunto de los nue-
vos estados finales serán las clases de equivalencia donde aparezcan estados
finales del autómata de partida.
74 CAPÍTULO 3. GRAMÁTICAS REGULARES y AUTÓMATAS FINITOS

Ejemplo: Sea el siguiente autómata:

donde f se define como:

f(qo, O) = q3
f(qo, 1) = q2
f(ql, O) = q4 f O 1
f(ql, 1) = ql -1-qo q3 q2
f(q2, O) = qo *ql q4 ql
f(q2, 1) = q3 *q2 qo q3
f((13 , O) = qo q3 qo q2
f(q3, 1) = q2 q4 q4 ql
f(q4, O) = q4
f(q4, 1) = ql

Para calcular el autómata mínimo equivalente a A 4 , se siguen


los pasos del algoritmo:

1. Se calcula el autómata conexo. En este caso, se puede


comprobar que los estados ql y q4 no son accesibles desde
qo, con lo que se pueden eliminar, quedando:

2. Se obtiene el Q / E de A~.
• Q / Eo = [{ q2}, {qo, q3} 1
• Q / E = Q / Eo = Q / El = [co = {q2} , Cl = {qO, q3} 1
3. El autómata mínimo equivalente a A~ será:

A~ = ({0,1},{co,cd,f,Cl,{CO})
donde f se define como:

f(co, O) = Co
f O 1
f(co, 1) = Cl
*CO Co Cl
f(Cl, O) = Co
-1- Cl Co Co
f(Cl, 1) = Co
LENGUAJES, GRAMÁTICAS y AUTÓMATAS: UN ENFOQUE PRÁCTICO 75

3.4 Autómatas Finitos No Deterministas (AFND)


Un segundo tipo de Autómata Finito son los No Deterministas, en los que
puede existir más de una transición por cada par (estado,entrada) o ninguna
transición por cada par, de forma que, en cada momento, el autómata puede
realizar varias transiciones diferentes entre las que deberá optar o no poder
realizar ninguna. Otro rasgo que les diferencia de los deterministas, es que
pueden realizar transiciones de un estado a otro sin leer ningún símbolo de
entrada, mediante las denominadas transiciones-A.

3.4.1 Definición
Un Autómata Finito No Determinista es una tupla con los mismos compo-
nentes que la de los AFD en la que la principal diferencia con los determi-
nistas consiste en la función de transición f , que se define como:

f: Q x (~U{A}) -+P (Q)


donde P (Q) es el conjunto de las partes de Q (conjunto de todos los
sub conjuntos que se pueden formar con elementos de Q). En la entrada se
permite la palabra vacía (se permite transitar entre estados sin leer nada
de la entrada), y se permite transitar a más de un estado (conjunto de
estados) desde el mismo estado.

Ejemplo: El siguiente autómata es finito no determinista.

donde f se define como:


f(qo, O) = (/) f (q2, O) = {q2}
f (qO, 1) = {ql, q2} f(q2 , 1) = (/)
f (qo , A) = {q2} f(q2 , A) = {q3}
f (ql, O) = {qo} f(q3, O) = (/)
f(ql , 1) = {qO, qd f(q3 , 1) = (/)
f(ql , A) = (/) f(q3, A) = (/)

donde (/) es el conjunto vacío, y f(qo , l) = {ql,q2} representa el


hecho de que desde el estado qo se puede transitar al estado ql
Ó al q2 al leer un 1 en la entrada.

¡
76 CAPÍTULO 3. GRAMÁTICAS REGULARES y AUTÓMATAS FINITOS

3.4.2 Representación
Al igual que los anteriores, hay dos formas de representar los Autómatas
Finitos No Deterministas.

• Tabla de transiciones

En las filas estarán los estados q E Q


El estado inicial se precederá del símbolo --+
Cada estado final se precederá del símbolo *
En las columnas estarán los símbolos a E ~U {A}
En la posición (q, a), estarán los estados en f (q , a)

Ejemplo: El autómata A5 se representaría como:

f O 1 -X
--+ qo {ql, q2} q2
*ql qo {qO, qt}
q2 q2 q3
q3

• Diagrama de transiciones

En los nodos estarán los estados


El estado inicial tendrá un arco entrante no etiquetado
- Los estados finales estarán rodeados de doble círculo
- Habrá un arco etiquetado con a E (~ U -X) entre el nodo qi y el
nodo qj si qj E !(qi, a)

Ejemplo: La figura 3.10 muestra el diagrama de transicio-


nes para el autómata A5.
LENGUAJES, GRAMÁTICAS y AUTÓMATAS : UN ENFOQUE PRÁCTICO 77

1
~

0r:J
1

6)
~
0,1

A,1

Figura 3.10: Diagrama de transiciones para el autómata A5.

3.4.3 Conceptos asociados a AFNDs


Los conceptos asociados a AFDs se generalizan para AFNDs .

• Relación de transición-A, T: es la relación que se establece entre


pares de estados entre los que existe una transición-A. Esta relación
es reflexix a., es decir, se establece entre los estados con ellos mismos,
---
ya que se cumple que, :e..ar~ cruiª....fS.tQ1i..Q.a.E-..Q....exi.s.te,•.lUlª".t.ta~ik.i,Qll:.
1.'!;QJ!",U.i§mQ1J.,l~1.~ Normalmente, T se representa por un
conjunto denominado T que contiene todos los pares de estados que
cumplen la relación.

Ejemplo: En el autómata A 5 , el conjunto T será:

• Cierre transitivo de la relación T , T*: se calcula aplicando la


propiedad transitiva de la relación T , por la que si pTq y qTr , entonces
pTr. Esta aplicación de la propiedad transitiva se repite hasta que
no haya nuevos pares de estados que cumplan la relación.

Ejemplo: En el conjunto T anterior, se observa que qOTq2


y q2Tq3. Por tanto, se puede añadir qOTq3 al conjunto T* .
Como ya no se puede aplicar más la propiedad transitiva
entre pares de estados, el conjunto T* quedaría como:

J
78 CAPÍTULO 3. GRAMÁTICAS REGULARES y AUTÓMATAS FINITOS

• Extensión a palabras: se define una nueva función 1" de la siguien-


te forma:
1" : Q x ~* -+ P (Q)
en la que la entrada no es un único símbolo, sino palabras formadas
por los símbolos del alfabeto. Se cumple entonces que:

11 { 'x*oal°'x*oa2o oo'x"oa n °'x" }


f (q,x) = pIX=al·a2· ... · anyq ~ p
,x*
!,,(q, A) = {plq -+ p}

Como en los AFND se pueden producir transiciones entre estados


sin leer nada de la entrada (mediante las transiciones-A), entre cada
dos símbolos de la entrada, habrá que considerar todas las p2sjl>les
trªIt:;;iciones-A que se puedaúproCIüéíi; -árrgiíal que antes de leer el
Pril!l~;;~I~b~io °de 'laentrada; 'y " despué~ - del último sÍmbolo~<I~ la
entrada. Como las transiciones marcadas con A* son las que aparecen
éñ o~i" ;;;njunto T*, se puede utilizar este conjunto para calcular esas
transiciones.

Ejemplo: Dado el autómata A 5 , se van a calcular las transi-


ciones que realizaría con la palabra de entrada 110: prime-
ro se tiene que calcular 1" (qO, A). qo, sin leer nada (con A),
puede transitar al estado q2 y a sí mismo. Desde q2 sólo se
puede transitar a q3 con A y desde q3 no se puede transitar
a ningún estado con A. Por tanto,

que no es más que el conjunto de los estados relacionados


con qo a través de la relación T*. Ahora, desde cada uno
de ellos, con el 1 se puede transitar al conjunto de estados:

f (qo, 1) = {ql, q2}


f(q2, 1) = 0
f(q3, 1) = 0
LENGUAJES , GRAMÁTICAS y AUTÓMATAS: UN ENFOQUE PRÁCTICO 79

Por tanto,

A continuación, se tiene que estudiar dónde se puede transi-


tar con A desde cada uno de ellos, que resulta ser q3 , además
de los estados en f" (qo, A . 1) , con lo que:

Ahora, se estudia dónde se transita desde cada uno de esos


estados con el 1, que da como resultado:

!,,(qo , A ·1· A ·1) = {qO , qt}

Con las siguientes transiciones A, se llega a:

Con el O, se transita a:

f" (qo , A . 1 . A . 1 . A . O) = {qO, q2 }

Por último, al hacer las transiciones A, quedará:

• Lenguaje aceptado por un AFND: será el conjunto de palabras


que le hacen transitar desde el estado inicial a algún estado final ,
utilizando la función f".

LAFND = {xix E E* Y !,,(qO, x) n F:I 0}


80 CAPÍTULO 3. GRAMÁTICAS REGULARES y AUTÓMATAS FINITOS

Ejemplo: En el ejemplo anterior, 110 no es reconocida por


A 5 , ya que ninguno de los estados a los que transita desde el
inicial está en F. Intuitivamente, el lenguaje aceptado por
este autómata será el conjunto de palabras que finalicen en
el estado ql. Como ni desde el estado q2 ni desde el estado
q3 se puede transitar al ql, las palabras aceptadas por el
autómata serán las que comiencen por 1, continuen por
una secuencia indefinida de unos, seguido, o no, por un O ó
un 1, seguidos de un 1 y una secuencia de unos , todo esto
repetido n veces. Más adelante, en la sección dedicada a las
Expresiones Regulares, se tratarán procedimientos formales
de obtención del lenguaje que acepta un autómata.

• Equivalencia de AFDs y AFNDs: para cada AFD existe un


AFND equivalente y viceversa.

- AFD--+AFND: los AFDs son un caso particular de los AFNDs,


teniendo en cuenta que Vp E Q,a E ~, Ij(p, a) 1 = 1 Y no hay
transicioneS-A (Vq E Q, 1"(q, A) = 0).
- AFND--+AFD: se puede construir un AFD=(~ , Q' , 1', qb, F') a
partir de un AFND=(~, Q, j, qo, F) con el siguiente algoritmo:
* Q' = P (Q)
* qb = 1" (qo, A)
* F' = {ele E Q', 3q E e y q E F}
* j'(e, a) = {e' le' = UqEc 1"(q, a)}
Lo que se suele hacer es ir construyendo los estados de P (Q)
según se van necesitando para Q'.

Ejemplo: A partir del Autómata Finito No Determinista A5


se puede construir el AFD equivalente, A~, de la siguiente
forma:

donde eo es el estado inicial del autómata y se calcula co-


mo eo = 1"(qo,A) = {qO,q2,q3}. El resto de los estados
se calcula de la forma especificada anteriormente y, renom-
brándoles como:
LENGUA J ES, GRAMÁTICAS y AUTÓMATAS: UN ENFOQ UE PRÁ CTICO 81

co = {qO, q2, q3}


Cl = {q2, q3}
C2 = {ql, q2, q3}
C3 = (/)
C4 = {qO , ql , q2 , q3}

y fes:

f(co, O) = Cl f(C3 , O) = C3 f O 1
f(co, 1) = C2 f(C3 , 1) = C3 -+ Co Cl C2
f(Cl, O) = Cl f(C4, O) = Co Cl Cl C3
f(Cl, 1) = C3 f(C4, 1) = C4 *C2 Co C4
f(C2, O) = Co C3 C3 C3
f(C2, 1) = C4 *C4 Co C4

Se deja al lector la minimización de este autómata.

3.4.4 Autómata Finito asociado a una G 3


Una de las aplicaciones más importantes de los Autómatas Finitos consiste
en la aceptación de lenguajes generados por gramáticas de tipo 3 o regula-
res. Para ser útil, hace falta demostrar que, a partir de una gramática re-
gular, se puede generar un Autómata Finito que reconozca las palabras del
lenguaje generado por la gramática. También es útil conocer la gramática
que genera el lenguaje aceptado por un determinado Autómata Finito. Es-
tas dos construcciones se hacen de la siguiente forma:

• AFDj AFND a G 3 : si el autómata es AFND, primero se pasa a AFD .


Una vez se tenga un AFD como A = (~, Q, f, qo, F), se construye la
gramática equivalente lineal por la derecha G 3 = (l:, Q, qo, P) en la
que P:

• Si f(q , a) = p entonces q ::= ap, (a E l:, q,p E Q)

• Si f(q , a) = p y P E F , entonces q ::= a, (a E l:, q,p E Q)

• Si qo E F entonces qo ::= A
82 CAPÍTULO 3. GRAMÁTICAS REGULARES y AUTÓMATAS FINITOS

Ejemplo: A partir del autómata A~ , se genera la siguiente


gramática:

donde Pes:

ca ::= OCl I lC2 I 1


Cl ::= OCl I l C3
C2 ::= Oca I l C4 I 1
C3 ::= OC3 I 1C3
C4 ::= Oca I 1c4 I 1

• G3 a AFD / AFND: dada la gramática lineal por la derecha


G3 = (~T, ~N, 8, P), se construye el autómata equivalente

donde F r:f. ~N es un nuevo símbolo no terminal, y f se construye:

- Si A ::= aB entonces f(A, a) = B


- Si A ::= a entonces f(A , a) = F
- Si 8 ::= >. entonces f(8, >.) = F

Ejemplo: Dada la gramática:

G = ({O, l}, {A, B, e}, A, P)


P = {(A ::= OB) , (A ::= >.), (B ::= le), (B ::= 1) ,
(C ::= OB)})

El autómata que reconoce el lenguaje generado por dicha


gramática será:

Ac = [{O, 1}, {A , B, e, F}, f, A, {F}]

y f:
LENGUAJES, GRAMÁTICAS y AUTÓMATAS: UN ENFOQUE PRÁCTICO 83

f 1 >.
f(A , O) =
f(A, >.) =
f(C,O) =
B
F
B
-+A
B
° {C,F}
B F

f(B, 1) = C C B
f(B, 1) = F F
Como se puede comprobar, es un Autómata Finito No De-
terminista, pero, como se ha visto, se puede pasar a uno
determinista, siguiendo el algoritmo correspondiente, de-
jando dicho paso como ejercicio al lector.

3.5 Expresiones regulares (ER)


Las Expresiones Regulares permiten representar concisamente Lenguajes
Regulares, de forma que resumen la descripción exhaustiva de un lengua-
je. Como se ha estudiado en este capítulo, existe una equivalencia entre
Gramáticas y Lenguajes Regulares y autómatas. En este apartado, se com-
probará que las Expresiones Regulares permiten definir el lenguaje aceptado
por un Autómata Finito, y se puede extraer el Lenguaje Regular aceptado
por un Autómata Finito generando su Expresión Regular.

3.5.1 Definiciones
• Expresión Regular sobre un alfabeto ~: sólo son Expresiones
Regulares aquéllas que se obtienen aplicando un número finito de
veces las siguientes reglas:

oes una ER
>. es una ER
Para cada a E ~ ,a es una ER
Si o y j3 son Expresiones Regulares, o + j3 es una ER
Si o y j3 son Expresiones Regulares, o . j3 es una ER (o simple-
mente oj3)
Si o es una ER, 0* es una ER
Si o es una ER, (o) es una ER

e
84 CAPÍTULO 3. GRAMÁTICAS REGULARES y AUTÓMATAS FINITOS

Ejemplo: Las siguientes son Expresiones Regulares:


- 01*: representa al lenguaje formado por palabras que
°
empiezan en seguido de ningún, uno o más unos.
- (0+ 1)*: representa una palabra formada por cero, uno
o más dígitos que pueden ser ó 1. °
• Lenguaje representado por una ER: cada Expresión Regular a
define recursivamente un lenguaje L , utilizando las siguientes reglas
de cálculo:

- Si a = 0, entonces L(a) = 0
- Si a = A, entonces L(a) = {A}
- Si a = a, a E~, entonces L(a) = {a}
- Si a y 13 son ER, entonces L(a + 13) = L(a) U L(f3)
- Si a y 13 son ER, entonces L(a . 13) = L(a) . L(f3)
- Si a es ER, entonces L(a*) = L(a)*
- Si a es ER, entonces L((a)) = L(a)

Ejemplo: Dadas las siguientes Expresiones Regulares, sus


Lenguajes Regulares asociados serían:
- 01*:
00

L(OI*) L(O)L(I*) = {O}L(I)* = {O} U{1}i =


i=O
{O}{A,I,II,III , . . . } = {0, 01 , 011 , 0111 , ... }

- (O + 1)*:

L((O + 1)*) L((O + 1))* = [L(O + 1)] * =


00

[L(O) +L(I)]* = [{0,1}] * = U{O,I}i =


i=O
{A,0,1,00,01,10,11, ... }
L EN GUAJES, GRAMÁTICAS y AUTÓMATAS: UN ENFOQUE PRÁCTICO 85

• Propiedades: existen muchas propiedades asociadas a las Expresio-


nes Regulares. Algunas de ellas, se muestran a continuación:
= >.
>. * a* = >. + a . a*
o.a = a . 0 = 0 (a* . (3*) * = (a + (3) * = (a* . (3) *
0* = >. Si a = (3* . , entonces a = (3 . a + ,
a* . a* = a* a· a* = a* . a

3.5.2 Teoremas de Kleene


Kleene enunció unos teoremas que permiten demostrar la equivalencia en-
tre Expresiones Regulares y Autómatas Finitos, en cuanto a que los dos
representan, de una u otra forma, Lenguajes Regulares. Los dos teoremas
son los siguientes:

• Teorema de Análisis: todo lenguaje aceptado por un Autómata


Finito es regular.

• Teorema de Síntesis: todo Lenguaje Regular es aceptado por un


Autómata Finito.

A continuación, se estudiará cada uno de los teoremas con más detalle.

Solución al problema de análisis


Para demostrar que a partir de un AF se puede obtener el lenguaje que
éste acepta y que es regular, primero se va a definir el concepto de ecuación
característica o fundamental. Esto se va a hacer en varios pasos:

1. Se define Xi como el conjunto de palabras que permiten pasar desde


el estado qi a un estado final.

2. Si qi E F , entonces>. E Xi, ya que Vq E Q, q E f(q, >.). También, si


qi f/. F , entonces>. no tiene por qué estar en Xi·

3. Si f(qi, a) = qj E F, entonces el símbolo a debe pertenecer a Xi según


la definición 1.

4. Además, si f(qi , a) = qj , entonces la concatenación en la entrada del


símbolo a y Xj (conjunto de cadenas que permiten pasar desde qj a
un estado final) debe estar en Xi (conjunto de cadenas que permiten
transitar desde qi a un estado final). ASÍ, aXj ~ Xi.
86 CAPÍTULO 3. GRAMÁTICAS REGULARES y AUTÓMATAS FINITOS

5. Para cada estado qi se puede definir el denominado sistema de ecua-


ciones de conjunto lineales por la derecha, que se calcula como:

IQI
Xi = Ci U U DijXj
j=1

donde

(según 2)

(según 4)

6. Una forma alternativa de definir este sistema de ecuaciones consiste


en utilizar las definiciones 3 y 4, donde sólo se cambia el conjunto Ci
de la siguiente manera:

si i = O Y qo E F
en caso contrario

7. Una vez que se obtienen los sistemas de ecuaciones para cada estado,
se deben intentar resolver las ecuaciones de cada estado, de manera
que tengan la forma Xi = AXi + B donde A rt A , Xi rt B, que es a lo
que se denomina ecuaciones características. Para cada estado en el
que se tenga despejado Xi así, la solución es: Xi = A * . B. Al efecto de
que se cumpla que A rt A, lo más sencillo es eliminar las A-transiciones
del autómata, cuando sea no determinista.

8. Cuando se calcule el valor de Xo (ecuación característica del estado


inicial), esta Expresión Regular es la que describe el lenguaje aceptado
por el autómata, dado que es el conjunto de cadenas que permiten
pasar desde el estado inicial a un estado final, y esto, por definición,
es el lenguaje aceptado por un autómata.

Ejemplo: Supóngase el autómata siguiente:

donde f se define como:


LENG UAJES, GRAMÁTICAS y AUTÓMATAS: UN ENFOQUE PRÁCTICO 87

f(qo, O) = {q¡}
f (qa, 1) = {qo}
f (ql , O) = {q2}
f(ql, 1) = {qO,ql}
f (q2 , O) = {qo}
f(q2, 1) = 0

En este caso, las ecuaciones características de los estados serían,


utilizando la primera caracterización de las mismas:

Xo = 1xo + OXI
Xl = 1XI + 1xO + OX2
X2 = OXO +A
A partir de aquí, se pueden resolver las ecuaciones utilizando
la solución de las ecuaciones características vista anteriormente
y la resolución matemática de ecuaciones. Así, utilizando la
solución de la primera ecuación, se tiene:

Xo = 1xo -+ OXI = 1*OXI

Si se sustituye en la tercera ecuación, se tiene:

X2 = Oxo + A= 01 *OXI +A

Sustituyendo en la segunda ecuación, se tiene:

Xl = 1XI + 1xo + OX2 = 1XI + l1*OXI + 001*OXI + 0=


= (1 + 11*0 + 001*0)XI + 0= (1 + 11*0 + 001*0)*0

Si se sustituye en la ecuación característica de qo , queda la Xo


como:

Xo = 1*OXI = 1*0(1 + 11 *0 + 001 *0)*0


88 CAPÍTULO 3. GRAMÁTICAS REGULARES y AUTÓMATAS FINITOS

Siendo ésta la ecuación característica del estado inicial, su solu-


ción es la Expresión Regular que describe el lenguaje aceptado
por este autómata.
Si se utilizara la segunda caracterización de las ecuaciones ca-
racterísticas, éstas quedarían como:

Xo = 1xo + OXI
Xl = 1x1 + 1xO + OX2 + O
X2 = OXO

Resolviéndolas, se llegaría al mismo resultado que antes.

Solución al problema de síntesis


Existen dos algoritmos para pasar de una Expresión Regular, que representa
a un Lenguaje Regular, a un autómata que reconozca dicho lenguaje. El
primero es un algoritmo que asocia a cada regla de descripción de una
Expresión Regular un autómata que la reconoce. El problema es que se
generan autómatas muy grandes y es necesario luego minimizarlos para
poder trabajar con ellos. El segundo algoritmo está basado en el concepto
de derivada, que se definirá más adelante.

Algoritmo recursivo El algoritmo recursivo asocia a cada Expresión


Regular, un autómata que reconoce el lenguaje descrito por dicha Expresión
Regular .

• a = 0: crear un nodo p inicial y otro q final y no conectarlos (figu-


ra 3.11).

Figura 3.11: Autómata que reconoce el lenguaje descrito por la Expresión


Regular 0.

• a = A: crear un nodo p inicial y otro q final y conectarlos con un arco


etiquetado con A (figura 3.12).
LEN GUAJES, GRAMÁTICAS y AUTÓMATAS: UN ENFOQUE PRÁCTICO 89

Figura 3.12: Autómata que reconoce el lenguaje descrito por la Expresión


Regular A.

Figura 3.13: Autómata que reconoce el lenguaje descrito por la Expresión


Regular a E ~.

• a = a, a E ~: crear un nodo P inicial y otro q final y conectarlos con


un arco etiquetado con a (figura 3.13).

• a = (3 + O' se parte de dos grafos (uno que representa a (3 y otro a 0') ,


uno que tiene como nodo inicial a Pi, nodo final a qi y están unidos
por un grafo que representa a (3, y otro que tiene como nodo inicial
a P2 , nodo final a q2 y están unidos por un grafo que representa a
0': crear un nodo inicial p, unido por un arco etiquetado con A a Pi
y otro arco etiquetado con A a P2, y un nodo final q al que llegan
arcos etiquetados con A desde qi y q2 , que dejan de ser nodos finales
(figura 3.14).

~G - - - ~->~

~G ---~-> 0J

Figura 3.14: Autómata que reconoce el lenguaje descrito por la Expresión


Regular (3 + 0'.
90 CAPÍTULO 3. GRAMÁTICAS REGULARES y AUTÓMATAS FINITOS

• a = (3 . a y, al igual que antes, se parte de dos grafos, uno que tiene


como nodo inicial a PI , nodo final a ql y están unidos por un grafo
que representa a (3, y otro que tiene como nodo inicial a P2 , nodo final
a q2 y están unidos por un grafo que representa a a: crear un arco
etiquetado con A desde ql (que deja de ser nodo final del nuevo grafo)
a P2, y poner como nodo final del nuevo grafo a q2 (figura 3.15).

~G--- ~->~
=> ~ G - --~ -> G ~G- - -~ -> ~
~G - - -~ ->~

Figura 3.15: Autómata que reconoce el lenguaje descrito por la Expresión


Regular (3 . a.

• a = (3* y se parte de un grafo formado por un nodo inicial etiquetado


con PI conectado con un grafo que representa a (3 al nodo final ql :
crear un arco etiquetado con A de PI a ql y otro igual de ql a PI
(figura 3.16).

Figura 3.16: Autómata que reconoce el lenguaje descrito por la Expresión


Regular (3*.

Ejemplo: Si se tiene la Expresión Regular 1(0 + 1)* , las figu-


ras 3.17, 3.18, 3.19, y 3.20 representan las diferentes fases de
construcción del autómata que la reconoce. Como se puede
comprobar, el autómata no es mínimo, pero se puede utilizar el
algoritmo de construcción del autómata mínimo descrito en el
apartado de AFDs para minimizarlo.
LENGUAJES , GRAMÁTICAS y AUTÓMATAS: UN ENFOQUE PRÁCTICO 91

~G >-
G
G
o
~G ;:.

~G 1>Q)
Figura 3.17: Autómatas que reconocen los lenguajes descritos por las Ex-
presiones Regulares 1, O Y 1.

Figura 3.18: Autómatas que reconocen los lenguajes descritos por las Ex-
presiones Regulares 1 y O + 1.
92 CAPÍTULO 3. GRAMÁTICAS REGULARES y AUTÓMATAS FINITOS

~G I>G
A

o
·8
~GY/'"
>
Q"{
~G P3 >
8~
G
A

Figura 3.19: Autómatas que reconocen los lenguajes descritos por las Ex-
presiones Regulares 1 y (O + 1) * .

Figura 3.20: Autómata que reconoce el lenguaje descrito por la Expresión


Regular 1 (O + 1) * .
LENGUAJES , GRAMÁTICAS y AUTÓMATAS : UN ENFOQUE PRÁCTICO 93

Derivadas La definición de derivada va a permitir resolver el problema


de síntesis, generando el autómata mínimo que acepta el lenguaje descrito
por cualquier Expresión Regular. El cálculo se realiza en tres fases : primero
se calculan las derivadas de la Expresión Regular de acuerdo a la definición
que se va a presentar. A continuación, se obtiene la gramática que genera
el lenguaje representado por la Expresión Regular, y, por último, se trans-
forma la gramática de tipo 3 obtenida al Autómata Finito que reconoce las
palabras que ésta gen~ra .

• Definición: derivada de una ER a respecto a un símbolo a E I;, se


define como Da(a) = {xla·x E a} . Es decir, del conjunto de palabras
x que aparecen en a, se seleccionan aquéllas que comienzan por el
símbolo respecto al que se deriva, a, y la derivada será el conjunto de
los restos de esas palabras .

• Cálculo: para cada a E I;, cada Expresión Regular tiene asociada


una forma de calcular su derivada:
DaU/J) = 0
Da (>\) = 0
Da(a) = A
- Da(b) = 0, "lb E I;,b i= a
- Da(a + (3) = Da(a) + Da(f3)
- Da(a· (3) = Da(a) . (3 + o(a) . Da({3)
donde

A AEa
o(a) = { 0 A ~ a

- Da(a*) = Da(a) . a*
Para calcular las derivadas y simplificarlas, conviene tener en cuenta
algunas de las propiedades de las ER descritas anteriormente.

Ejemplo: Si se tiene la Expresión Regular 1*(0 + 1)* , se


calculan sus derivadas respecto a O y a 1 de la siguiente
manera:
94 CAPÍTULO 3. GRAMÁTICAS REGULARES y AUTÓMATAS FINITOS

.Do(1*(0 + 1)*) =
= D o(1*)(0 + 1)* + 6(1*)D o((0 + 1)*) =
= D o(1)1*(0 + 1)* + >'Do((O + 1)*) =
= 01*(0 + 1)* + Do(O + 1)(0 + 1)* =
= 0 + [Do (O) + D o(1)](0 + 1)* = [>' + 0](0 + 1)* =
= >'(0 + 1)* = (O + 1)*

.D1(1*(0 + 1)*) =
= D 1(1 *)(0 + 1)* + 6(1 *)Dd(O + 1)*) =
= D 1(1)1*(0 + 1)* + >'D1(0 + 1)(0 + 1)* =
= >'1*(0 + 1)* + [D1(0) + Dd1)](0 + 1)* =
= 1*(0 + 1)* + [>' + 0](0 + 1)* = (1* + >')(0 + 1)* =
=1*(0+1)*

En el último paso, se ha utilizado la igualdad a* + >. = a* ,


ya que >. E a*.

• Composición de derivadas: se puede realizar la composición de


derivadas de la siguiente forma: Dab(a) = Db(Da(a))

Ejemplo: En el ejemplo anterior,

D lO (1*(O+l)*) = D o(D 1(1*(0+1)*)) = D o(1 * (0+1)*) = (0+1) *

• Creación de la gramática: a partir de una Expresión Regular


que define un Lenguaje Regular, se puede construir la gramática que
genera dicho lenguaje. Esta gramática tendrá la estructura:

donde ao es la Expresión Regular de la que se parte, Di son todas


las Expresiones Regulares distintas que se obtienen por derivación
compuesta con respecto a todos los símbolos de entrada, y P :

- Si Da(a) = {3, {3 -::f >., {3 -::f 0: crear una regla a ::= a{3
- Si>' E Da(a): crear una regla a ::= a

- Si >. E ao: crear una regla ao ::= >.


LENGUAJES, GRAMÁTICAS y AUTÓMATAS: UN ENFOQUE PRÁCTICO 95

- Si Da(a) = 0: no crear ninguna regla de los tipos a ::= {3a y


a ::= a{3, donde {3 E ~ U {A}

Ejemplo: Dada la Expresión Regular anterior,

ao = 1*(0 + 1)*,

se obtiene la gramática que genera el lenguaje asociado, cal-


culando todas las derivadas distintas posibles. Se tienen ya
calculadas Do(ao) = (0+1)* = al Y Dl(ao) = ao . A partir
de éstas, se siguen derivando las expresiones obtenidas que
sean distintas de las anteriores. Por tanto,

Doo(ao) = Do((O + 1)*) = Do(O + 1)(0 + 1)* =


). . (O + 1)* = (O + 1)* = al

eDdad = Dol(ao) = Dd(O + 1)*) = DdO + 1)(0 + 1)* =


). . (O + 1)* = (O + 1)* = al

Esto da lugar a la gramática:

G= ({O,l},{ao , ad,ao , P)

yP:

ao ::= ). I Oal I O I 1ao I1


al ::= Oal I O I 1al I 1
Intuitivamente, se puede observar que existe una gramática
equivalente más sencilla, que sería:

G' = ({O,l},{ao},ao , P)

donde P sería:

ao ::= ).IOaol1ao

Esto es debido a que la Expresión Regular de la que se ha


partido, ao = 1* (O + 1) *, es equivalente a otra ER más
sencilla a~ = (O + 1)*.
96 CAPÍTULO 3. GRAMÁTICAS REGULARES y AUTÓMATAS FINITOS

• Obtención del AF: a partir de esta gramática se puede obtener


el AF que reconoce el lenguaje que la gramática genera, por medio
del procedimiento visto anteriormente. También se puede obtener el
autómata directamente desde las derivadas. Para ello, si ao es la ER
de la que se parte y Di son todas las Expresiones Regulares distintas
que se obtienen por derivación compuesta con respecto a todos los
símbolos de entrada, el AF se puede definir como:

AF = (~, Di U {F}, f,ao, {F})

donde f se forma:
Si Da(a) = (3, (3 -:j:: >.., (3 -:j:: 0: (3 E f(a, a)
Si >.. E Da(a): FE f(a, a)
Si>" E ao: FE f(ao,>")
Si Da(a) = 0: f(a, a) = 0

Ejemplo: A partir de las derivadas calculadas anteriormen-


te, se puede generar el siguiente AF que reconoce el lenguaje
que representa ao.

A = ({O,l},{ao,F},f,ao,{F})

donde f sería:
f 1 >..
-+ qo °
{qO, F} {qO, F} {F}
*F
Este autómata es no determinista. A partir de él, se puede
generar, como se ha estudiado, el AFD equivalente. Se deja
dicho paso como ejercicio para el lector.

Con los algoritmos de equivalencia entre Autómatas Finitos y Gramáticas


de tipo 3 de la sección 3.4.4 y los algoritmos de Kleene, se demuestra que
un Lenguaje Regular se puede definir como:
LENGUAJES , GRAMÁTICAS y AUTÓMATAS: UN ENFOQUE PRÁCTICO 97

• el lenguaje generado por una Gramática Regular;

• el lenguaje aceptado por un Autómata Finito; ó

• el lenguaje representado por una Expresión Regular.

3.6 Autómatas de Células de McCulloch-Pitts


Este tipo de autómatas proviene del estudio de la estructura de las neuronas
humanas y sus conexiones, y constituyeron el primer paso para lo que hoy
se denominan Redes de Neuronas Artificiales. Debido a esta analogía, a los
estados de este tipo de automátas se les denomina células o neuronas.

3.6.1 Definición
Los Autómatas de Células de McCulloch-Pitts están constituidos por un
conjunto de células interconexionadas entre sÍ. Las células presentan las
siguientes propiedades:

• Pueden estar en dos estados: activo (1) o inactivo (O).

• Pueden recibir dos tipos de señales a partir de otras células o como


entrada del autómata: positivas (1) o negativas (O).

• Pueden tener una o varias entradas (ei) de dos tipos: excitadoras (---+)
o inhi bidoras (-{)).

• Tienen una salida o respuesta, r(t), que será 1 si el estado de la célula


es activo ó O si el estado es inactivo.

• Su salida puede ir a una o varias células (incluida ella misma).

• Su estado en el tiempo t + 1 depende sólo de la entrada que reciban


en el tiempo t, pero no del estado en el tiempo t.

• Disponen de una función de transición, g, que permite transitar entre


estados a partir de las entradas a una célula.

• Tienen un umbral u E Z, que, como se verá más adelante, permite


definir las diferentes funciones de transición.
98 CAPÍTULO 3. GRAMÁTICAS REGULARES y AUTÓMATAS FINITOS

3.6.2 Representación
Se puede ver gráficamente una célula tal y como se muestra en la figura 3.21,
donde e(t) = [el (t), e2(t), ... ,en(t)] es el vector de las entradas de la célula
en el instante t, u es el umbral, e es el nombre de la célula, y r(t) es la
salida en el instante t. Al estado en el que se encuentra en un determinado
instante, se le denominará q(t) .

Figura 3.21: Representación gráfica de una célula de McCulloch-Pitts.

Se cumple, además:

1. r(t) = q(t) , con lo que la salida en un determinado instante t depende


sólo del estado en ese instante;

2. q(t + 1) = + 1 sólo es
g(e(t)), con lo que el estado en el instante t
función de la entrada en el instante t y es calculado por la función de
transición 9 a partir de las entradas en el instante previo t; y

3. r(t + 1) J: q(t + 1) J: g(e(t)) , con lo que la salida en el instante t + 1


sólo depende del estado al que transicione la célula a partir de las
entradas en el instante previo t.

De acuerdo a todo esto, su comportamiento es análogo al de una Máquina


Secuencial de Moore. Variando la función de transición g, se obtienen dife-
rentes tipos de células. Por ejemplo, se puede definir una 9 de la siguiente
forma:

donde n es el número de entradas de una célula, y

~
1 si la entrada es excitadora y la señal es 1
e,(t) { -1 si la entrada es inhibidora y la señal es 1
O en otro caso
LENGUAJES, GRAMÁTICAS y AUTÓMATAS: UN ENFOQUE PRÁCT ICO 99

Es decir, las células se activarán si la suma de la señales que recibe en


las entradas es mayor o igual que el umbral.

Ejemplo: Dado el Autómata de Células de la figura 3.22, la


tabla de la figura refleja las transiciones definidas por la anterior
función de transición g(t).

ei(t)
el (t) e2(t) e3(t) q(t + 1) = r(t + 1)
O O O O
el ~ O O 1 1
e
2
~ o~
1 el O
O
1
1
O
1
1
1
e3~ 1 O O O
1 O 1 O
1 1 O O
1 1 1 1

Figura 3.22: Ejemplo de célula de McCulloch-Pitts y su tabla de transición

Por ejemplo, en el caso de la entrada 101 , la salida será O, ya


que la entrada el es inhibidora y por ser su valor 1, cuenta como
-1 para la función g.
100 CAPÍTULO 3. GRAMÁTICAS REGULARES y AUTÓMATAS FINITOS

ei(t) ri(t)
el (t) e2(t) rl (t) r2(t) rl (t + 1) r( t + 1) = r2 (t + 1)
O O O O 1 O
O O O 1 1 O
O O 1 O 1 1
O O 1 1 1 1
O 1 O O 1 1
O 1 O 1 1 1
O 1 1 O 1 1
O 1 1 1 1 1
1 O O O (i) O
1 O O 1 1 O
1 O 1 O O 1
1 O 1 1 1 1
1 1 O O O 1
1 1 O 1 1 1
1 1 1 O O 1
1 1 1 1 1 1

Tabla 3.1: Tabla de transición para el autómata de la figura 3.23.

Si se dispone del autómata de la figura 3.23, la tabla de tran-


sición será la especificada por la tabla 3.1. En este caso, el
autómata recibe dos entradas externas, el Y e2 Y la salida de
una célula va a la otra: rl va a C2 Y r2 va a Cl . Además, la
salida del autómata, r , es la salida de la célula C2 (r = r2). En
la tabla aparecen por una parte el valor de las entradas y de las
salidas de las dos células en el instante t, y, por otra parte, las
salidas de las células (y del autómata) en el instante t + 1.

l---'-----::~ r

Figura 3.23: Ejemplo de Autómata de Células de McCulloch-Pitts.

U n análisis de la tabla de transición muestra que, desde un


punto de vista booleano, las funciones lógicas que representan
a las dos salidas del Autómata de Células, rl Y r2 = r , serían:
LENGUAJES, GRAMÁTICAS y AUTÓMATAS: UN ENFOQUE PRÁCTICO 101

rl =el Vr2
r = r2 = rl Ve2

Otra posible función de transición, g' (t), podría ser:

'(t) = {1 si L:i=Oei(t) >.u y Vj ,ej (t) =O


9 O en caso contrano

donde x es el número de entradas excitadoras de una célula, ei(t ) son


las entradas excitadoras, y ej (t) son las entradas inhibidoras. Las células
se activarán si la suma de la señales excitadoras que reciben en las entradas
es mayor que el umbral y no hay ninguna señal inhibidora.

3.6.3 Construcción de un AF equivalente


Para cada Autómata de Células de McCulloch-Pitts hay un AF equivalente.
Para construirlo, se distinguen dos casos:

Activación única
De todas las entradas, sólo puede haber una activa en cada instante t.

Ejemplo: En el caso del autómata de la figura 3.23, sólo habría


dos posibilidades: (el = 1, e2 = O) Ó (el = O, e2 = 1).

El AF equivalente sería:

AF = (L. , Q, ¡, qo, F)

donde

• L. = e, es decir, los símbolos de entrada son las entradas del Autómata


de Células.

Ejemplo: En el caso del autómata de la figura 3.23, el alfa-


beto de entrada sería L. = {el, e2 }. El símbolo el del alfa-
beto de entrada es equivalente a la entrada (el = 1, e2 = O)
del Autómata de Células, y el símbolo e2 es equivalente a
la entrada (el = O, e2 = 1).
102 CAPÍTULO 3. GRAMÁTICAS REGULARES y AUTÓMATAS FINITOS

• Q es el conjunto de todas las posibles combinaciones de valores de las


salidas de las células. Así, si se tienen m células, habría 2m estados
en el AF equivalente.

Ejemplo: Para el autómata de la figura 3.23, como son dos


células, habría cuatro posibles estados, dependiendo de los
posibles valores de las salidas de las células:

Q = {(1"1 = 0, 1"2 = O) , (1"1 = 0,1"2 = 1) , (1"1 = 1, 1"2 = O),


(1"1 = 1, 1"2 = 1)}

Por simplicidad, se representarán dichos estados como:

• El estado inicial del AF , qo, es el estado cuando el Autómata de


Células está inactivo. Es decir, todas sus células están inactivas.

Ejemplo: Para el autómata de la figura 3.23, qo = qoo

• El conjunto F estará formado por aquellos estados en los que la salida


del Autómata de Células esté activa. Cuando el AF esté en alguno
de estos estados, la salida del AF deberá ser 1 (aceptación) , y cuando
no esté en un estado final , la salida deberá ser O (no aceptación), a
efectos de compatibilidad con el Autómata de Células.

Ejemplo: En el autómata de la figura 3.23, F = {q01 , qll} ,


ya que la salida del autómata era la salida de la célula C2,
la salida de la célula C2 es igual al estado de dicha célula, y
éste está representado por el segundo dígito de los estados
del AF.

• La función de transición f se calcula a partir de un estado del AF


(combinación de valores de salidas de las células) y una entrada (ac-
tivación de una entrada determinada del Autómata de Células) , ob-
servando qué salida se genera en cada célula.
LENGUAJES , GRAMÁTICAS y AUTÓMATAS: UN ENFOQU E PRÁCTICO 103

Ejemplo: La figura 3.24a muestra la tabla de transición


para el autómata de la figura 3.23, y la figura 3.24b muestra
el diagrama de transición de dicho AF.

f el e2
--Tqoo qoo qll
*qOI qlO qll
qlO qOI qll
*qll qll qll

a b

Figura 3.24: Tabla (a) y diagrama (b) de transición del AF equivalente del
autómata de la figura 3.23.

Como se puede observar, el Autómata Finito conexo equivalente se


calcula eliminando los estados no alcanzables desde el estado inicial,
qOI Y qlO· El lenguaje aceptado por los dos autómatas (salida activa
en el caso del Autómata de Células y estado final en el AF) sería: l

Activación múltiple
En el segundo caso, para pasar de un Autómata de Células a un AF, puede
haber varias entradas activas al mismo tiempo o no haber ninguna activa.

Ejemplo: En el caso del autómata de la figura 3.23, habría


cuatro posibilidades:
¡Ha sido obtenido de manera informal , pero utilizando las expresiones regulares y el
teorema de análisis de Kleene vistos en el anterior tema, se puede calcular fácilmente. Se
deja como ejercicio al lector.
104 CAPÍTULO 3. GRAMÁTICAS REGULARES y AUTÓMATAS FINITOS

(el = O, e2 = O) , (el = O, e2 = 1) ,
(el = 1, e2 = O) , (el = 1, e2 = 1)

El AF equivalente sería:

AF = ('L., Q, j , qo, F)

donde

• El alfabeto de entrada estará formado por todas las combinaciones


posibles de valores para las entradas. Por tanto, si hay n entradas del
Autómata de Células, I'L.I = 2n .

Ejemplo: En el caso del autómata de la figura 3.23, el al-


fabeto 'L. = {OO, 01 , 1O, 11} , donde, por ejemplo, el símbolo
de entrada 01 del AF se corresponde con los valores de las
entradas del Autómata de Células: el = 0, e2 = 1.

• Q se construye de la misma forma que para el caso anterior; es el


conjunto de todas las posibles combinaciones de valores de las salidas
de las células. Si se tienen m células, habría 2m estados en el AF
equivalente.

Ejemplo: Para el autómata de la figura 3.23 habría cuatro


posibles estados, como se vio anteriormente:

Q = {(rl = 0, r2 = O) , (rl = 0 , r2 = 1), (rl = 1,r2 = O),


(rl=1,r2=1)}

Por simplicidad, se representarán dichos estados como:

• El estado inicial del AF, qo, es el estado cuando el Autómata de


Células está inactivo. Es decir, todas sus células están inactivas.

Ejemplo: Para el autómata de la figura 3.23, qo = qoo


LENGUAJES , GRAMÁTICAS y AUTÓMATAS : UN ENFOQUE PRÁCTICO 105

• El conjunto F estará formado por aquellos estados en los que la salida


del Autómata de Células esté activa. Cuando el AF esté en alguno
de estos estados, la salida del AF deberá ser de aceptación, y cuando
no esté en un estado final, la salida deberá ser de no aceptación, a
efectos de compatibilidad con el Autómata de Células.

Ejemplo: En el autómata de la figura 3.23, F = {qOl, qll} ,


por las mismas razones que en el caso anterior.

• La función de transición f se calcula a partir de cada estado del


AF (combinación de valores de salidas de las células) y cada entrada
(combinación de valores de las entradas del Autómata de Células) ,
observando qué salida se genera en cada célula.

Ejemplo: La figura 3.25a muestra la tabla de transición


para el autómata de la figura 3.23, y la figura 3.25b muestra
el diagrama de transición en dicho AF .

f 00 01 10 11
---+ qoo qlO qll Qoo qOl
01 ,11
*Qol qlO qll qlO qll
qlO qll qll qOl qOl
*qll qll qll qll qll

a b

Figura 3.25: Tabla (a) y diagrama (b) de transición del AF equivalente del
autómata de la figura 3.23.
106 CAPÍTULO 3. GRAMÁTICAS REGULARES y AUTÓMATAS FINITOS

3.6.4 Construcción de un Autómata de Células equivalente


a un AF
Para cada AF hay un Autómata de Células de McCulloch-Pitts equivalente.
Si el AF = (L:, Q, j, qo, F) , se construye el Autómata de Células de la
siguiente forma:

' Cada símbolo de entrada a E L: será una entrada del Autómata de


/ Células.

¡1Para cada estado q E Q y símbolo de entrada a E L:, se crea una célula


/ de nombre qa con umbral u = 2, que recibirá una entrada excitadora
desde la entrada a.

/ Para cada transición j (p, a) ~ q y símbolo b E L: se crea un arco


,/ excitador desde la célula Pa a cada célula qb.

• Se crea una célula de nombre o: con umbral u = 1, que recibe como


entrada el símbolo inicial de la cadena, f-. Este símbolo servirá para
comenzar el funcionamiento del Autómata de Células.

I Para cada a E L:, se crea un arco excitador desde la célula


.las células qOa·
o: a todas

¡ Se crea una célula F con umbral u = 2 que recibe una entrada exci-
tadora del símbolo de final de cadena -1. Este símbolo servirá para
terminar el proceso de reconocimiento de las palabras de entrada.

• Para cada transición j (p, a) = q tal que q E F , se crea un arco


excitador desde Pa a la célula F.

Ejemplo: Dado el autómata A6 cuya tabla de transición aparece


en la figura 3.26, el Autómata de Células equivalente se muestra
en la misma figura.

Para que el Autómata de Células reconozca las mismas palabras de


entrada que el AF se precede la palabra de entrada del símbolo f- y se
añade al final de la palabra de entrada el símbolo -l . El Autómata de
Células reconoce una palabra cuando la salida de la célula denominada F
está activa (genera un 1) .
L ENGUAJES, GRAMÁTICAS y AUTÓMATAS: UN ENFOQUE PRÁCTICO 107

f O 1
-tq q p
r r p
*p p r

1- ~Cili) ~
I ~w
o 4G:G>-
4GJY
~
~@-
~~
~,

F igura 3.26: Autómata de Células correspondiente al AF A6.

3.7 Autómatas probabilísticos

Los Autómatas Finitos Probabilísticos (AFP ) permiten introducir la idea de


que las transiciones entre estados a partir de símbolos de entrada pueden
no producirse de forma segura (probabilidad igual a 1) sino que existe
una determinada probabilidad asociada a que se produzca la transición.
Por tanto, no se puede hablar del estado en el que está el autómata en
un determinado instante, sino que se habla de la probabilidad de que se
encuentre en cada uno de los estados del autómata. Muchas aplicaciones
reales se basan en este tipo de comportamiento probabilístico de transición,
como, por ejemplo, los movimientos de los robots, el reconocimiento de voz ,
el entendimiento del lenguaje natural, etc. Algunos ejemplos se verán en el
capít ulo 6.
108 CAPÍTULO 3. GRAMÁTICAS REGULARES y AUTÓMATAS FINITOS

3.7.1 Definición
Los Autómatas Probabilísticos se pueden definir de la siguiente forma:

AFP = (E , Q,M, P(O),F)

donde

• E es el alfabeto de los símbolos de entrada

• Q es el conjunto de estados

• M es el conjunto de matrices de probabilidad de transición entre


estados, M = {M(a)la E E}

• P(O) es el vector de estado inicial

• F ~ Q es el conjunto de estados finales

Existen dos conceptos nuevos con respecto a los AF estudiados hasta


ahora y son los que permiten trabajar con las probabilidades: las ma-
trices de probabilidades de transición, que reemplazan a las funciones de
transición; y los vectores de estado, que definen la probabilidad de que el
autómata se encuentre en cada estado. Estos dos conceptos se analizan en
detalle en las siguientes secciones.

3.7.2 Matrices de probabilidad de transición


Por cada símbolo a del alfabeto de entrada E, existe una matriz de pro-
babilidad de transición, M(a), que define la probabilidad de dado que el
autómata se encuentre en un determinado estado y reciba el símbolo de en-
trada a, transite a cada uno de los demás estados. Formalmente, se pueden
expresar las matrices como:

Pll P12·· ·Pln )

~~~
P22·· ·P2n
M(a) =
(
Pnl Pn2·· ·Pnn

donde:

• n es el número de estados, n = IQI;


L Di GUAJES, GRAMÁTICAS y AUTÓMATAS: UN ENFOQUE PRÁCTICO 109

• Pij es la probabilidad de que estando en el estado i y recibiendo una


a como entrada, transite al estado j;

• para cada Pij, se cumple O ::; Pij ::; 1; Y

• para cada estado i, 'Lj=l Pij = 1.

Ejemplo: Se define el siguiente Autómata Probabilístico:

donde M = {M(O), M(l)} y

1/3 1/3 1/3 )


M(O) = 1~2 O 1/2
( 1 O

1/2 1/2 O)
M(l) = 1/3 2/3 O
( O O 1

En este autómata, M(O) y M(l) definen las probabilidades de


transición para los símbolos de entrada O y 1, respectivamente.
ASÍ, la probabilidad de que, al estar en el estado q2 y recibir
un O en la entrada, transite al estado ql es M 21 (O) = 1/2, y, si
recibe un 1, la probabilidad de esa transición es M 21 (1) = 1/3.
El vector inicial de probabilidad define que los tres estados son
equiprobables para comenzar en ellos las transiciones, como se
trata en la siguiente sección.

3.7.3 Vectores de estados


El vector de estados en un instante de tiempo t, P(t), tiene una componente
por cada estado del autómata, y, el contenido de cada posición i del vector,
Pi (t), se corresponde a la probabilidad de que en ese instante t el autómata
se encuentre en el estado i. Se puede definir como:
110 CAPÍTULO 3. GRAMÁTICAS REGULARES y AUTÓMATAS FINITOS

Se debe cumplir que ¿:i=1 Pi(t) = 1 para cada instante t. Supóngase


que se desea calcular la probabilidad de estar en el estado i en el instante
t + 1 si en la entrada aparece el símbolo a. Por una parte, el vector de
estados proporciona la probabilidad de que en el instante t se encuentre
en cada uno de los estados j, a través de sus componentes Pj (t) . Por
otra parte, la matriz de probabilidades de transición M (a) proporciona
la probabilidad de transitar desde un estado a otro al recibir la entrada
a. Por tanto, la probabilidad buscada, Pi (t + 1), se podrá calcular como
la probabilidad de estar en el estado 1 en el instante t multiplicado por la
probabilidad de transitar desde el estado 1 al i al recibir una a en la entrada,
más la probabilidad de estar en el estado 2 en el instante t multiplicado
por la probabilidad de transitar desde el estado 2 al i al recibir una a en
la entrada, y, así sucesivamente para todos los estados del autómata. La
fórmula resultante será:
n
Pi(t + 1) = L Pj(t)Mji(a)
j=1

y la fórmula de cálculo para el vector completo será:

P(t + 1) = P(t) x M(a)

Ejemplo: Dado el autómata AF PI, si el vector de estados es el


inicial, P(O) = (1/3 1/3 1/3), y se recibe un O, las compo-
nentes del vector de estados serán:

3
PI (1) L Pj (0)Mj1 (O) = 1/3 x 1/3 + 1/3 x 1/2 + 1/3 x 0=5/18
j=1
3
P2(1) L Pj(0)Mj2 (0) = 1/3 x 1/3 + 1/3 x 0+ 1/3 x 1 = 4/9
j=1
3
P3(1) L Pj (0)Mj3 (0) = 1/3 x 1/3 + 1/3 x 1/2 + 1/3 x 0=5/18
j=1
LENGUAJES, GRAMÁTICAS y AUTÓMATAS: UN ENFOQUE PRÁCTICO 111

y P(l) sería: P(l) = (5/18 4/9 5/18) y, por tanto, sería


más probable encontrarse en el estado Q2 . Si recibiera como en-
trada un 1, las componentes del vector de estados en el momento
t = 1 serían:

3
PI (1) L Pj(O)Mjl (1) = 1/3 x 1/2 + 1/3 x 1/3 + 1/3 x 0=5/18
j=1
3
P2 (1) L Pj (O)Mj2 (1) = 1/3 x 1/2 + 1/3 x 2/3 + 1/3 x O = 7/18
j=1
3
P3 (1) L Pj (O)Mj3 (1) = 1/3 x 0+ 1/3 x 0+ 1/3 x 1 = 1/3
j=1

y P(l) sería: P(l) = (5/18 7/18 1/3).

3.7.4 Lenguaje aceptado por un AFP


Como se ha visto en la sección anterior, si se recibe como entrada el símbolo
a E ~, se puede calcular el vector de estados en el instante 1, P(l), a
partir del vector de estados inicial P(O) y de la matriz de probabilidad de
transición M (a) como:

P(l) = P(O) x M(a) (3.1)

Si en ese instante 1 se recibe el símbolo b E ~, el vector de estados en


el instante 2, se puede calcular análogamente con el P(l) y M(b) como:

P(2) = P(l) x M(b) (3.2)

Sustituyendo 3.1 en 3.2 daría:

P(2) = P(O) x M(a) x M(b)

Si se generaliza, cuando en la entrada se recibe la palabra


x = aIa2 . .. ap , el vector de estados en el instante p será:
112 CAPÍTULO 3. GRAMÁTICAS REGULARES y AUTÓMATAS FINITOS

P(p) = P(O) X M(ad X M(a2) X ... X M(a p ) = P(O) X rr


p

i=1
M(ad (3.3)

Por simplicidad, se utilizará la notación P(x) para referirse al vector de


estados resultante de transitar desde el estado inicial al recibir la palabra
x.

Ejemplo: En el AFPI, el vector de estados (del instante 2)


después de recibir la palabra de entrada x = 01 será:

P(Ol) P(O) X M(O) X M(l) =

1/3 1/3 1/3) (1/2


= (1/3 1/3 1/3) X 1/2 O 1/2 X 1/3
( O 1 O O

(5(18 4(9 5(18) x (:~i ;~i ~)


= (31/108 47/108 5/18)

A partir de estas definiciones, se puede calcular la probabilidad de que


un determinado estado i sea accesible desde el estado inicial al recibir una
determinada palabra de entrada x E E*. Para ello, se calcula la probabili-
dad de que, desde el estado inicial se llegue al estado i al realizar transiciones
con dicha palabra, por la fórmula 3.3 y se selecciona la posición i, Pi(x).
Ahora, se puede calcular la probabilidad de que, al recibir en la entrada
la palabra x, se llegue a un estado final, PF(x), sin más que sumar las Pi(X)
de los estados i E F:

PF(X) = L Pi(X)
iEF

Ejemplo: En el AF PI , la probabilidad de que el autómata tran-


site a un estado final desde el inicial al recibir la palabra 01 será
5/18, ya que sólo hay un estado final, Q3, y P3 (01) = 5/18.
LENGUAJES, GRAMÁTICAS y AUTÓMATAS: UN ENFOQUE PRÁCTICO 113

Muchas veces, sólo es necesario saber la probabilidad de estar en algún


e tado final. En estos casos, lo visto anteriormente es suficiente para calcu-
lar dicho valor. Sin embargo, otras veces se desea saber si el autómata ha
aceptado o no una determinada palabra. Para ello, se recurre a un artificio
consistente en definir un umbral e que cumpla O ::; e ::; 1. A partir de
su definición, un autómata aceptará una palabra x si PF(X) ~ e. Obvia-
mente, cuanto mayor sea el umbral, más restrictivo será el AFP, ya que se
aceptarán menos palabras.
Formalmente, se amplia la definición de AFP, vista al comienzo del
tema, con e:

AFP = (E,Q,M,P(O),F, e)
El lenguaje aceptado por dicho AFP serán todas las palabras cuyas
transiciones lleven a algún estado final con una probabilidad mayor o igual
que el umbral. Es decir,

LAFP = { XIPF(X) ~ e ,x E E*}

Ejemplo: En el AFP1 , si se define el umbral e = 1/2, la palabra


01 no sería aceptada por el autómata, ya que

PF(Ol) = 5/18 < 1/2

Si el umbral fuera e= 1/4, sí sería aceptada.

3.7.5 AF como AFP


Los Autómatas Finitos Deterministas y No Deterministas son un caso par-
t icular de AFP, en el que las probabilidades son O ó 1. Si se tiene un
A F D = (E , Q , J, qo , F), se puede obtener el AFP equivalente:

AFP = (E , Q,M,P(O),F,e)
donde
114 CAPÍTULO 3. GRAMÁTICAS REGULARES y AUTÓMATAS FINITOS

• el vector inicial debe reflejar la idea de que sólo se está inicialmente


en un estado, qo, yen ninguno más. Por tanto,

Pi(O) = {1 si i = qo
O en caso contrario

• todas las transiciones permitidas por la función de transición f tienen


probabilidad igual a 1, mientras que las que no se producen, tienen
probabilidad igual a O. Por tanto, para cada símbolo a E ~,

Mi. a =
J( )
{1 si f(i, a) = j
O en caso contrario

• el umbral debe ser mayor que cero, siendo válido cualquier valor.

Ejemplo: Dado el autómata A6 descrito en el tema de células


de McCulloch-Pitts, y cuya tabla de transición se muestra a
continuación:

f O 1
-+q q P
r r p
*p p r

el AFP equivalente sería, por ejemplo:

AF P = ({O, 1}, {q, r,p}, M , P(O), {p}, 0.5)

donde P(O) = (1 O O) Y

M(O) = (~O O~ ~)
1

M(!) = O~ n
LENGUAJES, GRAMÁTICAS y AUTÓMATAS: UN ENFOQUE PRÁCTICO 115

EJERCICIOS

Los ejercicios del capítulo 3 constituyen gran parte de los ejercicios


del libro, debido, fundamentalmente, al gran desarrollo teórico efectuado
en este tema, así como la gran cantidad de aplicaciones que se basan en
ellos. Ejemplos de algunas de estas aplicaciones se analizan en el capítulo
dedicado a las mismas. Para facilitar la labor al lector, se han dividido
en los grupos temáticos, que corresponden a las secciones en las que está
dividido el capítulo. Así, conforme se van leyendo las diferentes secciones,
el lector puede ir reforzando la teoría con los ejercicios correspondientes a
las secciones.

• Ejercicios del 3.1 al 3.3: relativos a gramáticas de tipo 3

• Ejercicios del 3.4 al 3.10: relativos a Máquinas Secuenciales

• Ejercicios del 3.11 al 3.26: relativos a Autómatas Finitos Determinis-


tas y No Deterministas y Expresiones Regulares

• Ejercicios del 3.27 al 3.30: relativos a Autómatas de Células de Mc-


Culloch - Pitts

• Ejercicios 3.31 y 3.32: relativos a Autómatas Probablísticos

• Ejercicios del 3.33 al 3.42: más complejos, que resumen diferentes


apartados

El objetivo de este último tipo de ejercicios es mostrar cómo los diferen-


es conceptos descritos en el capítulo, como son las Gramáticas, Lenguajes
:- Expresiones Regulares, así como los Autómatas Finitos y equivalentes,
tán todos relacionados, y se pueden transformar unos en otros, por medio
e los algoritmos estudiados en la componente teórica del capítulo.
116 CAPÍTULO 30 GRAMÁTICAS REGULARES y AUTÓMATAS FINITOS

Ejercicio 13.11
Con el alfabeto ~ = {O, 1,2,3,4,5, 6,7,8, 9} encontrar una gramática re-
gular que genere números múltiplos de 3 de cualquier número de cifras o

Para que un número sea múltiplo de 3, la suma de sus cifras debe ser
divisible por 30 8i se dividen los dígitos del O al 9 en tres grupos tales como
P= {O, 3, 6, 9}, Q= {2, 5, 8} Y R= {1, 4, 7} se puede afirmar que:

• Los números creados por combinación de los dígitos de P son múltiplos


de 3 (por ejemplo, los números 663009 y 360)

• Los números formados por combinación de los dígitos de Q y R en la


misma proporción son múltiplos de 3 (por ejemplo los números 1125
y 4287)

• Los números formados por combinación de los dígitos de Q y R en


la misma proporción y con cualquier número de dígitos de P son
múltiplos de 3 (por ejemplo, los números 3021 y 21567)

Así, se puede definir la gramática que genera este lenguaje (y que


además es regular) G = (~T, ~N, S, P) , donde ~T = {O, 1, 2, 3, 4, 5, 6, 7, 8, 9},
~N = {S, D , U} , 8 es el axioma y Pes:

8 00-
00 O I 3 I 6 I 9 I 08 I 38 I 68 I 98 I ID I 4D I 7D I 2U I 5U I 8U
D 0000- 2 I 5 I 8 I 28 158 188 1 1U I 4U I 7U I OD I 3D I 6D I 9D
U 00-
00 1 I 4 I 7 I 18 I 48 I 78 I 2D I 5D I 8D I OU I 3U I 6U I 9U
LENGUAJES, GRAMÁTICAS y AUTÓMATAS: UN ENFOQUE PRÁCTICO 117

Ejercicio 13.21
Obtener el lenguaje que genera la siguiente gramática regular:

G = (~T, ~N, S, P)
donde ~T = {O, 1}. ~N = {S}. S es el axioma y Pes:

S ::= OS 11S I A

La gramática G es una gramática regular lineal por la derecha. La


producción S ::= OS permite introducir cualquier número de símbolos O y la
aplicación de la producción S ::= lS permite introducir también cualquier
número de símbolos 1. Esto significa que las palabras generadas por G
constan de cualquier número de O y 1 en cualquier posición, es decir:

L={(O+l)*}
Algunos ejemplos de palabras son:

O
1
000010010101
0000000001111111

Ejercicio 13.31
Definir una gramática regular que dado el alfabeto ~T = {a, b, e, d}. genere
cadenas que no contengan la secuencia "bc"

Este lenguaje se puede generar con una gramática regular lineal por la
derecha. Para ello sólo se necesitan dos símbolos no terminales S y A. Con-
siderando S como el axioma se tiene el siguiente conjunto de producciones:

...
118 CAPÍTULO 3. GRAMÁTICAS REGULARES y AUTÓMATAS FINITOS

S aS I dS I cS I bA I a I d I c
A bA I aS I dS I b I a I d

Con las producciones:

S aS I dS I cS I a I d I c

se introduce en la cadena cualquier número de símbolos a, d, c. Con la


producción:

S bA

se controla que cuando se introduzca un símbolo b, sólo puedan aplicarse


las producciones:

A bA I aS I dS I b I a I d

que no permiten que aparezca un símbolo c a continuación del símbolo


b.

Ejercicio [3.41
Se desea regular el tráfico de un cruce de cuatro calles con un semáforo en
la confluencia de cada calle con el cruce. Las reglas que regirán estos semáforos
son las siguientes:

• Un semáforo no podrá estar en rojo si no existe tráfico en ninguna de las


calles perpendiculares a la que regula dicho semáforo

• Habrá que respetar la regla de "el que viene por la derecha tiene prio-
ridad", pero sólo si hay el mismo número de calles ocupadas en una
dirección que en otra.

• Tendrá prioridad la dirección que tenga más calles ocupadas con tráfico
LENGUAJES, GRAMÁTICAS y AUTÓMATAS: UN ENFOQUE PRÁCTICO 119

Figura 3.27: Los tramos A y B pertenecen a la primera dirección, y los


tramos C y D pertenecen a la segunda dirección. Los semáforos de una
misma dirección tienen el mismo comportamiento

Diseñar una Máquina Secuencial que modelice el funcionamiento de los semáforos


del problema (figura 3.27).

Un cruze tiene dos calles, la primera formada por la dirección A-B


(tramo A de la primera calle, tramo B de la primera calle), y la segunda
por la dirección C-D (tramo C de la segunda calle, tramo D de la segunda
calle). Cada calle está regulada por dos semáforos, aunque los dos semáforos
que pertenecen a la misma dirección tienen idéntico comportamiento. Por
lo tanto la máquina secuencial a diseñar deberá tener presente solo dos
semáforos , uno por dirección.
Cada uno de los tramos de las calles puede tener tráfico o no. Para
diseñar la MS hay que identificar en primer lugar las entradas. Para ello
se puede elegir, en lugar de si un tramo de una calle tiene o no tráfico,
el hecho de si ha cambiado de estado, en este caso hay 8 entradas de la
siguiente manera:

A - > El tramo A pasa de no tener tráfico a tener tráfico


A - > El tramo A pasa de tener tráfico a no tener tráfico
120 CAPÍTULO 3. GRAMÁTICAS REGULARES y AUTÓMATAS FINITOS

B -> El tramo B pasa de no tener tráfico a tener tráfico


B -> El tramo B pasa de tener tráfico a no tener tráfico
e -> El tramo C pasa de no tener tráfico a tener tráfico
e -> El tramo C pasa de tener tráfico a no tener tráfico
D -> El tramo D pasa de no tener tráfico a tener tráfico
D -> El tramo D pasa de tener tráfico a no tener tráfico

Una vez determinadas las entradas la salida será simplemente cuál de


los dos semáforos estará en verde, sabiendo que cuando uno esté en verde el
otro deberá estar en rojo. Si se denomina SA, SB, SC y SD a los semáforos
de los tramos A, B, C y D respectivamente se tiene que:

• Salida=1. Corresponde a la situación SA= Verde, SB= Verde, SC=Rojo


y SD=Rojo

• Salida=2. Corresponde a la situación SA=Rojo, SB=Rojo, SC= Verde


y SD=Verde

En cuanto a los estados, se corresponderán con todas las posibles situa-


ciones "de existencia de tráfico en los diferentes tramos. Así se tendrá la
siguiente tabla:

p -> No hay tráfico en ningún tramo


qo -> Sólo hay tráfico en el tramo A
ql -> Sólo hay tráfico en el tramo B
q2 -> Sólo hay tráfico en el tramo C
q3 -> Sólo hay tráfico en el tramo D
TO -> Sólo hay tráfico en los tramos A y B
TI -> Sólo hay tráfico en los tramos A y C
T2 -> Sólo hay tráfico en los tramos A y D
T3 -> Sólo hay tráfico en los tramos B y C
T4 -> Sólo hay tráfico en los tramos B y D
T5 -> Sólo hay tráfico en los tramos C y D
So -> Sólo hay tráfico en los tramos A, B y C
LENGUAJES , GRAMÁTICAS y AUTÓMATAS : UN ENFOQUE PRÁCTICO 121

SI - > Sólo hay tráfico en los tramos A, B y D


S2 - > Sólo hay tráfico en los tramos A, C y D
S3 - > Sólo hay tráfico en los tramos B, C y D
t - > Hay tráfico en todos los tramos

Cada uno de los estados anteriores tiene una salida determinada, es


decir, la salida no depende de la entrada, sino únicamente del estado. Así
pues, la máquina que se ha diseñado es una máquina secuencial de Moore:
MO=({A,B,C,D ,A , B , e, D},{1,2},Q,J,g)
donde Q = {P, qO , ql , q2 , q3,rO , rl ,r2,r3,r4, r5,so,sl ,S2,s3,t}, f:

f A B C D A B e D
p qo ql q2 q3 P P P P
qo qo ro rl r2 P qo qo qo
ql ro ql r3 r4 ql p ql ql
q2 rl r3 q2 r5 q2 q2 P q2
q3 r2 r4 r5 q3 q3 q3 q3 P
ro ro ro So SI ql qo ro ro
rl rl So rl S2 q2 rl qo rl
r2 r2 SI S2 r2 q3 r2 r2 qo
r3 So r3 r3 S3 r3 q2 ql r3
r4 SI r4 S3 r4 r4 q3 r4 ql
r5 S2 S3 r5 r5 r5 r5 q3 q2
So So So So t r3 rl ro So
SI SI SI t SI r4 r2 SI ro
S2 S2 t S2 S2 r5 S2 r2 rl
S3 t S3 S3 S3 S3 r5 r4 r3
t t t t t S3 S2 SI So

y g:

d
122 CAPÍTULO 3. GRAMÁTICAS REGULARES y AUTÓMATAS FINITOS

Ejercicio 13.51
Determinar la Máquina Secuencial capaz de ir calculando la suma parcial
de los números que va recibiendo y producir como salida el módulo 5 de dicha
suma parcial.
Por ejemplo, si se recibe la cadena 642531, la suma parcial sería 6, 10, 12,
17, 20 Y 21; Y la salida que deberá producir la máquina será: 102201

Para poder acumular las sumas parciales como estados en la MS a di-


señar, se necesitarían infinitos estados, así pues no es posible hacerlo de
esta forma. Hay que encontrar una sucesión que represente el problema y
que permita hallar el siguiente término en función del anterior, de forma
que se pueda recoger dicha sucesión en una MS con un número finito de
estados.
Para calcular el módulo de la suma parcial, no es necesario guardar las
sumas parciales acumuladas, bastará con guardar el resultado del último
módulo de la siguiente forma:

So = Eo Mod 5

Sl = ((Eo Mod 5) + El) Mod 5) = (So + Ed Mod 5


S2 = ((((Eo Mod 5) + Ed Mod 5) + E2 ) Mod 5 = (Sl + E2 ) Mod 5
donde Si es la suma parcial i-ésima, y Ei es la entrada i-ésima, que
en este caso se corresponde con el dígito i-ésimo (empezando a contar de
izquierda a derecha).
Generalizando se puede deducir:

Que es la sucesión que se necesitaba. De esta forma, se puede diseñar


una MS de Moore con tan sólo 5 estados que resuelva el problema.
La entrada sería cada uno de los dígitos del O al 9, la salida el módulo
resultado de O a 4, y los estados se corresponderían con cada uno de los
módulos, p con O, q con 1, ... , t con 4:
L ENGUA J ES, GRAMÁTICAS y A UT ÓMATAS: UN E NFOQ UE PRÁCTICO 123

MO=( {0,1,2,3,4,5,6, 7,8,9} ,{0,1,2,3,4 },{p,q,r,s,t },f,g)

donde f:

f O 1 2 3 4 5 6 7 8 9
p p q r s t p q r s t
q q r s t p q r s t p
r r s t p q r s t p q
s s t P q r s t p q r
t t P q r s t p q r s

siendo g:

~1~lil~I;I!1
El comportamiento con la entrada del ejempl o 64~531 , sería:

t Q(t) E S Q(t+1 )
to P 6 q
tI q 4 1 P
t2 p' 2 O r
t3 r 5 2 r
t4 r 3 2 P
ts P 1 O q
t6 q 1

Se empieza en el est ado p , al est ar asociado a la salida O que es el


elemento neutro de la suma.
Se puede comprobar cómo la salida obtenida es la deseada, es decir:
102201

Ejercicio 13.61
Determinar la Máquina Secuencial capaz de ir calculando el producto parcial
de los números que va recibiendo y producir como salida el módulo 4 de dicho
producto parcial.
124 CAPÍTULO 3. GRAMÁTICAS REGULARES y AUTÓMATAS FINITOS

Por ejemplo, si se recibe la cadena 372947 los productos parciales serían:


3, 21, 42, 378, 1512 Y 10584; Y la salida que deberá producir la máquina será:
312200

Para poder acumular los productos parciales como estados en la MS


a diseñar, se necesitarían infinitos estados, así pues no es posible hacerlo
de esta forma. Al igual que en el ejemplo anterior, habrá que encontrar
una sucesión que represente el problema y que permita hallar el siguiente
término en función del anterior de forma que se pueda recoger dicha sucesión
en una MS con un número finito de estados.
Para calcular el módulo del producto parcial no es necesario guardar
los productos parciales acumulados, bastará con guardar el resultado del
último módulo de la siguiente forma:

So = Eo Mod 4

SI = ((Eo Mod 4) x Ed Mod 4) = (So x Ed Mod 4

S2 = ((((Eo Mod 4) x Ed Mod 4) x E2) Mod 4 = (SI x E2) Mod 4

donde Si es el producto parcial i-ésimo, y Ei es la entrada i-ésima, que


en este caso se corresponde con el dígito i-ésimo (empezando a contar de
izquierda a derecha).
Generalizando se puede deducir:

que es la sucesión que se necesitaba. De esta forma se puede diseñar


una MS de Moore con tan sólo 4 estados que resuelva el problema.

° °
La entrada sería cada uno de los dígitos del al 9, la salida el módulo
resultado de a 3, y los estados se corresponderían con cada uno de los
módulos, p con 0, q con 1, r con 2 y s con 3:

MO=( {0,1,2,3,4,5,6, 7,8,9},{0,1,2,3},{p,q,r,s },f,g)

donde f:
LENGUAJES, GRAMÁTICAS y AUTÓMATAS: UN ENFO QUE PRÁCTICO 125

f O 1 2 3 4 5 6 7 8 9
p p p p p p p p p p p
q p q r S p q r S p q
r p r p r p r p r p r
S p S r q p S r q p S

La interpretación de la tabla anterior podría Ser la siguiente:

Si se está en el estado, por ejemplo, s, es decir el estado en


que se ha producido un resultado de 3 en la última operación de
módulo, y se recibe la entrada 7, se pasará al estado resultado de
aplicar el módulo 4 al producto de 3 por 7, es decir 21 Mod 4 = 1,
es decir se pasará al estado q. Lo mismo se aplicaría al resto de
las casillas de la tabla anterior.

La función g quedaría:

El comportamiento con la entrada del ejemplo 372947, sería:

t Q(t) E S Q(t+l )
to q 3 S
tI S 7 3 q
t2 q 2 1 r
t3 r 9 2 r
t4 r 4 2 P
t5 P 7 O P
t6 P O

Se empieza en el estado p, al estar asociado a la salida 1 que es el


elemento neutro del producto.
Se puede comprobar cómo la salida que produce es 312200, que es la
correcta.
126 CAPÍTULO 3. GRAMÁTICAS REGULARES y AUTÓMATAS FINITOS

Ejercicio 13.71
Diseñar una Máquina Secuencial que modelice el comportamiento de la
máquina de refrescos descrita a continuación: se dispone de una máquina
expendedora de tres productos distintos: PI, P2 Y P3. El precio del primero es
de 20 pesetas, el del segundo de 15 y el del tercero de 40. La máquina admite
monedas de 5, 10 Y 25 pesetas, y tiene cuatro botones uno para cada uno de
los productos que provee, y otro para que devuelva el dinero introducido en
caso de arrepentimiento a la hora de seleccionar el producto. Se considerarán
las siguientes restricciones:

• La máquina no podrá memorizar una cantidad de dinero que sobrepase


la cantidad del producto más caro

• Si se selecciona un producto para el que no se ha introducido el dinero


suficiente, la máquina devolverá todo el dinero introducido y no dará el
producto

• Si se selecciona un producto para el cual se ha introducido dinero de


sobra , dará el producto y se quedará con el dinero para que se pueda
realizar una nueva selección o introducir más dinero

La Máquina Secuencial que resuelve este problema será la siguiente:

• Como entradas se tiene la moneda de 25 pesetas, la de 10 y la de 5,


los botones de los productos uno, dos y tres, y el botón de devolución
de monedas

• Como salida se tienen todas las posibilidades de cambio que permite


el problema: 0, 5, 10, 15, 20, 25, 30, 35, 40. También serán posibles
salidas cada uno de los tres productos

• Habrá un estado por cada una de las cantidades de dinero que la


máquina puede almacenar: 0, 5, 10, 15, 20, 25 , 30, 35, 40

Con esta descripción, las funciones de transición y salida de la máquina


serían las que aparecen en las siguientes tablas:
L ENGUAJES , GRAMÁTICAS y AUTÓMATAS: UN ENFOQUE PRÁCTICO 127

f 5 10 25 PI P2 P3 e
qo q5 qlO q25 qo qo qo qo
q5 qlO qI5 q30 qo qo qo qo
qlO qI5 q20 q35 qo qo qo qo
qI5 q20 q25 q40 qo qo qo qo
q20 q25 q30 q40 qo q5 qo qo
q25 Q30 q35 q40 q5 qlO qo qo
q30 q35 q40 q40 qlO qI5 qo qo
q35 q40 q40 q40 qI5 q20 qo qo
q40 q40 q40 q40 q20 q25 qo qo

g 5 10 25 PI e
P2 P3
qo o o o o o o o
q5 o o o 5 5 5 5
QlO o o o 10 10 10 10
QI5 o o o 15 P2 15 15
Q20 o o 5 PI P2 20 20
Q25 o o 10 PI P2 25 25
Q30 O O 15 PI P2 30 30
Q35 O 5 20 PI P2 35 35
Q40 5 10 25 PI P2 P3 40

Ejercicio 13.81
Se pretende diseñar una Máquina Secuencial (de Mealy o Moore) que re-
suelva el siguiente problema : sea una máquina que se mueve a través de un
tablero bidimensional de 15 x 15 casillas. La máquina sólo puede realizar tres
operaciones: girar a la izquierda, girar a la derecha y avanzar a la casilla si-
guiente. La máquina está orientada en una determinada dirección: Norte, Sur,
Este u Oeste. Al avanzar irá a la casilla contigua a la que se encuentra en la
dirección en la que está orientada . Al girar a la derecha cambiará su orientación
de forma que si miraba al este mirará al sur, etc ... De la misma forma , si gira
a la izquierda y estaba mirando al este pasará a mirar al norte etc. ..
128 CAPÍTULO 3. GRAMÁTICAS REGULARES y AUTÓMATAS FINITOS

Las casillas pueden estar vacías o tener comida (una unidad de comida
como máximo por casilla) siguiendo un camino determinado. Si la máquina
avanza accediendo a una casilla en la que había comida, esta desaparece y la
máquina se come la comida. El objetivo de la máquina será el de comer el
mayor número de comida en el menor tiempo posible, este parámetro sirve para
evaluar la eficacia de la máquina diseñada.
Como se ha especificado, la comida seguirá un camino prefijado. Dicho
camino podrá tener agujeros (casillas sin comida) en cualquier posición, pero
nunca mayor de la unidad. Un ejemplo de caminos diferentes pueden ser los
recogidos en la figura 3.28. La máquina partirá siempre de la casilla superior
izquierda (la 1-1), y estará orientada hacia el este, tal y como se aprecia en la
figura 3.28. La máquina no deberá hacer ningún movimiento que la situe fuera
de los márgenes del tablero.

• •• •• •• •• •• •• • •
• ••• •• •
••
• • •• ••• •• •• • • •
••
•• •• •• ••
•• •• • •• • • •• • ••
••
•• • • ••
••• •• •• •• • ••

Figura 3.28: Ejemplo de caminos del problema

Si se supone que sólo existirá un hueco entre cada unidad de comida,


para resolver el problema, la MS deberá ser capaz de mirar en todas las
posiciones contiguas a una dada hasta que encuentre comida. Esta será la
solución que aquí se describe.
El alfabeto de entrada es: Comida, Vacío o Muro. Esta última opción
se introduce para evitar que la máquina se salga de los bordes del tablero.
Así pues:
LENGUAJES , GRAMÁTICAS y AUTÓMATAS: UN ENFOQUE PRÁCTICO 129

I;E = {V, e, M}
donde V es Vacío, C es Comida, y M es Muro.
La salida de la máquina será el movimiento a realizar: 1 giro a la iz-
quierda, D giro a la derecha y A avanzar una casilla. La definición formal
completa de la máquina será:

MS = {{V, e, M} , {I, D, A}, {p, q, r, s, t, u, v, w, x, y, z}, j, g}

donde la tabla de transición viene dada por:

j V C M
p q p q
q r p r
r s p s
s t P t
t u P t
u v P v
v w p w
w x p x
x y p y
y z p y
z t P t

y la de salida por:

g V C M
p D A D I
l'

q D A D
r D A D
s D A D
t A A D
u D A D
v D A D
w D A D
x 1 A 1
Y A A D
z 1 A 1
130 CAPÍTULO 3. GRAMÁTICAS REGULARES y AUTÓMATAS FINITOS

Cada estado se refiere a una de las orientaciones que la máquina ha


examinado sin haber encontrado comida, de forma que si la encuentra (en-
trada 1) pasa a la situación inicial (estado p), y si no la encuentra realiza
el giro o el avance correspondiente para examinar las situaciones que aún
le quedan por mirar en los alrededores.

Ejercicio 13.91
Diseñar formalmente (indicando alfabeto de entrada, alfabeto de salida,
conjunto de estados y funciones de transición y salida en forma de tablas) una
Máquina Secuencial que resuelva el siguiente problema :

Un ascensor se mueve entre tres pisos. En cada piso existe un


botón para solicitar el ascensor, y en el interior hay 3 botones, uno
para cada piso, con los cuales se indica el piso al que se desea ir.
El ascensor tiene capacidad para una sola persona. Se trata de que
el sistema que gobierne el comportamineto del ascensor sea lo más
eficaz posible. Como es lógico el ascensor puede estar vacío, lleno,
parado o en movimiento.

La Máquina Secuencial tendrá las siguientes entradas:

• V.- No se ha apretado ningun botón

• Pl.- Se ha apretado el botón del piso 1

• P2.- Se ha apretado el botón del piso 2

• P3.- Se ha apretado el botón del piso 3

• P12.- Se han apretado los botones de los pisos 1 y 2

• P13.- Se han apretado los botones de los pisos 1 y 3

• P23.- Se han apretado los botones de los pisos 2 y 3

• P123.- Se han apretado los botones de los pisos 1, 2 Y 3

• Al.- Se ha apretado el botón 1


LENGUAJES, GRAMÁTICAS y AUTÓMATAS: UN ENFOQUE PRÁCTICO 131

• A2.- Se ha apretado el botón 2

• A3.- Se ha apretado el botón 3

En cuanto a los estados, el ascensor puede estar parado, en movimien-


to, lleno o vacío. El objetivo es que si el ascensor está moviéndose en una
determinada dirección, no cambie el sentido hasta que no haya cumplido
el objetivo del movimiento que lleva (dejar el ocupante, recoger un nuevo
ocupante). En este caso, cuando el ascensor está en movimiento, es indife-
rente si lo está para recoger a un ocupante o para dejarle. Por lo tanto, se
derán considerar las siguientes situaciones:

• Si el ascensor está vacío y parado, en qué piso está (3 estados. VI,


V2, V3)

• Si el ascensor está lleno y parado, en qué piso se encuentra (3 estados.


L1, L2, L3)

• Si el ascensor está en movimiento, de qué piso a qué piso va (6 estados.


M12, M13, M23, M32, M31, M21)

Ahora sólo quedará rellenar las tablas de transición y de salida de la


máquina.

V PI P2 P3 P12 P13 P23 P123 Al A2 A3


VI VI L1 L2 L3 L1 L1 L2 L1 VI M12 M13
V2 V2 L1 L2 L3 L2 L3 L2 L2 M21 V2 M23
V3 V3 L1 L2 L3 L2 L3 L3 L3 M31 M32 V3
L1 L1 L1 L2 L3 L1 L1 L2 L1 VI M12 M13
L2 L2 L1 L2 L3 L2 L3 L2 L2 M21 V2 M23
L3 L3 L1 L2 L3 L2 L3 L3 L3 M31 M32 V3
M12 V2 V2 L2 V2 L2 V2 L2 L2 M12 M12 M12
M13 V3 V3 V3 L3 V3 L3 L3 L3 M13 M13 M13
M21 VI L1 VI VI L1 L1 VI L1 M12 M12 M12
M23 V3 V3 V3 L3 V3 L3 L3 L3 M12 M12 M12
M31 VI L1 VI VI L1 L1 VI L1 M12 M12 M12
M32 V2 V2 L2 V2 L2 V2 L2 L2 M12 M12 M12
132 CAPÍTULO 3. GRAMÁTICAS REGULARES y AUTÓMATAS FINITOS

La función de salida podría ser cualquiera con un significado relevante.


Por ejemplo, si el ascensor está ocupado o no, o si está en movimiento o
no, una combinación de las anteriores, etc ...

Ejercicio 13.10 I
Diseñar formalmente (indicando alfabeto de entrada, alfabeto de salida,
conjunto de estados y funciones de transición y salida en forma de tablas) una
Máquina Secuencial que resuelva el siguiente problema:

Se desea regular el tráfico en un paso a nivel con barrera . Para


ello se dispone de una señal que se acciona cuando un tren está
cerca del paso a nivel. Se dispone, a su vez, de cuatro células
fotoeléctricas (el a c4) capace5 de recoger la llegada de vehículos.
Las células disponen de dos tipos de señal: una que determina
que un vehículo ha pasado por delante, y otra que es capaz de
determinar si un vehículo está parado frente a ella .
Las células el y c2 estarán controlando a los vehículos que se
dirigen al paso a nivel en cada uno de los sentidos. Las células c3
y c4 a los que acaban de salir del mismo .
Se trata de, automáticamente, determinar cuándo los semafo-
ros que controlan el paso a nivel deben estar rojo o verde . Hay que
tener en cuenta las siguientes restricciones:

• El tren no deberá pararse bajo ninguna circunstancia


• No deben producirse colisiones
• Si la carretera está atascada a la salida del paso a nivel, no
permitir que los vehículos entren en el paso a nivel, aunque
no venga ningún tren

El paso a nivel estará regulado por dos semáforos, uno para cada direc-
ción de la carretera. Las salidas se corresponderán a cada semáforo y serán:
LENGUAJES, GRAMÁTICAS y AUTÓMATAS: UN ENFOQUE PRÁCTICO 133

NV ---+ Semáforo norte verde


NR ---+ Semáforo norte rojo
SV ---+ Semáforo sur verde
SR ---+ Semáforo sur rojo

Para regular los semáforos sólo se necesitan las células fotoeléctricas a


la salida del cruce, ya que a la entrada da igual que se produzcan atascos.
Sin embargo, un atasco a la salida puede hacer que los coches se coloquen
encima de la vía del tren y le obliguen a pararse, cosa que no debe estar
permitida. Así pues las entradas serán:

CNl ---+ Célula norte de paso de vehículo


CN2 ---+ Célula norte de vehículo parado
CSl ---+ Célula sur de paso de vehículo
CS2 ---+ Célula sur de vehículo parado
TL ---+ Tren que llega al paso a nivel
TS ---+ Tren que ha pasado el paso a nivel

Con estas entradas y salidas, los diferentes estados en que podrá encon-
trarse el sistema serán los siguientes:
134 CAPÍTULO 3. GRAMÁTICAS REGULARES y AUTÓMATAS FINITOS

v -+ Paso sin atascos ni tren


R -+ Paso del tren
N -+ Atasco en el norte
S -+ Atasco en el sur
RN -+ Paso del tren y norte atascado
RS -+ Paso del tren y sur atascado
SN -+ Atascos en norte y sur
RSN -+ Paso del tren y atascos en norte y sur
Con esto la tabla de la Máquina Secuencial quedará:

CN2 CS2 TL TS CNl CSl


V j(NV,SV) N S R V V V
Rj(NR,SR) RN RS R V R R
Nj(NV,SR) N SN RN N V N
Sj(NR,SV) SN S RS S S V
RNj(NR,SR) RN RSN RN N R RN
RSj(NR,SR) RSN RS RS S RS R
SNj(NR,SR) SN SN RSN S S N
RSNj(NR,SR) RSN RSN RSN SN RS RN

Un ejemplo del significado de la tabla podría ser, para la fila 3, columna


3, el siguiente: Si está atascado el cruce en la parte norte (N), ponemos el
semáforo del sur en rojo (SR) para que no se sigan acumulando coches en
el atasco, el semáforo del norte podrá estar en verde (NV). Si se recibe la
señal de que llega un tren se pasa al estado de paso de tren y norte atascado
(RN) , para el cual se pondrán en rojo ambos semáforos (NR,SR) .
Esta es una posible solución al problema. Otra podría ser colocando
dos Máquinas Secuenciales, una para cada semáforo. Esta solución se deja
como ejercicio al lector.
LENGUAJES , GRAMÁTICAS y AUTÓMATAS: UN ENFOQU E PRÁCTICO 135

Ejercicio [3.111
Comprobar si los siguientes Autómatas Finitos Deterministas son equiva-
lentes:
AFD1={ {a,b,c },{p,q,r,s,t,u,v },h ,p,{ s,t,u,v})
"'V''''' -----v----

,0fY1b o\h J-tl h a b ~


e Cjtu \.,~ 0.\-Q '~o--. ~ 0"'\w..
J;~(i.A¡l \
-+p r t q
q q v p
r p u r
*8 q t u
*t t v u
*u t t v
*v u u t

AFD2={ {a,b,c },{p,q,r,s,t },12 ,p,{ r,s,t})

12 a b e
-+p s q P
q t P q
r* q t s
8* S t s
t* t s s

En primer lugar, se halla para cada uno de ellos su autómata mínimo


~~-li \-alente. Si ambos son isomorfos, querrá decir que los autómatas origi-
.::...:..:. .. : son equivalentes.

_- li D!

Se elimina en primer lugar el estado 8 al ser un estado inaccesible. A


~o nt inuación
se determina el conjunto cociente de AF DI:

Q/Eo = {{p ,q,r},{u,v,t}}

Q/E = Q/Eo = {{p,q,r}, {u ,v, t}}


136 CAPÍTULO 3. GRAMÁTICAS REGULARES y AUTÓMATAS FINITOS

Haciendo A = {p , q, r} y B = {u, v, t} el autómata mínimo quedará:

AFDMl={ {a,b,c},{A,B},jmI ,A,{B}}

fmI a b c a,c~~~a,b,c

-~
-tA A B A

AFD2
*B B B B
0
Se puede eliminar, en primer lugar, el estado r al ser un estado inacce-
sible. El cálculo del conjunto cociente sería:

Q/Eo = {{p,q},{s,t}}

Q/E = Q/Eo = {{p, q} , {s, t}}


Haciendo A = {p , q} y B = {s ,t} el autómata mínimo quedará:

AFDM2={ {a,b ,c},{A,B},jm2,A,{B}}

f m2 a b c
-tA B A A
*B B B B

Si se comparan AFDMl y AFDM2 se comprueba que no son isomorfos.


Por lo tanto, AFDl y AFD2 no son equivalentes.
Una solución alternativa consistiría en calcular el lenguaje aceptado por
cada uno de ellos, a través de las expresiones regulares, y comprobar si el
resultado es idéntico. Se deja como ejercicio al lector.
LENGUAJES, GRAMÁTICAS y AUTÓMATAS: UN ENFOQUE PRÁ CTICO 137

Ejercicio [3.121
Indicar cuáles de los siguientes autómatas son equivalentes entre sí:
1. AF1={{a,b},{p,q,r,5,t ,u} , 2. AF2={{a ,b} ,{ p,q,r,5,t, u},
/l,p,{q,r}} h,p,{u}}

/l a b fz a b
-+p q P -+p q u
*q r 5 q r t
*r q t r 5 t
5 t u 5 r t
t 5 U t u 5
U q U *u U q

3. AF3={{a,b} ,{ p,q ,r,5,t,u}, 4 . AF4={{a,b},{p,q ,r,5,t ,u} ,


f h,p,{5,t,U}} f4,p,{r,5}}

fa a b 14 a b
-+p u q -+p r q
q t r q r q
r 5 r *r 5 t
*5 t r *5 r t
*t u q t t q
*u 5 P u u p

5. AF5={{a,b},{p ,q,r,5,t} ,
/5,p,{r,5} }
15 a b
-+p q r
q q t
r* 5 q
s* r q
t r q

Para resolver este ejercicio, se reducen todos los autómatas a sus res-
pectivos autómatas mínimos equivalentes, y luego se comprueba si son iso-
morfos. En primer lugar, se calcula su conjunto cociente para luego poder
reducirlos.
138 CAPÍTULO 3. GRAMÁTICAS REGULARES y AUTÓMATAS FINITOS

1.

Q/Eo = {{p,s,t,u},{q,r}}
Q/El {{p,u},{s ,t} , {q,r}}
Q/E Q/E2 = Q/El

Renombrando los estados de la forma siguiente:

A ~ {p,u}
B ~ {s,t}
C ~ {q,r}

El autómata mínimo quedará:


AFMl={ {a,b} ,{A,B,C} ,fI ,A,{C}}

fI a b
-+A C A
B B A
*C C B

a
2.

Q/Eo = {{p , q, r,s, t ,u}, {u}}


Q/El = {{p},{q ,r,s},{t}{u}}
Q/E Q/E2 = Q/El

Renombrando los estados de la forma siguiente:

A ~ {p}
LENGUAJES, GRAMÁTICAS y AUTÓMATAS: UN ENFOQUE PRÁCTICO 139

B -t {q , r,s}
e -t {t}
D -t {u}

El autómata mínimo quedará:


AFM2={ {a,b},{A,B,C,D},h,A,{D}}

a a

O
-tA
h a
B
b
D
b G~
B B e b b
e
*D
D
D
B
B ~
U a
a

3.

Q/Eo {{p,q , r},{s , t ,u}}


Q/E Q/E1 = Q/Eo

Renombrando los estados de la forma siguiente:

A -t {p,q,r}
B -t {s , t , u}

El autómata mínimo quedará:


AFM3={ {a,b },{A,B},h ,A,{B}}

h a b
-tA B A
*B B A
140 CAPÍTULO 3. GRAMÁTICAS REGULARES y AUTÓMATAS FINITOS

4.

Q/Eo {{p ,q,t,u},{r,s}}


Q/El {{p,q}, {t,U}, {r,s}}
Q/E Q/E2 = Q/E1

Renombrando los estados de la forma siguiente:

A --+ {p , q}
B --+ {t,u}
C --+ {r,s}

El autómata mínimo quedará:


AFM4={ {a,b},{A,B,C},J4 ,A,{C}}

14 a b
--+A C A
B B A
*C C B

a
5.

Q/ Eo {{p , q, t} , {r, s}}


Q/El {{p}, {q}, {t}{r, s}}
Q/E Q/E2 = Q/E1

Renombrando los estados de la forma siguiente:

A --+ {p}
LENGUAJES, GRAMÁTICAS y AUTÓMATAS: UN ENFOQUE PRÁCTICO 141

B -+ {q}
e -+ {t}
D -+ {r, s}

El autómata mínimo quedará:


AFM5={ {a,b },{A,B,C,D},J5,A,{D}}

a a
O
-+A
15 a
B
b
D
b G)~
B B e b
e
*D
D
D
B
B ~
U a
a

Existe una coincidencia total entre los autómatas mínimos 1 y 4, Y entre


los 2 y 5. Así pues AF1 es equivalente a AF4 y AF2 es equivalente
a AF5.

Ejercicio 13.131
Describir el Autómata Finito Determinista equivalente a la Gramática Re-
gular G = (~T,~N,S,P). donde ~T = {a,b}, ~N = {S,A,B}, S es el
axioma y Pes:

S ::= bS I aA I A
A := aA I bB
B := bS I A

El primer paso consiste en limpiar la gramática eliminado la producción


B :=A:
142 CAPÍTULO 3. GRAMÁTICAS REGULARES y AUTÓMATAS FINITOS

S ::= bS I aA I A S ::= bS I aA I A
A ::= aA I bB A ::= aA I bB I b
~ ::= bS lA B ::= bS

El AFND correspondiente a esta Gramática Lineal por la derecha se


muestra en la siguiente tabla (se ha añadido el estado F como estado final):

a b
-+ *S A S
A A B,F
*F 0 0
B 0 S

El AFD correspondiente (y que además es mínimo) es:

a - b
-+ *S A S
A A {B,F}
* {B, F} 0 S
0 0 0
Renombrando los estados se obtiene el siguiente AFD:

a b
-+ *qo ql qo
-ql ql q2
*q2 q3 qo
q3 q3 q3
LENGUAJES , GRAMÁTICAS y AUTÓMATAS: UN ENFOQ UE PRÁCTICO 143

Ejercicio 13.141
Obtener el Autómata Finito asociado a la siguiente gramática:

Rl aRlla

La transformación de la gramática en autómata puede hacerse a partir


de la Gramática Lineal por la derecha del enunciado o de su equivalente
Gramática Lineal por la izquierda. En este caso se va a transformar en su
equivalente lineal por la izquierda, para que sirva como jemplo de transfor-
mación de gramáticas de lineal por la derecha a lineal por la izquierda.
El grafo correspondiente a la gramática lineal por la derecha sería la
de la figura 3.29(a), que se convierte en el gráfico correspondiente a la
gramática lineal por la izquierda de la figura 3.29(b).

a e

a.b! b

Q< a
(a)
GJa a
(b)
a

Figura 3.29: Conversión de gramáticas lineales.

A partir del (b) se construye la Gramática Lineal por la izquierda equi-


valente cuyas producciones serán:
144 CAPÍTULO 30 GRAMÁTICAS REGULARES y AUTÓMATAS FINITOS

Rl 00- Rlalb
R2 00- R2 C lc

Ahora se obtiene el Autómata Finito No Determinista correspondiente


a la Gramática Lineal por la izquierda obtenida en el paso anterior, que
será:

AFND = ({a,b , c},{Ro,R1 ,R2,p,q},j,p,{Ro})

f a b c
-+p Ro Ro,Rl R2
*Ro q q q
Rl Ro,Rl q q
R2 Ro q R2
q q q q

Por último, se convierte el Autómata Finito No Determinista en otro


equivalente determinista, quedando:

AFD = ({a,b,c},{{Ro,Rd,Ro,R2,P,q},j,p,{{Ro,Rd,Ro})

f a b c
-+p Ro {Ro, Rd R2
*Ro q q q
*{Ro,Rd {Ro , Rd q q
R2 Ro q R2
q q q q

Renombrando los estados se obtiene:

AFD = ({a,b,c},{p,q,r,s,0},j,p,{q,r})

f a b c
-+p q r s
*q0 0 0
*rr 0 0
sq 0 s
0 0 0 0
L ENGUA JES , GRAMÁTICAS y AUTÓMATAS: UN ENFOQ UE PRÁCT ICO 145

Ejercicio \3.15\
Sea el siguiente Autómata Finito No Determinista:
AFND = ({a , b} , {p , q, r,s }, j ,p, {s})

f a b A
~p q,s p q,r
q q,y.. r
r p,s q
*s s q,r,s

Construir su Autómata Finito Determinista equivalente.

Para ello habrá que hallar la clausura de la relación T (T*):

T {(p, q),(p,r) , (q ,r), (r, q)}


T* {(p , p) , (p, q) , (p, r), (q , q) , (q , r) , (r, r), (r,a ), (s, s)}
-1 .

De esta forma, se puede eliminar la columna A quedando el autómata:

f a b
~p q,r,s p,q,r,s
q p,q,r,s
r p ,q,r,s
*s s q,r,s

Se puede apreciar que los estados q y r son equivalentes, ya que con la


misma entrada producen la misma salida, y aparecen en los mismos lugares
en la parte derecha de la tabla. Así pues, se puede simplificar el autómata
obteniendo:
146 CAPÍTULO 3. GRAMÁTICAS REGULARES y AUTÓMATAS FINITOS

f a b
-+p q,s p,q,s
q p ,q,s
*s s q S

Se convierte al autómata en determinista:

f a b
-+p {q,s} {p,q,s}
*{q,s} s {p,q,s}
*{p, q, s} {q,s} {p,q,s}
*s s {q,s}

A continuación, se halla el autómata mínimo de este último, para lo


cual se halla en primer lugar su conjunto cociente (se han realizado los
siguientes renombramientos):

A -+ {q , s}
B -+ {p , q, s}

El conjunto cociente queda:

Q/Eo {{p}, {s, A, B}}


Q/E Q/E1 = {{p},{s,A,B}}

El autómata quedará de la siguiente forma, después de simplificar y


renombrar los estados:

a b a,b ~a,b

~~G
-+ P c c
*c c c

siendo e = {s, A , B}
E:\ GU AJES , GRAMÁTICAS y AUTÓMATAS: UN ENFOQUE PRÁCTICO 147

Ejercicio 13.161
Obtener la expresión regular del lenguaje reconocido por el autómata del
ejercicio anterior:

a b a,b ~a,b

~~G
-t p S S
*8 S S

En primer lugar se hallan sus ecuaciones características:

Xo = aX I +bX I +a+b
Xl (a+b)XI+a+b

y se resuelven:

Xl = (a + b)*(a + b)
Xo = (a + b)(a + b)*(a + b) + a + b
Xo = (a + b)[(a + b)*(a + b) + Al
como a* a + A= a*, entonces:

(a + b)*(a + b) + A = (a + b)*
y sustituyendo:

Xo = (a+b)(a+b)*

IL(AFND) = (a + b)(a + b)* I


148 CAPÍTULO 3. GRAMÁTICAS REGULARES y AUTÓMATAS FINITOS

Ejercicio 13.171
Dado el siguiente Autómata Finito No Determinista :

AFND=( {a,b,c },{p,q,r,s,t,u,v},f,p,{ v} )

f(q,b)={r,s} f(u,c)={v} f(r,q)=,x


f(s,a)={t,p} f(p,q)=,x f(r,u)=r-
f(s,c)={u} f(p,t)=,x f(t,q)=,x
f(t,b)={v} f(q,r)=,x f(u,s)=,x
f(u,a)={s,q} f(q,s)0: f(v,r)=,x
Hallar:

1. (a) f"(p,bbcc)
(b) f" (p,acbcac)
(c) f" (p,bcacaa)
(d) f" (p,caa)
(e) f" (p,abac)

2. El Autómata Finito Determinista mínimo equivalente

3. Comprobar que las palabras que anteriormente habían sido aceptadas,


de las del apartado 1, ahora también lo son y viceversa

4. Determinar el lenguaje aceptado por el autómata

1. En primer lugar, se convierte la definición del enunciado de la función


de transición a su forma de tabla:
LENGUAJES, GRAMÁTICAS y AUTÓMATAS: UN ENFOQUE PRÁCTICO 149

f a b c A
--+p q, t
q r,s r, s
r
s t ,p u
q, u
i
t v q
I
u s,q v S
*v r

A continuación se determina, en función de la tabla anterior, la rela-


ción T:
T={ (p,q), (p,t) ,( q,r), (q,s) ,(r ,q), (r, u) ,( t,q) ,( u,s) ,( v ,r) } I

y por último se halla la clausura de la relación T :


1

(p,p) (p, q) (p, t) (p, s) (p , r) (p, u)


:
(q,q) (q, r) (q , s) (q, u)
(r,r) (r,q) (r, u) (r,s)
T*= (s ,s )
(t, t) (t, q) (t ,r) (t, s) (t , u)
(u,u) (u, s)
(v, v) (v, r) (v, q) (v, u) (v,s)

Se calcula, a continuación, la respuesta de la función f para cada una


de las palabras del ejercicio. Se parte del estado inicial, y se calculan
todos los estados a los que se puede ir mediante transiciones A. Este
I
1I
conjunto se halla sin más que incluir en él a todos los estados que I

tengan relación T* con el inicial; es decir: 1:

{qlpT*q}
A continuación, para cada uno de los estados de este conjunto se
calcula el conjunto de estados a los que se puede llegar mediante la
primera letra de la palabra, se unen todos estos conjuntos y se rea-
lizan sucesivamente estas operaciones para el resto de las letras de
la palabra. El conjunto final obtenido será la f" de la palabra. Si
en dicho conjunto final existe algún elemento del conjunto de esta-
dos finales, entonces la palabra es aceptada por el autómata. Como
ejemplo se muestra cómo sería para la primera palabra f" (p,bbcc) .
El resto se hace de la misma forma, pero sólo se incluirá un resumen
de la gráfica.

d
150 CAPÍTULO 3. GRAMÁTICAS REGULARES y AUTÓMATAS FINITOS

b
P~<P
b
r~<p
r4<p
,\
q 4 <p
r~ e { ,\
b U~ v~(*.-l)
q~

b r~ e { ,\
q~ S~ u~(* . -2)

s ~ { S
b
U~<p
b
p~ s~<p

s~ { S
b
V~<p
r
t~ V~ q
u
S
b
r~<p
b
s~<p
b
U~<p

v4<p
r4<p
q 4 <p
V
(*.-1)~ r
u~
e
v~ q
U
s
S4{U~{S
(* . - 2) ~{ ~
LEN GUAJES , GRAMÁTICAS y AUTÓMATAS: UN ENFOQ UE PRÁCTICO 151

En la gráfica, aquellos estados que no tienen flecha es porque a su


mismo nivel están repetidos, y se pueden eliminar, basta con ver sus
derivaciones una sola vez. El resultado final es el que queda en el
último nivel, que en este caso es: f" (p,bbcc)={ v,r,q,u,s}. Si se hace:
j"(p, bbcc) nF = {v} i- fjJ
se comprueba que la palabra bbcc es aceptada por el autómata.
Se hará lo mismo para las demás palabras:
f " (p,acbcac):

{p} ~ {p ,q,r, s,t,u} ~ {t,p,s,q} ~ {p,q,r,s,t ,u} ~ {u ,v} ~


{u , v,s,r,q} ~ {r,s} ~ {r, q, u, s} ~ {u,v} ~ {u , v , s, r, q} ~
{t,p,s,q} ~ {p,q,t,s,r,u} ~ {u,v} ~ {u,v,s,r,q}

Luego If" (p,acbcac)={ u,v,s,r,q} Ique es aceptada por el autómata.

f" (p,bcacaa):

{p} ~ {p,q,r, s,t,u} ~ {r,s,v} ~ {r,q,u,s , v} ~ {u,v} ~


{u,v , s,r,q} ~ {t,p , s,q} ~ {p,q,t,s,r,u} ~ {u,v} ~ {u,v,s,r,q}
~ {t ,p, s,q} ~ {p , q, t,s , r, u} ~ {t ,p, s, q} ~ {p ,q,t, s,r,u}
I I
Luego f" (p,bcacaa)={p,q,t ,s,r,u} que no es aceptada por el autó-
mata.

f" (p,caa):

{p} ~ {p,q,r,s , t,u} ~ {u,v} -~ {u,v,s,r,q} ~ {t,p,s , q}


~ {p,q,t,s,r,u} ~ {t,p,s,q} ~ {p,q,t,s , r,u}
Luego If' (p,caa)={p,q,t,s,r,u} Ique no es aceptada por el autómata.

f" (p,abac) :

{p} ~ {p,q , r,s,t,u} ~ {t,p,s,q} ~ {p,q,r,s,t,u} ~ {r, s, v} ~


{r, q, u, s, v} ~ {t,p,s,q} ~ {p, q, r, s,t,u} ~ {u,v} ~ {u ,v,s, r, q}

I I
Luego f' (p,abac)={ u,v,s,r,q} que es aceptada por el autómata.
152 CAPÍTULO 3. GRAMÁTICAS REGULARES y AUTÓMATAS FINITOS

2. Ahora se resuelve el segundo apartado, en el que se trata de obtener


el Autómata Finito Determinista mínimo equivalente. A partir de T*
se puede eliminar la columna>. del autómata original obteniéndose:
AFND = ({a,b,c},{p,q,r,s,t,u,v},¡,p,{v})

f a b c
-tp p,q,r,s,t,u q,r,s,u,v q,r,s,u,v
q p,q,r,s,t ,u q,r,s,u q,r,s,u,v
r p,q,r,s,t,u q,r,s,u q,r,s,u,v
s p,q,r,s,t,u u,s
t p,q,r,s,t,u q,r,s,u,v q,r,s,u,v
u p,q,r,s,t,u q,r,s,u,v
*v p,q,r,s,t,u q,r,s,u q,r,s,u,v

Se puede apreciar cómo los estados q y r son equivalentes, y también


los estados p y t. Así pues, se pueden eliminar los estados r y t, sin
más que sustituir las apariciones de r en la tabla por q y las de t por
p. De esta forma se obtendría:
AFND = ({a, b, e}, {p,q, s, u, v}, ¡,p, {v})

f a b c
-tp p,q,s,u q,s,u,v q,s,u,v
q p,q,s,u q,s,u q,s,u,v
s p,q,s,u u,s
u p,q,s,u q,s,u,v
*v p,q,s,u q,s,u q,s,u,v

A continuación, se convierte el Autómata Finito No Determinista en


otro equivalente determinista:
AF D = ({a, b, e}, {p, {p , q, s, u}, {q, s, u, v}, {q, s, u} }, ¡, p, {{q, s, u, v} })

f a b c
-tp {p,q,s,u} {q,s,u,v} {q,s,u,v}
{p,q,s,u} {p,q,s,u} {q,s,u,v} {q,s,u,v}
*{q,s,u,v} {p,q,s,u} {q,s,u} {q,s,u,v}
{q,s,u} {p,q,s,u} {q,s,u} {q,s,u,v}
LENGUAJES , GRAMÁTICAS y AUTÓMATAS: UN ENFOQUE PRÁCTICO 153

A partir de este último se reduce a su autómata mínimo equivalente.


Para ello, primero se calcula el conjunto cociente. Se han renombrado
los estados de la siguiente manera:

t : :- q -t {q , s,u}
_~f ::; r -t {p,q,s,U}
~2-;:S -t {q , s , u ,V}

Q/Eo {{p , q,r},{s}}


Q/El {{p,r}, {q}, {S}}
Q/E Q/E2 = Q/El

Volviendo a renombrar los estados de la forma siguiente:

P -t {p,r}

El Autómata Finito Determinista mínimo quedará:


AFDM = ({a,b,c},{p,q,s},f,p,{s})

f a b c
-tp p s s
q p q s
*s p q s

3. El resultado de aplicar f a las palabras del ejercicio sería:

f(p, bbcc) s Aceptada I


f (p, acbcac) s Aceptada I
f(p, bcacaa) p No aceptada I
f(p, caa) p No aceptada I
f(p, abac) s Aceptada I

Se comprueba que, como en el caso anterior, las palabras aceptadas


son la a, b y e.

-
154 CAPÍTULO 3. GRAMÁTICAS REGULARES y AUTÓMATAS FINITOS

4. Para hallar el lenguaje del autómata habrá que determinar y resolver


las ecuaciones fundamentales:

Xo aXo + (b + c)X2 + b + e
Xl aXo+bXI+cX2+C
X2 = aXO +bXI +cX2 +C

Resolviendo en X 2 queda:

X2 = c*(aXo + bX I + e)
Sustituyendo X 2 en Xl, resolviendo y simplificando las expresiones
resultantes se obtiene

Xl = aXo + bXI + cc*(aXo + bXI + e) + e =


(a + cc*a)Xo + (b + cc*b)X I + cc*c + e =

Teniendo en cuenta que cc* +e= c(c*c + ),) = cc*,

Xl = c*aXo + c*bX I + c*c = (c*b)*(c*aXo + c*c)


= I(c* b)* c*aXo + (c*b)*c*c I
Sustituyendo de nuevo en X 2 , resolviendo y simplificando todas las
expresiones:

X2 c*aXo + c*b(c*b)*c*aXo + c*b(c*b)*c*c + c*c


X2 (c*a + c*b(c*b)*c*a)Xo + c*b(c*b)*c*c + c*c =
= (e + b)*aXo + (b + c)*bc*c + c*c = (e + b)*aXo + (b + c)*c
Sustituyendo ahora en X o y resolviendo se obtiene:

Xo aXo + (b + c)(b + c)*aXo + (b + c)(b + c)*c + b + c~:


Xo (b + c)*aXo + (b + c)*c + b
Xo [(b + c)*a]*[(b + c)*c + b]

Luego:

IL(AFND) = [(b + c)*a]*[(b + c)*c + b]1


LENGUAJES , GRA MÁTICAS y AUTÓMATAS: UN E NFOQUE PRÁCTICO 155

Ejercicio 13.181
Obtener los lenguajes aceptados por cada uno de los siguientes autómatas:
1. AF1={{a,b},{p,q,r,s,t,u}, 2. AF2={{a,b},{p,q,r,s,t,u},
f¡,p,{q,r}} h,p,{u}}

f¡ a b h a b
-+p q P -+p q u
*q r s q r t
*r q t r s t
s t u s r t
t s u t u s
u q u *u u q

3. AF3={{a ,b},{p,q,r,s,t,u}, 4. AF4={{ a ,b},{p,q,r,s,t,u},


h,p,{s,t,u} } h,p,{r,s} }

h a b 14 a b
-+p U q -+p r q
q t r q r q
r S r *r S t
*8 t r *8 r t
*t u q t t q
*u s p u u p

5. AF5={{ a,b} ,{p,q,r,s,t}


/5,p,{r,s}}

15 a b
-+p q r
q q t
*r s q
*8 r q
t r q

La primera parte de este ejercicio está resuelta en un ejercicio anterior.


AqUÍ se parte de los Autómatas Finitos Deterministas mínimos obtenidos
y se procede a calcular y resolver, para cada uno de ellos (no equivalentes) ,
sus ecuaciones fundamentales.
156 CAPÍTULO 3. GRAMÁTICAS REGULARES y AUTÓMATAS FINITOS

1. Para el primer autómata las ecuaciones fundamentales serán:

.Ko = aX2 + bXo + a


Xl = aX I+ bXo
X2 = aX2 + bXI + a

Resolviendo en X 2 Y Xl :

Xl a*bXo
X2 = a*(bX I +a)

Sustituyendo Xl y X2 en las expresiones en que aparecen:

X2 a*(ba*bXo + a)
Xo aa*(ba*bXo + a) + bXo + a
Xo = (aa*ba*b + b)Xo + aa* + a
Xo = (aa*ba*b + b)Xo + aa*

Por último, resolviendo para X o:

Xo = (aa*ba*b + b)*aa*

ISolución: (aa*ba*b + b)*aa* I


2. Para 1:)1 segundo autómata las ecuaciones fundamentales serán:

Xo = aX I + bX3+ b
Xl aXI + bX2
X2 = aX3 +bX I +a
X3 aX3 +bX I +a

Resolvemos en X 3 y sustituimos su valor en X 2 :

X3 a*(bX I +a)
X2 aa*bXI + aa*a + bX I + a =
(aa*b + b)XI + aa*a + a = a*bX I + aa*
LENG UAJES , GRAMÁTICAS y AUTÓMATAS: UN ENFOQ UE PRÁCTICO 157

Sustituyendo X 2 en Xl y resolviendo Xl obtendremos:

Xl aX I + ba*bX I + baa*
Xl = (a + ba*b)X I + baa*
Xl = (a + ba*b)*baa*

Sustituyendo Xl en X o y X3 y sustituyendo a su vez X 3 en X o y


simplificando se obtiene:

Xo = a(a + ba*b)*baa* + ba*bX I + ba*a + b

Por último, resolviendo para X o:

Xo = a(a + ba*b)*baa* + ba*b(a + ba*b)*baa* + ba*

Solución: a(a + ba*b)*baa* + ba*b(a + ba*b)*baa* + ba*


3. Para el tercer autómata las ecuaciones fundamentales serán:

Xo aXI+bXo+a
Xl aXI+bXo+a

Resolviendo Xl, sustituyendo su valor en X o, y simplificando:

Xl = a*(bXo + a)
Xo aa*(bXo + a) + bXo + a
Xo aa*bXo + aa*a + bXo + a
Xo (aa*b + b)Xo + aa*a + a
Xo = a*bXo + aa*

Por último resolviendo para X o:

Xo = (a*b)*aa*

I Solución: (a*b)*aa* I

«
158 CAPÍTULO 3. GRAMÁTICAS REGULARES y AUTÓMATAS FINITOS

Ejercicio \3.19\
Determinar si las expresiones regulares siguientes son equivalentes:

1. [b + (e + a)a*(b + c)]*(c + a)a*


2. b*(c + a)[(b + c)b*(c + a)]*,

3. b*(c + a)[a*(b + c)b*(c + a)]*

4. b*(c + a)[a*(b + c)b*(c + a)]*a*

El proceso de comprobación formal de la equivalencia de las expresiones


sería el siguiente:

• Derivar las expresiones de forma sucesiva hasta obtener las reglas que
conforman las gramáticas tipo 3 lineales por la derecha equivalentes
a dichas expresiones

• Obtener los Autómatas Finitos No Deterministas (en el caso más ge-


neral) equivalentes a las Gramáticas Lineales por la derecha obtenidas
en el paso anterior

• Obtener los Autómatas Finitos Deterministas equivalentes a los cons-


truidos en el paso anterior

• Comprobar si estos Autómatas Finitos Deterministas son isomorfos .


Si lo son, las expresiones originales son equivalentes

Expresión 1 En primer lugar se deriva la primera expresión de forma


sucesiva obteniéndose:

+ (e + a)a*(b + c)]*(c + a)a*


[b
Da[(b + (e + a)a*(b + c))*](c + a)a* + Da[(c + a)a* ]
LENGUAJES, GRAMÁTICAS y AUTÓMATAS: UN ENFOQUE PRÁCTICO 159

Para simplificar se redenomina:

R6 (b + (e + a)a*(b + c))*

Se deriva la expresión anterior por partes. En primer lugar RÓ:

Da[b + (e + a)a*(b + c)](b + (e + a)a*(b + c))*

Llamando:

R5 b+(c+a)a*(b+c)

Se deriva esta última y se sustituyen en las expresiones anteriores:

a*(b + e)
a*(b + c)(b + (e + a)a*(b + c))*

Llamando:

R5 (e + a)a*

Se deriva esta última y se sustituyen a su vez en las expresiones ante-


nores:

a*
a*(b + c)(b + (e + a)a*(b + c))*(c + a)a* + a* = Rl

Se hace lo mismo derivando respecto de b:


160 CAPÍTULO 3. GRAMÁTICAS REGULARES y AUTÓMATAS FINITOS

Db(Ro) = Db(RÓ)(c + a)a* + Db(Rg)


Db(RÓ) = Db(R5)(b + (e + a)a*(b + c))*
D b(R5)= )..+<P=)..
Db(Rg) = <P
Db(Ro) = (b + (e + a)a*(b + c))*(c + a)a* = Ro

y lo mismo respecto de c:

Dc(Ro) = Dc(RÓ)(c + a)a* + Dc(Rg)


Dc(RÓ) = Dc(R5)(b + (e + a)a*(b + c))*
Dc(R5) = a*(b + e)
Dc(Rg) = a*
Dc(Ro) = a*(b + c)(b + (e + a)a*(b + c))*(c + a)a* + a* = Rl

Ahora se deriva la expresión R 1 :

Da(Rl) = Da(a*)(b + c)[b + (e + a)a*(b + c)]*(c + a)a* +


+Da((b + c)[b + (e + a)a*(b + c)]*(c + a)a*) + Da(a*) =
= a*(b + c)[b + (e + a)a*(b + c)]*(c + a)a* + a* = Rl
Db(R 1 ) = Db(a*)(b + c)[b + (e + a)a*(b + c) ]*(c + a)a* +
+Db((b + c)[b + (e + a)a*(b + c)]*(c + a)a*) + Db(a*) =
= Db((b + c)[b + (e + a)a*(b + c)]*(c + a)a*) =
= [b + (e + a)a* (b + c)]* (e + a)a* = Ro
Dc(Rd = Dc(a*)(b + c)[b + (e + a)a*(b + c)]*(c + a)a* +
+Dc((b + c)[b + (e + a)a*(b + c)]*(c + a)a*) + Dc(a*) =
= Dc((b + c)[b + (e + a)a*(b + c)]*(c + a)a*) =
= [b + (e + a)a*(b + c)]*(c + a)a* = Ro
LENGUAJES, GRAMÁTICAS y AUTÓMATAS: UN ENFOQUE PRÁCTICO 161

Se han derivado todas las expresiones que han ido apareciendo al derivar
de forma sucesiva, respecto de todos los símbolos del alfabeto, hasta que
ya no han aparecido expresiones nuevas, sino alguna de las ya existentes.
A partir de las derivaciones anteriores se obtiene la Gramática Lineal por
la derecha correspondiente a la expresión original Ro:

Ro aRllbRolcRllalc
Rl aRllbRolcRola

Ahora se obtiene el Autómata Finito No Determinista correspondiente


a la Gramática Lineal por la derecha obtenida en el paso anterior, que será:
AFND = ({a,b,c},{Ro,R1,F},j,Ro , {F})
f a b c
-+ Ro Rl,F Ro Rl,F
Rl Rl,F Ro Ro
*F

El autómata que se ha obtenido es no determinista, por lo tanto habrá


que convertirlo en su equivalente determinista:
AFND = ({a,b,c}, {Ro,{R1,F}},j,Ro, {{Rl,F}})

-+ Ro
*{Rl, F}
f a
{Rl,F}
{Rl,F}
b
Ro
Ro
c
{Rl,F}
Ro
sr@a ~
b,c
Este autómata con solo dos estados ya no puede ser reducido; se trata
del Autómata Finito Determinsta mínimo equivalente a la primera expre-
sión.

Expresión 2 Realizando idéntico proceso con la segunda expresión regu-


lar, en primer lugar se deriva de forma sucesiva obteniéndose:

= b*(c+a)[(b+c)b*(c+a)J*
Da(b*)(c + a)[(b + c)b*(c + a)J* + Da((c + a)[(b + c)b*(c + a)J*)
Da((c + a)[(b + c)b*(c + a)J*)
162 CAPÍTULO 3. GRAMÁTICAS REGULARES y AUTÓMATAS FINITOS

[(b + c)b* (e + a)]* = Rl


Db(Ro) Db(b*)(c + a)[(b + c)b*(c + a)]* + Db((C+ a)[(b + c)b*(c + a)]*)
b*(c + a)[(b + c)b*(c + a)]* = Ro
Dc(Ro) Dc(b*)(c + a)[(b + c)b*(c + a)]* + Dc((c + a)[(b + c)b*(c + a)]*)
Dc((c + a)[(b + c)b*(c + a)]*)
[(b + c)b* (e + a) ]* = Rl
Da(Rt} Da([(b + c)b*(c + a)]*)
Da((b+c)b*(c+a))fÍ(b+c)b*(c+a)]* = cp
Db(R 1 ) Db((b + c)b*(c + a)) ~ (b + c)b*(c + a)]*
b*(c + a)[(b + c)b*(c + a)]* = Ro
Dc(Rt} Dc((b + c)b*(c + a))[a*(b + c)b*(c + a)]*
b*(c + a)[(b + c)b*(c + a)]* = Ro

Se han derivado todas las expresiones que han ido apareciendo al de-
rivar, respecto de todos los símbolos del alfabeto, hasta que ya no han
aparecido expresiones nuevas, sino alguna de las ya existentes. A partir de
las derivaciones anteriores se obtiene la Gramática Lineal por la derecha
correspondiente a la expresión original Ro.

Ro aRllbRolcRllalc
Rl = bRolcRo

Ahora se obtiene el Autómata Finito No Determinista correspondiente


a la Gramática Lineal por la derecha obtenida en el paso anterior, que será:
AFND = ({a,b,c},{Ro,R1,F},f,Ro,{F})

f a b c
-t Ro Rl,F Ro Rl , F
Rl Ro Ro
*F

El autómata que se ha obtenido es no determinista, por lo tanto habrá


que convertirlo en su equivalente determinista:
AFND = ({a,b,c},{Ro,{R1,F},cp},f,Ro,{{R1,F}})
LENGUAJES, GRAMÁTICAS y AUTÓMATAS: UN ENFOQUE PRÁCTICO 163

f a b c
---+ Ro {Rl,F} Ro {Rl,F} a
*{Rl, J} <P Ro Ro
<P <P <P <P

El autómata obtenido no se puede reducir, por lo que es el Autómata


Finito Determinista mínimo equivalente a la segunda expresión regular.

Expresión 3 Se hace exactamente lo mismo para la tercera:

Ro = b*(c + a)[a*(b + c)b*(c + a)]*


Da(Ro) = Da(b*)(c + a)[a*(b + c)b*(c + a)]* + Da((c + a)[a*(b + c)b*(c + a)]*)
= Da((c + a)[a*(b + c)b*(c + a)]*)
= [a*(b + c)b*(c + a)]* = Rl
Db(Ro) = Db(b*)(c + a)[a*(b + c)b*(c + a)]* + Db((C + a)[a*(b + c)b*(c + a)]*)
= b*(c + a)[a*(b + c)b*(c + a)]* = Ro
Dc(Ro) = Dc(b*)(c + a)[a*(b + c)b*(c + a)]* + Dc((c + a)[a*(b + c)b*(c + a)]*)
= Dc((c + a)[a*(b + c)b*(c + a)]*)
= [a*(b+ c)b*(c + a)]* = Rl
Da(R¡} = Da([a*(b + c)b*(c + a)]*)
= Da(a*(b + c)b*(c + a))[a*(b + c)b*(c + a)]*
[Da(a*)(b + c)b*(c + a) + Da((b + c)b*(c + a))][a*(b + c)b*(c + a)]*
= a*(b + c)b*(c + a)[a*(b + c)b*(c + a)]* = R 2
Db(R¡) = Db([a*(b + c)b*(c + a)]*)
= Db(a*(b + c)b*(c + a))[a*(b + c)b*(c + a)]*
= [Db(a*)(b + c)b*(c + a) + Db((b + c)b*(c + a))][a*(b + c)b*(c + a)]*
= b*(c + a)[a*(b + c)b*(c + a) ]* = Ro
Dc(R¡) = Dc([a*(b + c)b*(c + a)]*)
= Dc(a*(b + c)b*(c + a))[a*(b + c)b*(c + a)]*
164 CAPÍTULO 3. GRAMÁTICAS REGULARES y AUTÓMATAS FINITOS

[Dc(a*)(b + c)b*(c + a) + Dc((b + c)b*(c + a))][a*(b + c)b*(c + a)J*


b*(c + a)[a*(b + c)b*(c + a)J* = Ro
Da(a*)(b + c)b*(c + a)[a*(b + c)b*(c + a)]* +
+Da((b + c)b*(c + a)[a*(b + c)b*(c + a)J*)
a*(b + c)b*(c + a)[a*(b + c)b*(c + a)J* = R2
Db(a*)(b + c)b*(c + a)[a*(b + c)b*(c + a)J* +
+Db((b + c)b*(c + a)[a*(b + c)b*(c + a)J*)
b*(c + a)[a*(b + c)b*(c + a)J* = Ro
Dc(a*)(b + c)b*(c + a)[a*(b + c)b*(c + a)J* +
+Dc((b + c)b*(c + a)[a*(b + c)b*(c + a)J*)
b*(c + a)[a*(b + c)b*(c + a)J* = Ro

Se han derivado todas las expresiones que han ido apareciendo al de-
rivar, respecto de todos los símbolos del alfabeto, hasta que ya no han
aparecido expresiones nuevas, sino alguna de las ya existentes. A partir de
las derivaciones anteriores se obtiene la Gramática Lineal por la derecha
correspondiente a la expresión original Ro:

Ro aRllbRolcRllalc
Rl aR21bRol cRo
R2 aR21bRo IeRo

Ahora se obtiene el Autómata Finito No Determinista correspondiente


a la Gramática Lineal por la derecha obtenida en el paso anterior, que será:
AFND = ({a,b,c},{Ro,R 1 ,R2,F},j,Ro,{F})

f a b c
-t Ro Rl,F Ro Rl , F
Rl R2 Ro Ro
R2 R2 Ro Ro
*F

El autómata que se ha obtenido es no determinista, por lo tanto habrá


que convertirlo en su equivalente determinista:
AFD = ({a,b,c},{p,{q,s},r},j,p,{{q,s}})
LENGUAJES, GRAMÁTICAS y AUTÓMATAS: UN ENFOQUE PRÁCTICO 165

f a b c
--+p {q,s} {q,s} a
P
* {q,s} r p p
r r p p b,c

a
Los estados p y r pertenecen a clases de equivalencia diferentes, por lo
tanto este autómata ya no puede ser reducido. Por tanto, es el Autómata
Finito Determinsta mínimo equivalente a la tercera expresión.

Expresión 4 Y, por último, el mismo proceso para la cuarta expresión:

Ro b*(c + a)[a*(b + c)b*(c + a)]*a*


Da(Ro) Da(b*)(c + a)[a*(b + c)b*(c + a)]*a* + Da((c + a)[a*(b + c)b*(c + a)]*)a*
= Da ((e + a)[a*(b + c)b*(c + a)]*a*)
[a*(b + c)b*(c + a)]*a* = Rl
Db(Ro) = Db(b*)(c + a)[a*(b + c)b*(c + a)]*a* + Db((C + a)[a*(b + c)b*(c + a)]*a*)
= b*(c + a)[a*(b + c)b*(c + a)]*a* = Ro
Dc(Ro) Dc(b*)(c + a)[a*(b + c)b*(c + a)]*a* + Dc((c + a)[a*(b + c)b*(c + a)]*a*)
Dc((c + a)[a*(b + c)b*(c + a)]*a*)
+ c)b*(c + a)]*a* = Rl
[a*(b
Da(Rl) Da([a*(b + c)b*(c + a)]*)a* + Da(a*)
Da(a*(b + c)b*(c + a))[a*(b + c)b*(c + a)]*a* + a*
[Da(a*)(b + c)b*(c + a) + Da((b + c)b*(c + a))][a*(b + c)b*(c + a)]*a* + a*
a*(b + c)b*(c + a)[a*(b + c)b*(c + a)]*a* + a* = R2
Db(Rl) = Db([a*(b + c)b*(c + a)]*)a* + Db(a*)
= Db(a*(b + c)b*(c + a))[a*(b + c)b*(c + a)]*a*
[Db(a*)(b + c)b*(c + a) + Db((b + c)b*(c + a))][a*(b + c)b*(c + a)]*
= b*(c + a)[a*(b + c)b*(c + a)]* = Ro
166 CAPÍTULO 3. GRAMÁTICAS REGULARES y AUTÓMATAS FINITOS

Dc(Rt) Dc([a*(b + e)b*(e + a)]*)


Dc(a*(b + e)b*(e + a))[a*(b + e)b*(e + a)]*
[Dc(a*)(b + e)b*(e + a) + Dc((b + e)b*(e + a))][a*(b + e)b*(c + a)]*
b*(e + a)[a*(b + e)b*(e + a)]* = Ro
Da(R2) Da(a*)(b + e)b*(e + a)[a*(b + e)b*(e + a)]* +
+Da((b + e)b*(e + a)[a*(b + e)b*(e + a)]*)
a*(b + e)b*(e + a)[a*(b + e)b*(e + a)]* = R2
Db(R2) Db(a*)(b + e)b*(e + a)[a*(b + e)b*(e + a)]* +
+Db((b + e)b*(e + a)[a*(b + e)b*(e + a)]*)
b*(e + a)[a*(b + e)b*(e + a)]* = Ro
D c(R2) Dc(a*)(b + e)b*(e + a)[a*(b + e)b*(e + a)]* +
+Dc((b + e)b*(e + a)[a*(b + e)b*(e + a)]*)
b*(e + a)[a*(b + e)b*(e + a)]* = Ro

Se han derivado todas las expresiones que han ido apareciendo al de-
rivar, respecto de todos los símbolos del alfabeto, hasta que ya no han
aparecido expresiones nuevas, sino alguna de las ya existentes. A partir de
las derivaciones anteriores se obtiene la Gramática Lineal por la derecha
correspondiente a la expresión original Ro:

Ro aRllbRoleRllale
Rl aR21bRoleRola
R2 aR21bRoleRola

Ahora se obtiene el Autómata Finito No Determinista correspondiente


a la Gramática Lineal por la derecha obtenida en el paso anterior, que será:
AFND = ({a, b, e}, {Ro, R 1, R2, F}, ¡, Ro , {F})
f a b c
---+ Ro R1,F Ro R1 , F
Rl R 2,F Ro Ro
R2 R2,F Ro Ro
*F
El autómata que se ha obtenido es no determinista, por lo tanto habrá
que convertirlo en su equivalente determinista:
LENGUAJES, GRAMÁTICAS y AUTÓMATAS: UN E NFOQUE PRÁCTICO 167

AF D = ({a , b, e}, {Ro, {R¡ , F} , {R2 , F}} , j , Ro , {{R¡, F} , {R2 , F}})


f a b c
-+ Ro {R¡ , F} Ro {R¡ , F}
*{R¡,F} {R2,F} Ro Ro
*{ R2, F} {R2 , F} Ro Ro
En este caso el autómata aún puede ser redu<:ido. Eliminando el último
estado, y renombrando los estados se obtiene:
AFD = ({a , b, e} , {p , q} , j ,p, {q})

f a b c
-+p q P q
q q p p
b,c
Se puede apreciar cómo este autómata es idéntico al Autómata Finito
~o Determinista simplificado de la primera expresión regular. Por lo tan-
to, al tener ambas expresiones los mismos autómatas asociados (y por lo
tanto isomorfos) éstas serán equivalentes; es decir, representan el mismo
lenguaje.

Ejercicio 13.201
Describir el lenguaje reconocido por el autómata AF = (L:, Q, j, go, F)
donde L: = {a, ba}, Q = {qo , q¡ , q2 , q3} Y f está representada por la tabla:

a b
-+ * qo q¡ qo
q¡ q¡ q2
q2 q3 qo
q3 q3 q3

A partir de las ecuaciones características del autómata se obtendrá la ex-


presión regular aceptada por él. Las ecuaciones características del autómata ·
(eliminando el estado q3 que es el estado vacio) son:
168 CAPÍTULO 3. GRAMÁTICAS REGULARES y AUTÓMATAS FINITOS

Xo bxo + aXI + >.


xl aXI + bX2 + b
X2 bxO + b

Resolviendo las ecuaciones:

y sustituyendo X2 se obtiene:

Xl a*(b(bxo + b) + b) = a*b(bxo + b + >')

Sustituyendo Xl en Xo se obtiene:

Xo bxo + a(a*b(bxo + b + >')) + >.

y resolviendo esta ecuación se obtiene la expresión final:

IXo = (b + aa*bb)*(aa*b(b + >') + >') I


correspondiente a la expresión regular aceptada por el autómata.

Ejercicio 13.211
Diseñar un Autómata Finito Determinista para cada una de las siguientes
expresiones, de forma que el lenguaje de la expresión sea reconocido por su
correspondiente autómata:

1. ab*c

2. a(bc)*bc
LENGUAJES, GRAMÁTICAS y AUTÓMATAS: UN ENFOQUE PRÁCTICO 169

3. a*b(c*a)*

4. cb* + aa*
5. b(a + b)* + cb*

6. a+ac(a+b)*+c(a+b+c)*

Se va solucionar el problema de dos formas distintas: intuitivamente, y


siguiendo un procedimiento de resolución sistemático. Este procedimiento
consta de las siguientes fases:
• Derivar las expresiones regulares
• Obtener la gramática a partir de las derivaciones anteriores
• Obtener el autómata equivalente a la gramática anterior
• Convertir el autómata a su equivalente determinista
• Minimizar dicho autómata (opcional)

1. De forma intuitiva AFl=( {a,b,c },{p,q,r,<p},JI ,p,{r})

JI a b c
--+p q <p <p
q <p q r
*r <p <p <p
<p <p <p <p

La primera expresión la componen todas aquellas palabras que tengan


una a, luego un número arbitrario de bes (o ninguna), y acaban con
una c. Por lo tanto se puede resolver el problema con un autómata
con cuatro estados:

J
170 CAPÍTULO 3. GRAMÁTICAS REGULARES y AUTÓMATAS FINITOS

• El estado p inicial que recogerá la situación de que se empiece


con una a. Para ello se pasa a un estado de rechazo si no se
produce dicha entrada
• El estado q, que recoge la situación de introducir un número
arbitrario de bes, de forma que si se recibe una b se mantiene en
el estado q (de recibir bes), y si se recibe una c se pasa al estado
final. Para recoger perfectamente la situación que describe este
estado es necesario introducir una transición con la a al estado
de rechazo
• El estado r es el estado final, al que se llega al introducirse una
entrada aceptada por el autómata. En este caso si se siguen
introduciendo entradas se pasa a una situación de rechazo, ~
• El estado de rechazo 1;, que es al que se llega cuando se ha
producido una secuencia de entrada incorrecta. Este estado es
un estado absorvente del que no se puede salir

De forma sistemática Se deriva la expresión:

Ro ab*c

Derivando en Ro:

b*c = Rl
Dc{Ro) = 1;

Derivando en R 1 :

Da{Rd
Db{Rl)
Dc{Rd
LENGUAJES, GRAMÁTICAS y AUTÓMATAS: UN ENFOQUE PRÁCTICO 171

La Gramática Lineal por la derecha correspondiente a las derivadas


anteriores sería:

Ro .. -

A partir de esta graática se construye el Autómata equivalente:

f a b c
--7 Ro Rl c/J c/J
Rl c/J Rl F
*F c/J c/J c/J
c/J c/J c/J c/J

2. De forma intuitiva AF2=( {a,b,c },{p,q,r,s },h,p,{ s})

h a b c
-+p q c/J c/J
q c/J r c/J
r c/J c/J s
*8 c/J r c/J
c/J c/J c/J c/J

En este caso se necesitarán 5 estados. Las palabras del lenguaj e


empiezan todas por la letra a, y luego tiene que haber una b. Además.
han de acabar en c. Por lo tanto, se introduce un estado para la a,
otro para la b, y otro final para el hecho de acabar en c. También se
introduce un bucle entre r y s con la combinación b y c, para recoger
la expresión (bc)*. Estos tres, junto con el inicial y el de rechazo,
forman el autómata.
172 CAPÍTULO 3. GRAMÁTICAS REGULARES y AUTÓMATAS FINITOS

De forma sistemática Se deriva la expresión:

Ro a(be)*be

Derivando en RQ:

(be)*be = Rl
Dc(Ro) = <P

Derivando en R 1 :

Dc(Rd = <P
e(be)*be + e = R2

Derivando en R2 :

D b (R2) = <P
(be)* be + >. = R3

Derivando en R3:

Dc(R3) = <P
e(be)*be + e = R2

La Gramática Lineal por la derecha correspondiente a las derivadas


anteriores sería:
LENGUAJES, GRAMÁTICAS y AUTÓMATAS: UN ENFOQUE PRÁCTICO 173

Ro 00-

00 aRl
Rl 00 - bR2
R2 0
00
0-

cR3ic
R3 00-

00 bR2

A partir de esta gramática se construye el Autómata equivalente:

f a b c
---+ Ro Rl <P <P
Rl <P R2 <P
R2 <P <P R3,F
R3 <P R2 <P
*F <P <P <P
<P <P <P <P

Reduciendo a su autómata determinista mínimo equivalente, y re-


nombrando queda:

f a b c
---+p q <P <P
q <P r <P
r <P <P s
*s <P r <P
<P <P <P <P

30 De forma intuitiva AF3=( {a,b,c },{p,q,r},13,p,{r})

13 a b c
-+p P q <P
*q q <P r
r q <P r
<P <P <P <P
174 CAPÍTULO 3. GRAMÁTICAS REGULARES y AUTÓMATAS FINITOS

Para la tercera expresión se necesitarán 4 estados. El primero es el


estado inicial y el que se encarga de recoger la expresión a*, mediante
un bucle con la etiqueta a. Se pasará con la entrada b a otro estado,
que es final, pues el resto de la expresión contiene a >.. Para recoger
el bucle (c*a)*, se necesita un nuevo estado al que se pasará con la
entrada c, y en el que se permanece con la entrada c (esto recoge la
primera parte c*) , y, por último, se volverá a pasar al estado anterior
con la entrada a , para recoger el que se pueda repetir la expresión
varias veces.

De forma sistemática Se deriva la expresión:

Ro a*b{c*a)*

Derivando en Ro:

Da{Ro) a*b{c*a)* = Ro
Db{Ro) (c*a)* = Rl
Dc{Ro) cp

Derivando en R 1 :

Da{Rl) (c*a)* = Rl
Db(R 1 ) cp
Dc{Rl) A[c*a](c*a)* = R2

Derivando en R2:

Da{R2) (c*a)* = Rl
D b {R2) cp
Dc{R2) c*a{c*a)* = R2
LENGUAJES, GRAMÁTI CAS y AUTÓMATAS: UN ENFOQUE PRÁCTICO 175

La Gramática Lineal por la derecha correspondiente a las derivadas


anteriores sería:

Ro .. - aRolbR1lb
Rl .. - aR 1 lcR21a
R2 .. - aR1lcR21a

A partir de esta gramática se construye el Autómata equivalente:

f a b c
----7 Ro Ro Rl,F <P
Rl Rl,F <P R2
R2 Rl ,F <P R2
*F <P <P <P
<P <P <P <P

Reduciendo a su autómata determinista mínimo equivalente, y re-


nombrando queda:

f a b c
----7p P q <P
*q q <P r
r q <P r
<P <P <P <P

4. De forma intuitiva AF4=( {a,b,c },{p,q,r },J4,p,{ q})


176 CAPÍTULO 3. GRAMÁTICAS REGULARES y AUTÓMATAS FINITOS

"CQ
~¿( ~,
f4 a b c
-+p r cp q
*r r cp cp ~ aQ
o~
- p
*q cp q cp
cp cp cp cp
b

a,b,eC~
Al ser la expresión el resultado de la suma de dos expresiones, se
realiza un autómata para cada una de ellas, y se unen en un único
autómata. Para ello solo hay que hacerles compartir el mismo esta-
do inicial y de rechazo. Para el primer caso, expresión cb*, se hace
simplemente con un estado inicial y una transición, etiquetada con
la entrada c, al estado final, en el que se permanece con la entrada
b (figura 3.30(a)). El segundo caso es idéntico, pero la etiqueta del
bucle del estado final es una a, en vez de una b (figura 3.30(b)).

bCQ aCQ

~G
/ a,e /
------ p ------~. b,c

a,b b,~
a,b,cC a,b,cC G
(a) (b)

Figura 3.30: Autómatas que representan a ER.

De forma sistemática Se deriva la expresión:

Ro cb* + aa*
LENGUAJES , GRAMÁTICAS y AUTÓMATAS: UN ENFOQUE PRÁCTICO 177

Derivando en Ro:

Da(Ro)
Db(Ro) o
Dc(Ro) b* = R2

Derivando en R 1 :

Derivando en R2:

La Gramática Lineal por la derecha correspondiente a las derivadas


anteriores sería:

Ro .. -
.. aR11 cR21alc
Rl .... - aR11 a
R2 ..- bR21b

A partir de esta gramática se construye el Autómata equivalente:

f a b c
----+Ro Rl ,F 0 R2,F
Rl Rl ,F 0 0
R2 0 R2,F 0
*F 0 0 0
0 0 0 0

Reduciendo a su autómata determinista mínimo equivalente. y re-


nombrando queda:
178 CAPÍTULO 3. GRAMÁTICAS REGULARES y AUTÓMATAS FINITOS

f a b c
bCQ
--+p q (/) r
~'"
~p ~r-:ca
'(
*q q (/) (/)

,.b,CG~
*r (/) r (/)
(/) (/) (/) (/)

5. De forma intuitiva AF5=( {a,b,c },{p,q,r },!5,p,{ q,r})

15 a b c
-+p (/) q r
*q q q (/)
*r (/) r (/)
(/) (/) (/) (/)

Igual que en el caso anterior, la expresión resultante se compone de


dos expresiones correspondientes a dos autómatas. Una de ellas, cb*,
es idéntica a una de las del caso anterior. La otra, b(a + b)*, consta
de dos estados uno inicial, y otro final, al que se pasa con la entrada
b, y en el que se permanece con a y con b (lo que supone un bucle
que representa la expresión (a + b)*):

a,b~
Q
Y
--0:
~~ e

a,b,cC 8
LENGUAJES, GRAMÁTICAS y AUTÓMATAS: UN ENFOQUE PRÁCTICO 179

De forma sistemática Se deriva la expresión:

Ro b(a + b)* + cb*

Derivando en Ro:

Da(Ro) = 0
Db(Ro) = (a+b)*=Rl
Dc(Ro) b* = R2

Derivando en R 1 :

Da(Rl) = (a+b)*=Rl
Db(Rl) = (a+b)*=Rl
Dc(Rl) = 0

Derivando en R 2:

D a(R2) = D c(R2) = 0
Db(R2) b* = R2

La Gramática Lineal por la derecha correspondiente a las derivadas


anteriores sería:

Ro 00- bRllcR21blc
Rl 00- aRllbRl lalb
R2 00- bR21b

A partir de esta gramática se construye el Autómata equivalente:


180 CAPÍTULO 3. GRAMÁTICAS REGULARES y AUTÓMATAS FINITOS

f a b c
--t Ro 0 Rl ,F R 2,F
Rl Rl ,F Rl,F 0
R2 0 R2,F 0
*F 0 0 0
0 0 0 0
Reduciendo a su Autómata Finito Determinista mínimo equivalente,
y renombrando queda:

a,b~

--tp
f
0 q r
a b c
~
o e b

· o-:P
*q q q 0
*r 0 r 0
0 0 0 0
a,b,eC~

6. De forma intuitiva AF6=( {a,b,c },{p,q,r,s },J6,P,{ q,r,s})

. b.,CQ
16 a b c /
--~~
--+p
*q
*r
*8 0
r
q
0 0
S
0
q

S
q
q
s b~
~b.'C8~ t
;q,
0 0 0 0
eQ
O
a,b

En este caso la expresión resultante se compone de tres expresiones:

(a) a.- Es simplemete un estado inicial del cual se transita a uno


final con la entrada a:
LENGUAJES , GRAMÁTICAS y AUTÓMATAS: UN ENFOQUE PRÁCTICO 181

o
----~
b~
/1 a,b,c

a,b,cC G
(b) ac(ab)*.- Desde el estado final se pasa a uno intermedio con la
entrada a, y al estado final desde el intermedio con la entrada c.
El bucle consiste en una transición de permanencia en el estado
final con las entradas a y b:

/~Q
~b Q
b,c / .

a.b.cC8 e
(c) c(a + b + c)* .- Dos estados, el inicial y el final al que se accede
con la entrada c. El bucle se realiza permaneciendo en el estado
final con las entradas a, b y c, similar a como se ha realizado en
apartados anteriores de este mismo ejercicio:

'b'O
---r;l/;/.
a,b ~
~a,b,cC~

De forma sistemática Se deriva la expresión:


182 CAPÍTULO 3. GRAMÁTICAS REGULARES y AUTÓMATAS FINITOS

Ro a + ac(a + b)* + c(a + b + c)*

Derivando en Ro:

Da(Ro) >. + c(a + b)* = Rl


Db(Ro) o
Dc(Ro) (a + b + e) * = R2

Derivando en R 1 :

Da(Rt} Db(Rt} = 0
Dc(Rt} = (a + b)* = R3

Derivando en R2:

Da(R2) (a + b + c)* = R2
Db(R2) = (a+b+c)*=R2
D c(R 2) (a + b + c)* = R2

Derivando en R 3 :

Da(R3) = (a + b)* = R3
D b(R3) = (a + b)* = R3
Dc (R 3 ) 0
L ENGUAJES, GRAMÁTI CAS y AUTÓMATAS: UN ENFOQUE PRÁCTICO 183

La Gramática Lineal por la derecha correspondiente a las derivadas


anteriores sería:

Ro .. - aRllcR21alc
Rl .... - CR31c
R2 .. - aR21bR21cR2lalblc
R3 .. - aR31bR31alb

A partir de esta gramática se construye el Autómata equivalente:

*F 0 0 0
o 0 0 0

Reduciendo a su autómata determinista mínimo equivalente, y re-


nombrando queda:

f a b c a
---+p q 0 r
*q
*r
0 0
r r
s
r
b GJ
',b"CG~ Q
*s s0 s
0 0 0 0

O
a,b

l
184 CAPÍTULO 3. GRAMÁTICAS REGULARES y AUTÓMATAS FINITOS

Ejercicio 13.221
Dado el siguiente Autómata Finito Determinista:

AFD={ {a,b },{p,q,r},f,p,{ q})

f a b
-tp q r
*q p r
r p r

Determinar formalmente el lenguaje aceptado por dicho autómata.

En primer lugar se hallan las ecuaciones fundamentales del autómata:

Xo aX I + bX2+ a
Xl aXo + bX2
X2 aXo + bX2

Se obtiene la solución para X 2 :

X2 = b*(aXo)

Sustituyendo X 2 en las ecuaciones anteriores se obtendría:

Xo aXI + bb*aXo + a
Xl aXo + bb*aXo
Como en esta última ecuación de Xl no aparece este mismo término a
la derecha de la misma, se puede sustituir en la ecuación de X o, quedando:

Xo = a(aXo + bb*aXo) + bb*aXo + a


LENGUAJES , GRAMÁTICAS y AUTÓMATAS: UN ENFOQUE PRÁCTICO 185

Despejando, se obtiene:

Xo = (aa + abb*a + bb*a)Xo + a


Xo = (ab*a + bb*a)Xo + a

Resolviendo esta última ecuación, quedará:

Xo = (ab*a + bb*a)*a
que será la expresión equivalente al lenguaje aceptado por el autómata
del problema:

IL(AF D) = (ab*a + bb*a)*a I

- Ejercicio 13.231
Dados los siguientes Autómatas Finitos Deterministas:

AFD1={ {a,b,c},{ A,B},fmI,A,{B})

fmI a b c
-tA A B A
*B B B B

AFD2={ {a,b,c},{A,B},fm2,A,{B})

f m2 a b c
-tA B A A
*B B B B

Determinar el lenguaje aceptado por cada uno de ellos

En primer lugar habrá que hallar y resolver las ecuaciones fundamen-


tales de cada uno de los autómatas mínimos:
186 CAPÍTULO 3. GRAMÁTICAS REGULARES y AUTÓMATAS FINITOS

AFDl

Xo (a+c)XO+bXI+b
Xl = (a+b+c)X I +a+b+c

Resolviendo Xl:

Xl = (a+b+c)*(a+b+c)

Sustituyendo en X o quedará:

X o = (a + c)Xo + b(a + b + c)*(a + b + c) + b


y resolviendo esta última ecuación se obtendrá:

X o = (a + c) * (b( a + b + c) * (a + b + c) + b)
Simplificando:

X o = (a + c) *b[ (a + b + c) * (a + b + c) + Al
Como se sabe a* a +A= a*, simplificando mediante esta regla se ob-
tiene como resultado:

IL(AFDI) = (a + c)*b(a + b + c)* I


AFD2

Las ecuaciones fundamentales del segundo autómata son:

Xo = aX I + (b + c)Xo + a
Xl = (a+b+c)XI+a+b+c

Resolviendo la última se obtendrá:

Xl = (a+b+c)*(a+b+c)

Sustituyendo en Xo:
LENGUAJES, GRAMÁTICAS y AUTÓMATAS: UN ENFOQUE PRÁCTICO 187

X o = (b + c)Xo + a(a + b + c)*(a + b + c) +a


Que al resolverse se obtendrá la solución final:

X o = (b+c)*(a(a+b+c)*(a+b+c) +a)
Que simplificado quedará:

X o = (b + c)*a(a + b + c)*
Luego:

IL(AFD2) = (b + c)*a(a + b + c)* I

Ejercicio 13.241
Dadas las expresiones regulares siguientes:
1. baa* + c*(a + b)
2. ba* + c*(a + b)
Obtener la gramática regular que las genera

Se realizan los mismos pasos que en el ejercicio anterior. Para la primera


expresión las derivadas son:
Ro = baa* + c*(a + b)
Da(Ro) A
Db(Ro) = aa* + A = a* = Rl
Dc(Ro) = c*(a + b) = R2
Da(Rd = a* = Rl
Db(Rd = 0
Dc(Rd 0
D a (R2) A
D b (R2) A
D c (R 2 ) = c*(a + b) = R 2
188 CAPÍTULO 3. GRAMÁTICAS REGULARES y AUTÓMATAS FINITOS

A partir de las derivadas se obtendrá la Gramática Lineal por la derecha


correspondiente a la expresión:

Ro bR¡jcR2lalb
Rl = aR1la
R2 = cR21a

Se realiza el mismo proceso para la segunda expresión:

Ro = 00* + c*(a + b)
Da(Ro) A
Db(Ro) = a* = Rl
Dc(Ro) = c*(a + b) = R2
Da(R¡) = a* = Rl
Db(R¡) = 0
Dc(R¡) = 0
Da(R2) = A
Db(R2) = A
Dc( R2) = c*(a + b) = R2

Se puede apreciar cómo se han obtenido idénticos resultados de deri-


vadas que en la expresión anterior. Así pues, si se sigue el proceso, éste
será en todo igual al de la primera expresión, lo cual demuestra que ambas
expresiones son equivalentes, y son generadas por la misma gramática.
LENGUAJES, GRAMÁTICAS y AUTÓMATAS: UN ENFOQUE PRÁCTICO 189

Ejercicio 13.251
Sea el siguiente Autómata Finito Determinista:
AFD = ({a,b},{p,q,r,s,t,u,v},¡,p,{r,t})
f a b
-+p q r
q s v
*r v s
s t q
*t q u
u r v
v u q

Determinar el lenguaje aceptado por dicho autómata.

En primer lugar se hallará el autómata mínimo equivalente. Para ello,


se determina, en primer lugar, el conjunto cociente:

Q/Eo = {{p,q,s,u,v},{r,t}}
Q/EI = {{p},{q,v},{s,u},{r,t}}
Q/E = Q/EI

Si se redenomina p -+ p , {q,v} -+ q, {s,u} -+ r y {r,t} -+ s, el autómata


mínimo equivalente quedará:
AFDM = ({a,b},{p,q,r,s},j,p,{s})
f a b
-+p
q
q
r
S

q --'r~'
r s q ~
b,c
*s q r

A partir de este autómata se hallan sus ecuaciones fundamentales:

Xo = aX I +bX3 +b
190 CAPÍTULO 3. GRAMÁTICAS REGULARES y AUTÓMATAS FINITOS

Xl aX2 + bXI
X2 aX3 +bXI +a
X3 aX I + bX2
Resolviéndolas quedaría:

X2 aaXI + abX2 + bXI + a


X2 (ab)*(aaXI + bX I + a)
Xl a(ab)*(aaXI + bX I + a) + bX I
Xl a(ab)*aaXI + a(ab)*bX I + a(ab)*a + bX1
Xl = (a(ab)*aa + a(ab)*b + b)X I + a(ab)*a
Xl (a(ab)*aa + a(ab)*b + b)*a(ab)*a

Sustituyendo las expresiones correspondientes en X o y resolviéndolo


quedaría:

Xo aX I+ baXI + bbX2 + b = (a + ba)X I + bbX2 + b


Xo (a + ba)XI + bb(ab)*(aaX I + bXI + a) + b
Xo (a + ba)X I + bb(ab)*aaX I + bb(ab)*bX I + bb(ab)*a + b
Xo (a + b(ba) *a + bb(ab)*b)XI + bb(ab)*a + b

Sustituyendo en X o el valor de Xl se obtendría:

Xo = [a+ b(ba)*a + bb(ab)*b][(a(ab)*aa + a(ab)*b + b)*a(ab)*a] +


+bb(ab) *a + b

Que será el resultado final y la expresión del lenguaje aceptado por


el autómata. Se deja como ejercicio comprobar cómo las siguientes las
palabras de dicho lenguaje son aceptadas por el autómata:

• bbabbbbaaaaa

• bbabbaabababbbaaaaababa

• babaa
LENGUAJES, GRAMÁTICAS y AUTÓMATAS: UN ENFOQUE PRÁCTICO 191

• aaaaaa

• bba
o que las siguientes, que no pertenecen al lenguaje, no son aceptadas
por el autómata

• Cualquier palabra que acabe en b excepto la palabra b

• bbabbbbaaa

• baaba

• abbbbababababaaa

Ejercicio 13.261'
Indicar cuáles son los lenguajes aceptados por cada uno de los siguientes
autómatas:
AF1={ {a,b },{ A,B,C}.J¡.A,{C})

JI a b
---tA e A
B B A
a
*e e B

AF2={ {a,b },{A,B,C,D},12.A,{D})

12 a b
---tA B O
B B e
e D B
*o o B
192 CAPÍTULO 3. GRAMÁTICAS REGULARES y AUTÓMATAS FINITOS

AF3=( {a,b},{A,B},h,A,{B})

b _ a ...
~A

*B
h a
B
B
b
A
A
O
.~8 ________ GD·
b

Se hallan y se resuelven las ecuaciones fundamentales de los autómatas:

1. Para el primer autómata las ecuaciones fundamentales serán:

Xo = aX2 +bXo +a
Xl aXI + bXo
X2 aX2 + bX I + a

Se resuelve en X 2 y Xl:

Xl a*bXo
X2 = a*(bX I + a)

Se sustituyen Xl y X 2 en las expresiones en que aparecen:

X2 a*(ba*bXo + a)
Xo aa*(ba*bXo + a) + bXo + a
Xo = (aa*ba*b + b)Xo + aa* + a
Xo (aa*ba*b + b)Xo + aa*

Por último, resolviendo para X o:

Xo = (aa*ba*b + b)*aa*

ISolución: (aa*ba*b + b)*aa* I


LENGUAJES, GRAMÁTICAS y AUTÓMATAS: UN ENFOQUE PRÁCTICO 193

2. Para el segundo autómata las ecuaciones fundamentales serán:

Xo = aX I + bX3 + b
Xl = aX I + bX2
X2 = aX3 +bX I +a
X3 aX3 +bX I +a

Se resuelve en X 3 y se sustituye su valor en X 2 :

X3 a*(bX I + a)
X2 = aa*bX I+ aa*a + bX I + a =
(aa*b + b)XI + aa*a + a = a*bX I + aa*

Sustituyendo X 2 en Xl y resolviendo Xl se obtendrá:

Xl aX I + ba*bXI + baa*
Xl (a + ba*b)X I + baa*
Xl (a + ba*b)*baa*

Sustituyendo Xl en X o y X 3 , sustituyendo a su vez X 3 en X o y


simplificando se obtendrá:

Xo = a(a + ba*b)*baa* + ba*bX I + ba*a + b

Por último, resolviendo para Xo:

Xo = a(a + ba*b)*baa* + ba*b(a + ba*b)*baa* + ba*

ISolución: a(a + ba*b)*baa* + ba*b(a + ba*b)*baa* + ba* I


3. Para el tercer autómata las ecuaciones fundamentales serán:

Xo aX I + bXo + a
Xl aX l + bXo + a
194 CAPÍTULO 3. GRAMÁTICAS REGULARES y AUTÓMATAS FINITOS

Se resuelve en Xl, se sustituye su valor en X o y se simplifica:

Xl a*(bXo + a)
Xo aa*bXo + a*a + bXo + a
Xo (b + aa*b)Xo + aa*

Por último, resolviendo para X o:

Xo (b + aa* b)* aa* = (a* b)* aa*

ISolución: (a*b)*aa* I
Otra forma de solucionar esta última expresión sería sustituyendo en
Xo , Xl por Xo , ya que, como se puede apreciar, Xo = Xl. De esta
forma quedaría la expresión:

Xo aXo + bXo + a
Xo = (a + b)Xo + a

y resolviendo queda:

Xo (a+b)*a

ISolución: (a + b)*a I
Se estudiará a continuación por qué las dos expresiones anteriores son
equivalentes. Se sabe que (a* {3)* = (a + ¡J)*. Por lo tanto, la primera
expresión podría reescribirse como (a + b)*aa*. Esta expresión es
equivalente a la anterior, ya que es la expresión de todas aquellas
palabras compuestas por a y b de forma arbitraria, pero con la única
restricción de que acaben en a, que es exactamente lo mismo que
recoge la expresión anterior.
LENGUAJES, GRAMÁTICAS y AUTÓMATAS: UN ENFOQUE PRÁCTICO 195

Ejercicio 13.271
Construir el Autómata Finito equivalente al dispositivo de McCulloch-Pitts
de la figura 3.31 y obtener el lenguaje que reconoce.

Figura 3.31: Dispositivo de McCulloch-Pitts.

Se supone que sólo una una de las posibles entradas (a, b) estará activa
en un momento dado. Como existen dos células se tienen 4 posibles estados
(2 2 ). A continuación se muestra la tabla de transición del dispositivo (se
han eliminado aquellos estados que son inaccesibles):

f a b
00 10 00
01 10 10
10 10 01

Renombrando los estados (qO = 00, ql = 01 , q2 = 10) Y sabiendo que el


estado q2 es el estado final se obtiene el autómata de la figura 3.32.

Figura 3.32: Autómata correspondiente

Para obtener el lenguaje que reconoce se utilizarán las ecuaciones ca-


racterísticas del autómata, las cuales son:
196 CAPÍTULO 3. GRAMÁTICAS REGULARES y AUTÓMATAS FINITOS

Xo = bxo + aX2 + a
Xl aX2 + bX2 + a + b
X2 = aX2 + bx¡ + a

Sustituyendo Xl en la ecuación de X2 se obtiene:

X2 = (a + b(a + b))*(b(a + b)a)


y sustituyendo X2 en Xo se obtiene la expresión final:

Xo = b*(a(a + b(a + b))*(b(a + b)a) + a)


IXo = b*(a(a + b(a + b))*(b(a + b)a) + a) I

Ejercicio 13.281
Construir el Autómata Finito equivalente al dispositivo de McCulloch-Pitts
de la figura 3.33 y el lenguaje que acepta.
a b

C'-----8_A_I ~ I
r
1

Figura 3.33: Dispositivo de McCulloch-Pitts

Se tienen dos células las cuales dan lugar a 4 estados posibles en el


autómata. La tabla de transición del dispositivo es:

f a b
00 10 00
10 10 11
11 1<11 11
LENGUAJES, GRAMÁTICAS y AUTÓMATAS: UN ENFOQUE PRÁCTICO 191

Figura 3.34: Autómata equivalente

Renombrando los estados (qO = 00, ql = 10, q2 = 11) se obtiene el


autómata de la figura 3.34. A partir de las ecuaciones características del
automáta se obtiene el lenguaje que reconoce:

Xo = aXI + bxo
Xl = aXI + bX2 + b
X2 bX2 + aXI + b

Resolviendo X2 se obtiene:

y sustituyendo X2 en Xl:

Por último, sustituyendo Xl en Xo:

IXo = b*(a(b*a)*bb*) I
198 CAPÍTULO 3. GRAMÁTICAS REGULARES y AUTÓMATAS FINITOS

Ejercicio 13.291
Obtener la expresión regular que reconoce el dispositivo de McCulloch-Pitts
de la figura 3.35.

~I
Figura 3.35: Dispositivo de McCulloch-Pitts.

Puesto que existen cuatro células intermedias , se tienen 16 posibles


estados en el autómata. A continuación, se muestra la tabla de transición
con los estados inaccesibles eliminados (el orden para la construcción de los
estados es ACBDE).

f a b
00000 11000 00000
11000 11000 10110
10110 11000 10111
10111 11001 10111
11001 11000 10110

Renombrando los estados:

qo = OOOOO ,ql = 11000,q2 = 10110, q3 = 10111 , Q4 = 11001


se obtiene el autómata de la figura 3.36.
LENGUAJES, GRAMÁTICAS y AUTÓMATAS: UN ENFOQUE PRÁCTICO 199

A partir de las ecuaciones características del automáta se obtiene el


lenguaje que reconoce:

Xo aXI + bxO
Xl = aXI + bX2
X2 aXI + bX3 + b
X3 bX3 + aX4 + a + b
X4 aX2 + aXI

Figura 3.36: Autómata equivalente.

Sustituyendo X4 en X3:

Resolviendo X2 se tiene:

Sustituyendo X2 en Xl se obtiene:

Xl = (a + b(bb*aa)*a + b(bb*aa) * bb*aa)*b(bb*aa)*(bb*a + bb*)


Resolviendo Xo:

Xo=bxo + a(a + b(bb*aa)*a + b(bb*aa) * bb*aa)*b(bb*aa)*(bb*a + bb*)


=b*a(a + b(bb*aa)*a + b(bb*aa) * bb*aa)*b(bb*aa)*(bb*a + bb*)

y por último, se obtiene la expresión resultado:

I Xo = b*a(a + b(bb*aa)*a + b(bb*aa) * bb*aa)*b(bb*aa)*(bb*a + bb*) I


200 CAPÍTULO 3. GRAMÁTICAS REGULARES y AUTÓMATAS FINITOS

Ejercicio 13.301 \

Dado el Autómata representado por el diagrama de la figura 3.37 construir


el dispositivo de McCulloch-Pitts equivalente.

-
a

Figura 3.37: Autómata a transformar.

Como se tienen cuatro estados y el alfabeto contiene dos símbolos, se


tendrían las siguientes células intermedias: Pa,Pb, qa, qb, Ta , Tb, Sa, Sb. El dis-
positivo de McCulloch-Pitts se muestra en la figura 3.38.

=W

Figura 3.38: Dispositivo de McCulloch-Pitts.

Ejercicio 13.311
Un robot se encuentra en una casa con tres habitaciones interconectadas
entre sí. Dispone de dos operaciones: moverse a la habitación de la izquierda
(J), y moverse a la habitación de la derecha (D) . Estas dos operaciones no son
exactas, con lo que al estar en una habitación h i y realizar la misma operación,
no siempre llega a la misma habitación hj. El robot termina su recorrido con
éxito si termina en la habitación h3 al recibir una secuencia de órdenes, que
pueden ser 1 ó D. El recorrido aleatorio que ha efectuado hasta el momento
ha sido el siguiente:
LENGUAJES , GRAMÁTICAS y AUTÓMATAS: UN ENFOQUE PRÁCTICO 201

Se pide:

1. Describir el autómata probabilístico que modeliza el comportamiento de


dicho entorno.

2. Si empieza en la habitación h 2 , y efectúa dos movimientos a la derecha,


¿tendría éxito?

3. Si empieza en la habitación h1 Ó en la h3 de forma equiprobable, y


efectúa un movimiento a la derecha seguido de otro a la izquierda, ¿dónde
terminaría?

1. Para modelizarlo por un autómata probabilístico, se puede definir


como:

AF P = (~ , Q, M, P(O) , F)

donde

• ~ = {I , D} , ya que las entradas que recibe el robot es moverse


a la derecha (D) o a la izquierda (1).
• Q = {h 1 , h2 , h3}, debido a que los estados posibles son las habi-
taciones donde puede estar en un determinado momento.
• M = {M(I) ,M(D)}, donde

M(1) = e/ ~
3 1/3
O
1
y)
Y

~ ~
O
M(D) ( O
1/2 O It)
202 CAPÍTULO 3. GRAMÁTICAS REGULARES y AUTÓMATAS FINITOS

Estas matrices de probabilidades de transición se obtienen ha-


ciendo un estudio de frecuencias de las transiciones. Por ejem-
plo, M l l (1) = 1/3 debido a que después de estar tres veces en
el estado h 1 y recibir la misma entrada (operación moverse a la
izquierda), ha llegado sólo una vez a la misma habitación h 1 .
• P(O) será un vector de tres componentes que especificará la(s)
habitación(es) de la(s) que parte .
• F = {h3}, ya que la habitación h3 se considera éxito.

2. Si empieza en la habitación h 2 , el vector de estados inicial será:

P(O) = (O 1 O)
ya que la probabilidad de que esté inicialmente en las habitaciones
h 1 y h3 es nula y hay una probabilidad igual a 1 de que esté en la
habitación h 2 . En ese caso, las transiciones con la entrada DD, serán:

P(DD) P(O) x M(D) x M(D) =

( ) ( J2)
O O 1 O O
(O 1 O) x 1 O O x 1 O
1/2 O 1/2 1/2 O

)
O O 1
( 1 O O) x
( 1 O O
1/2 O 1/2
(O O 1)

Como la probabilidad de estar en el estado h3 es 1, al final seguro que


se encuentra en esa habitación, con lo que tiene éxito.

3. Si empieza en la habitación h 1 Ó h 3 , el vector de estados inicial será:


P(O) = (1/2 O 1/2), ya que la probabilidad de que esté inicial-
mente en las habitaciones h 1 y h3 es igual y hay una probabilidad
nula de que esté en la habitación h 2 . En ese caso, las transiciones con
la entrada DI, serán:
LENGUAJES, GRAMÁTICAS y AUTÓMATAS: UN ENFOQUE PRÁCTICO 203

P(DI) P(O) x M(D) x M(I) =

~
1/3
= (1/2 O 1/2) x ( O
1/2 1
3
= (1/4 O 3/4) x ( li

= (1/12 10/12 1/12)

En este caso, tendría mucha probabilidad (10/12) de estar en la ha-


bitación h 2 , aunque no es seguro.

Ejercicio 13.321
Dado el AFND de la figura adjunta. se pide pasarlo al autómata proba-
bilístico equivalente.

Primero se debe pasar a AFD , con lo que quedaría el siguiente AFD:


204 CAPÍTULO 3. GRAMÁTICAS REGULARES y AUTÓMATAS FINITOS

f a 1 2
~ *{qO,q¡} {qO, ql} {ql, q2} {q¡}
*{ql, q2} {qO, ql} {ql, q2} {q¡}
*{ql} {qO, ql} {q2} {q¡}
{q2} 0 {ql, q2} {q¡}
0 0 0 0
Renombrando con Qo = {qO,q¡}, ql = {ql}, q2 = {q2}, q3 = {ql,q2}, y
q4 = 0, quedaría como:

AFD = ({a,1,2},{qo,ql,q2,q3,qÜ,f,Qo,{qO,ql,q3})
donde f:

f a 1 2
~ *qo qo q3 ql
*ql qo q2 ql
q2 q4 q3 ql
*q3 qo q3 ql
q4 q4 q4 q4
A continuación, el AFP se definirá como:

AF P = ({a, 1, 2}, {qO, ql, q2, q3, q4}, M, p(a), {qO, ql, q3})
donde

1 a a a a)
• p(a) = (

• M = {M(a), M(1), M(2)}, donde

1 a a a a
1 a a a a
M(a) = a a a o 1
1 o a a a
a a a o 1

a a a 1 a
o o 1 o o
M(l) = o a a 1 a
o o a 1 o
a a a a 1
I 1

LENGUAJES, GRAMÁTICAS y AUTÓMATAS: UN ENFOQUE PRÁCTICO 205

O 1 O O O
O 1 O O O
M(2) = O 1 O O O
O 1 O O O
O O O O 1

Ejercicio 13.331
Dadas las expresiones regulares siguientes:

1. a(ba)* + c(a* + b)*


2. c(a*b)*a* + (ab)*a
Comprobar formalmente si son equivalentes.

Apartado 1
En primer lugar se deriva la primera expresión de forma sucesiva obte-
niéndose:

Ro a(ba)* + c(a* + b)*


Da(Ro) = (ba)* = Rl
Db(Ro) = 0
Dc(Ro) = (a* + b)* = R2
Da(Rd = 0
Db(Rd a(ba)* = R3
Dc(R 1 ) 0
D a(R2) Da(a* + b)(a* + b)* = (Da(a*) + Da(b))(a* + b)* =
= a*(a* + b)* = R4
D b(R2) (a* + b)* = R2
D c(R2) 0
Da(R3) = (ba)* = Rl
D b(R3) = 0
206 CAPÍTULO 3. GRAMÁTICAS REGULARES y AUTÓMATAS FINITOS

Dc(R3) 0
D a (R4) = a*(a* + b)* + a*(a* + b)* = R4
Db(R4) = Db(R2) = R2
Dc( R4) = 0
Se han ido derivando todas las expresiones que han ido apareciendo
en cada derivación sucesiva, respecto de todos los símbolos del alfabeto,
hasta que ya no han aparecido expresiones nuevas, sino alguna de las ya
existentes. A partir de las derivaciones anteriores se obtiene la Gramática
Lineal por la derecha correspondiente a la expresión original Ro:

Ro = aRllcR21alc
Rl = bR3
R2 = aR41bR21alb
R3 = aR1la
R4 = aR41bR21alb

A continuación se transforma la Gramática Lineal por la derecha obte-


nida anteriormente en una Gramática Lineal por la izquierda. Para ello,
se construye en primer lugar el grafo relativo a la Gramática Lineal por la
derecha:
a

~G~:rb( a

a,~ ¡',b (\
~ b-----=--~
~ a

A partir de este último grafo se obtiene uno nuevo intercambiando los


nodos de Ro y A, y cambiando el sentido de todas las flechas, generando el
grafo de la figura 3.39.
A partir de este nuevo grafo se puede construir la Gramática Lineal por
la izquierda obteniéndose:
LENGUAJES, GRAMÁTICAS y AUTÓMATAS: UN ENFOQUE PRÁCTICO 207

~4,b Rl
(0-- e ~ b a

RO~

Figura 3039: Grafo que representa a una Gramática Lineal.

Ro 00-
R3 a lR 2alR2blR4alR4blalc
Rl 00-
R3 a la
R2 0 0-
R2 blR 4blc
R3 0
00
0-

R1b
R4 0 0-
0 0
R4 a lR 2a

A continuación, se obtiene el Autómata Finito No Determinista co-


rrespondiente a la Gramática Lineal por la izquierda obtenida en el paso
anterior, que será:

AFND = ({a,b,c},{Ro,R 1,R2,R3 ,R4,p,q},j,p,{Ro})


f a b c
--tp {Ro,Rt} q Ro,R2
*Ro q q q
Rl q R3 q
R2 R o,R4 Ro,R2 q
R3 Ro,R 1 q q
R4 Ro,R4 Ro,R2 q
q q q q

Se puede apreciar cómo los estados R2 y R4 son equivalentes así pues


para simplificar se puede eliminar el estado R4 sustituyéndolo en todas
partes donde aparezca por R20 Por último se convierte el Autómata Finito
No Determinista en otro equivalente determinista, quedándo:
208 CAPÍTULO 3. GRAMÁTICAS REGULARES y AUTÓMATAS FINITOS

f a b c
-+p {Ro,Rd q {Ro,R2}
*{Ro,Rd q R3 q
*{Ro, R2} {Ro,R2} {Ro , R2} q
R3 {Ro,Rd q q
q q q q

Apartado 2

Se realiza idéntico proceso con la segunda expresión regular. En primer


lugar, se deriva de forma sucesiva obteniéndose:

Ro c(a*b)*a* + (ab)*a
Da(Ro) Da[(ab)*]a + Da(a) + 0 =
b(ab)*a +,x = (ba)* = Rl
Db(Ro) = Db[(ab)*]a + 0 + 0 = 0
Dc(Ro) (a*b)*a* = R2
Da(R¡) = 0
Db(R¡) = a(ba)* = R3
Dc(R¡) = 0
D a(R2) Da[(a*b)*]a* + Da[a*] = Da[a*b](a*b)*a* + a* =
a*b(a*b)*a* + a* = 2(a*b)*a* = R2
D b(R2) Db[(a*b)*]a* + 0 = Db[a*b](a*b)*a* =
'x(a*b)*a* = R2
D c(R2) 0
Da(R3) (ba)* = Rl
D b(R3) = 0
Dc(R3) 0
LENGUAJES, GRAMÁTICAS y AUTÓMATAS: UN ENFOQUE PRÁCTICO 209

Igual que en el apartado anterior, se obtiene la gramática correspon-


diente:

Ro .. - aRllcR21alc
Rl .. - bR3
R2 .. - aR21bR21alb
R3 .... - aRlla

A continuación, se transforma la Gramática Lineal por la derecha ob-


tenida anteriormente en la Gramática Lineal por la izquierda siguiente:

Ro .. - R3 a lR 2alR2blalc
Rl .. - R3 a la
R2 .... - R 2alR2blc
R3 .. - R1b

Seguidamente, se obtiene el Autómata Finito No Determinista corres-


pondiente a la Gramática Lineal por la izquierda obtenida en el paso ante-
rior, que será:

AFND = ({a,b,c},{Ro,Rl,R2,R3 , p,q},!,p,{Ro})

f a b c
-+p Ro,R 1 q Ro , R 2
*Ro q q q
Rl q R3 q
R2 Ro,R2 Ro,R2 q
R3 Ro,Rl q q
q q q q

Se puede apreciar cómo este autómata es idéntico al Autómata Finito


No Determinista simplificado de la primera expresión regular. Por lo tanto,
al tener ambas expresiones los mismos autómatas asociados, éstas serán
equivalentes; es decir, representan el mismo lenguaje.

.J~
210 CAPÍTULO 3. GRAMÁTICAS REGULARES y AUTÓMATAS FINITOS

Para comprobar la validez de ambos métodos, se va a solucionar el


ejercicio sin convertir las gramáticas, obteniendo el autómata a partir de la
Gramática Lineal por la izquierda anterior. Dicho autómata será:
AFND = ({a, b,e}, {Ro, R 1, R2, R3, F}, j, Ro , {F})
..

f a b c
-+ Ro R1 , F R2 , F
Rl R3
R2 R2 , F R 2,F
R3 R1,F
*F

Se convierte en Autómata Finito Determinista:


AFD = ({a , b, e}, {Ro , {Rl, F} , {R2, F} , R3, 0} , j, Ro , {{R 1, F} , {R2 , F}})

f a b c
-+ Ro {Rl,F} {R2, F}
{R 1, F} R3
{R2,f} {R2,F} {R 2, F}
R3 {R1 , F}
0 0 0 0

Se puede comprobar que este autómata es isomorfo al del primer apar-


tado.

Ejercicio 13.341
Demostrar formalmente si la expresión regular Ro = 11*(10)*0 describe el
lenguaje aceptado por el autómata de la figura 3.40.

Puede haber varias formas de realizar la demostración. Dos posibles


formas de hacerlo son:
LENGUAJES, GRAMÁTICAS y AUTÓMATAS: UN ENFOQUE PRÁCTICO 211

Figura 3.40: Autómata Finito.

1. Obtener el autómata mínimo que reconoce el lenguaje descrito por la


expresión regular, obtener el autómata mínimo del autómata dado en
la figura, y luego demostrar que son equivalentes.

2. Obtener la expresión regular del autómata dado en la figura y demos-


trar que es la misma expresión regular que la dada como entrada.

Se va a desarrollar la segunda forma, aunque cualquiera de ellas sería


válida. Para ello, lo primero que hay que hacer es eliminar las transiciones-
,x, ya que, si no, la fórmula de obtención de la expresión regular, X = A * . B ,
no es aplicable. Por tanto, al transformar el Autómata Finito No Deter-
minista en el determinista equivalente, quedará la función de transición f
como:

f O 1
{qO ,q6} 0 {ql,q5}
0 0 0
{ql ,q5} {q2} {ql,q3 ,q5}
* {q2} 0 0
{Ql,Q3 ,q5} {Q2,Q4 ,Q5} {Ql ,Q3 ,Q5}
* {Q2,Q4,Q5} {Q2} {Q3}
{Q3} {Q4,Q5} 0
{Q4,Q5} {Q2} {Q3}

Renombrando:

. J,_
212 CAPÍTULO 3. GRAMÁTICAS REGULARES y AUTÓMATAS FINITOS

f O 1
qo ql q2
ql ql ql
q2 q3 q4
* q3 ql ql
q4 q5 q4
* q5 q3 q6
q6 q7 ql
q7 q3 q6

A continuación, se escriben las ecuaciones características:

Xo = OXI +lx2
Xl = OXI + 1XI
X2 = OX3+ 1x 4+ 0
X3 = OXI +IXI
X4 = OX5+1x4+0
X5 = OX3+ 1x6+ 0
X6 = OX7+ 1x I
X7 = OX3+ 1x6+ 0

Resolviendo las ecuaciones:

Xl = (O+I)XI +0=(0+1)*0=0
Xo = 1X2
X3 = 0
X2 = 1x4+0
X6 = OX7
X7 = lx6+0=lOx7+0=(1O)*0
X6 = 0(10)*0
X5 = 1x6+0=1O(10)*0+0=[10(10)*+.x]0=(1O)*0
X4 = 0(1O)*0+lx4+0=1*[0(1O)*0+0]
X2 = 11*[0(10)*0+0]+0=11*0(10)*0+11*0+0=11*0(10)*0+[11 *+.x]o=
= 11*0(10)*0+1*0=1* 10(10)*0+ 1*0=1 *[10(10)* +.x]0=1 *(10)*0
Xo = 11*(10)*0 e.q.d.
LENGUAJES , GRAMÁTICAS y AUTÓMATAS: UN E NFO QUE PRÁCTICO 213

Ejercicio 13.351
Dado el siguiente Autómata Finito No Determinista :

f (qo , a) = {qO , q3}


f(qo , b) = {q2}
f (qo , e) = {q5}
f(ql, a) = {q3}
f (ql , b) = {q2 , q5}
f (ql , e) = {q2}
f(q2 , a) = {q2}
f(q2 , b) = {ql , q4}
f(q2 ,C) = {q4}
f (q3, a) = {qo}
f (q3, b) = {q5}
f (q3, e) = {q2 , q5}
f(Q4 , e) = {Qd
f (Q5, a) = {Q2}
f(Q5, b) = {Q4}
f (Q5, e) = {Ql , Q4}

Hallar formalmente el Autómata Finito Determinista mínimo equivalente


al anterior.

Se convierte el AFND a AFD. Como no hay transiciones-A, se agrupan


los estados que sean accesibles, quedando:
214 CAPÍTULO 3. GRAMÁTICAS REGULARES y AUTÓMATAS FINITOS

f a b e
-+ Jo {qO, q3} q2 q5
{qO , q3} {qO,q3} {q2,q5} {ql, q2}
*{q2 , q5} q2 {ql , q4} {ql , q4}
{Ql, Q4} Q3 {Q2,Q5} {Q2, Q5}
*Q2 Q2 {Ql , q4} q4
*q5 q2 Q4 {Ql, Q4}
q3 Qo q5 {q2 , q5}
q4 0 0 q5
0 0 0 0

Renombrando los estados de la siguiente manera:

A -+ qo
B -+ {qO , Q3}
C -+ {q2,q5}
D -+ {ql , q4}
E -+ q2
F -+ q5
G -+ q3
H -+ q4

En cuyo caso el autómata sería:

f a b e
-+A B E F
B B C C
*C E D D
D G C C
*E E D H
*F E H D
G A F C
H 0 0 F
0 0 0 0

Ahora habrá que reducir el autómata anterior para obtener el AFD


mínimo para lo cual se hallan las clases de equivalencia de la siguiente
manera:
LEN GU AJES , GRA MÁTICA S y A UTÓMATAS: UN E NFOQ UE PRÁCTI CO 215

QjEo={{A,B ,D, G,H ,0} , {e,E ,F}}


QjE1 ={ {A, B , D, G}, {H}, {0}, {e, E, F}}
QjE2 ={{A,B , D ,G} , {H} , {0} , {e} , {E} , {F}}
QjE3 ={{A}, {B,D} , {G}, {H} , {0} , {e} , {E} , {F}}
Qj E4={ {A} , {B} , {D} , {G} , {H} , {0} , {e} , {E}, {F}}
Se puede apreciar cómo no existe ningún estado que sea equivalente a
otro. Por lo tanto, la tabla anterior ya constituirá el ADF mínimo solución
al problema.

Ejercicio 13.361
Indicar cuáles de los siguientes lenguajes que aparecen a continuación son
equivalentes.

1. b*(a + c)*a

2. b*a(a + c)*a +a
3. b*a(a + c)*a + b*c*a

1. En primer lugar, se deriva la primera expresión de forma sucesiva


hasta que no aparezca ninguna ER nueva, obteniéndose:

Ro b*(a + c)*a
Da(Ro) = (a+c)*a+>.=R l
Db(Ro) = b*(a + c)*a = Ro
Dc(Ro) (a + c)*a = R 2
Da(Rt} = (a+c)*a+>.=Rl
Db(Rt} = 0
Dc(Rt} = (a + c)*a = R2
Da(R2) = (a+c) *a+>.=Rl
D b(R2) = 0
Dc(R2) (a + c)*a = R2
216 CAPÍTULO 3. GRAMÁTICAS REGULARES y AUTÓMATAS FINITOS

A partir de las derivaciones anteriores se obtiene la Gramática Lineal


por la derecha correspondiente a la expresión original Ro:

Ro .. - aRllbRoleR21a
Rl .. - aRlleR21a
R2 .. - aR1leR21a

A continuación, se obtiene el Autómata Finito No Determinista co-


rrespondiente a la Gramática Lineal por la derecha obtenida en el
paso anterior, que será:
AFND = ({a, b, e}, {Ro, R 1 , R 2, F} , Ro, f, {F})

f a b c
--+ Ro Rl,F Ro R2
Rl Rl,F R2
R2 Rl , F R2
*F

Por último, se convierte el Autómata Finito No Determinista en otro


equivalente determinista, quedando:
AFD = ({a , b,e}, {R o,{R 1 , F} , R2, 0} , f , Ro , {{R 1 , F}})

f a b c
--+ Ro {Rl , F} Ro R2
*{R 1 , F} {Rl , F} 0 R2
R 2 Rl,F 0 R2
0 0 0 0
Este es, además, el autómata mínimo.

2. Se realizan las mismas operaciones para la segunda expresión, obte-


niéndose:

Ro b*a(a + e)*a + a
Da(Ro) (a + e)*a +.A = Rl
Db(Ro) b*a(a + e)*a = R2
Dc(Ro) o
L ENGUAJES , GRAMÁTICAS y AUTÓMATAS: UN ENFOQUE PRÁCTICO 217

Da(Rd = (a+e)*a+A=Rl
Db(Rd 0
Dc(Rd (a + e)*a = R3
Da(R 2) (a + e)*a = R3
Db(R2) b*a(a + e)*a = R2
Dc(R 2) 0
Da(R3) (a+e)*a+A = Rl
Db(R 3) 0
Dc(R3) (a + e)*a = R3

A partir de las derivaciones anteriores se obtiene la Gramática Lineal


por la derecha correspondiente a la expresión original Ro:

Ro , , - aRllbR21a
Rl .. - aRlleR31a
R2 .. - aR31bR2
R3 .. - aR 1 leR31a

y se obtiene el Autómata Finito No Determinista correspondiente a


la Gramática Lineal por la derecha:
AFND = ({a,b,e},{Ro,Rl , R2,R3,F},Ro,¡, {F})

f a b c
-+ Ro Rl,F R2
Rl Rl,F R3
R2 R3 R2
*F

Por último, se convierte el Autómata Finito No Determinista en su


equivalente determinista, quedando:
AF D = ({a, b, e}, {Ro, {Rl , F}, R 2, R 3 , 0}, ¡, Ro, {{Rl , F}})
218 CAPÍTULO 3. GRAMÁTICAS REGULARES y AUTÓMATAS FINITOS

f a b c
-+ Ro {R1,F} R2 0
*{R 1, F} {R1,F} 0 R3
R2 R3 R2 0
R3 {Rl,F} 0 R3
0 0 0 0
Se puede apreciar cómo este autómata no es isomorfo respecto al del
apartado 1, por lo que las dos Expresiones Regulares no son equiva-
lentes.

3. Por último, se repite todo el proceso para la tercera expresión, obte-


niéndose:

Ro b*a(a + c)*a + b*c*a


Da(Ro) = (a+c)*a+A=Rl
Db(Ro) b*a(a + c)*a + b*c*a = Ro
Dc(Ro) c*a = R2
Da(R¡) (a+c)*a+A=Rl
Db(R 1) = 0
Dc(R 1) = (a + c)*a = R3
Da(R2) = A
D b(R2) = 0
Dc( R2) c*a = R2
Da(R3) (a+c)*a+A=Rl
D b(R3) = 0
Dc(R3) = (a + c)*a = R3

La Gramática Lineal por la derecha correspondiente a la expresión


original Ro será:

Ro .. - aRllbRolcR21a
Rl .. - aRllcR31a
LENGUAJES, GRAMÁTICAS y AUTÓMATAS: UN ENFOQUE PRÁCTICO 219

R2 .. - cR21a
R3 .. - aR1lcR31a

y el Autómata Finito No Determinista correspondiente será:


AFND = ({a , b, c} , {R o, R 1, R2 , R 3, F} , Ro , ¡ , {F})

f a b c
---t Ro Rl , F Ro R2
Rl Rl,F R3
R2 F R2
R3 Rl,F R3
*F

Por último, el Autómata Finito Determinista es:


AFD = ({a , b, c} , {Ro , {Rl , F}, R 2, R 3, F, 0} , ¡ , Ro , {{Rl , F}, F})

f a b c
---t Ro {Rl, F} Ro R2
*{Rl,F} {Rl,F} 0 R3
R2 F 0 R2
R3 {Rl, F} 0 R3
*F 0 0 0
0 0 0 0

Se puede apreciar cómo este autómata no es isomorfo respecto al


del apartado 1, ni al del apartado 2, por lo que ninguna de las tres
Expresiones Regulares del problema son equivalentes.

Ejercicio 13.371
Obtener el lenguaje reconocido por el siguiente Autómata Finito No Deter-
minista:

AFND = ({a,b, c}, {p,q , r} ,p,¡, {q ,r})


220 CAPÍTULO 3. GRAMÁTICAS REGULARES y AUTÓMATAS FINITOS

Figura 3.41 : Autómata Finito No Determinista de partida.

donde j viene determinada por el diagrama de transición de la figura 3.41.

Lo primero que hay que hacer es convertir el autómata en determinista:


AFD = ({a , b,c},{p, q,0} , p,j, {q})
f a b c
-'tp P 0 q
*q 0
q q
0 0 0 0
Las ecuaciones fundamentales del autómata determinista son:

X o =aXO +bX I +cX2 +b


Xl = (a + c)XI + bX2 + a + c
X 2 = (a + b + c)X2

Resolviendo la última, se obtendrá:

Sustituyendo en X o y Xl, Y resolviendo en esta última:

Xl = (a+c)*(a+c)
LENGUAJES, GRAMÁTICAS y AUTÓMATAS: UN ENFOQUE PRÁCTICO 221

Sustituyendo en Xo:

X o = aXo + b(a + c)*(a + e) + b = aXo + b(a + c)*


Resolviendo esta última ecuación:

Xo=a*b(c+a)*
Luego:

IL(AFND) = a * b(c + a)* I

Ejercicio 13.381
Obtener formalmente el lenguaje reconocido por el siguiente Autómata
Finito No Determinista:
AFND=( {a,b },{p,q,r,s,t,u,v },p,f,{ v})

y f viene determinada por la siguiente tabla de transición:

f a b
---+p q,r p
q r,q s,t,u
r p,v
s u,r
t
u t,s v
*v U,s,t v

Primero, se convierte el AFND en su equivalente determinista. La tabla


de transición quedará:

f a b
---+p {q,r} p
{q,r} {q,r} {p,s,t,u,v}
{q,r,s,t,u} {q,r,s,t,u} {p,s,t,u,v}
* {p,v} {q,r,s,t,u} {p,v}
* {p,s,t,u,v} {q,r,s,t,u} {p,v}
222 CAPÍTULO 3. GRAMÁTICAS REGULARES y AUTÓMATAS FINITOS

Si se renombran los estados de la siguiente manera:

p -+ A
{q,r} -+ B
{q,r,s,t,u} -+ D
{p,v} -+ E
{p,s,t,u,v} -+ F

El autómata determinista quedaría ahora:

f a b
-+ A B A
B B F
D D F
*E D E
*F D E

Para hallar el lenguaje de este autómata se reduce a su Autómata Finito


Determinista mínimo equivalente:

Q/Eo {{A,B,D},{E,F} }
Q/El {{A},{B,D},{E,F} }
Q/E2 {{A},{B,D},{E,F} }

Por lo tanto el autómata mínimo quedará:

f a b
-+A B A
B B F
*F B F

Cuyas ecuaciones fundamentales son:

Xo bXo + aX l
Xl aX l +bX2 +b
X2 aX l + bX2 + b
Resolviéndolas quedará:
LENGUAJES , GRAMÁTICAS y AUTÓMATAS: UN ENFOQUE PRÁCTICO 223

X2 b*(aX I + b)
Xl aX I + bb*(aX I + b) + b
Xl aX I + bb*aX2 + bb*b + b
Xl (a + bb*a)X I + b*b
Xl b*aXI +bb*
Xl (b*a)*bb*
Xo bXO + a(b*a)*bb*
Xo b*a(b*a)*bb*
Luego el lenguaje generado por la gramática es:

IL(AFND) = b*a(b*a)*bb* I

Ejercicio 13.391
Dada la siguiente gramática, construir formalmente, a partir de la expresión
regular del lenguaje generado por ella , la Gramática Regular equivalente.
G = ({a,b,c},{S,A,B,C,D},S,P)
donde P:
S ::=ABCD
A:: =aA lA
B::=cB lA
C::=a I b
D::=cbD lA

La expresión regular correspondiente al lenguaje generado por la gramática


del ejercicio, vendrá dada por:

Ro = a*c*(a + b)(cb)*
Esta Expresión Regular se puede obtener sin más que analizar qué ge-
nera la gramática. Como se puede observar, a partir del axioma se genera
una expresión que concatena lo que generen los símbolos no terminales A,
B, C y D, respectivamente. A genera a*, B genera c*, C genera (a + b) , Y
D genera (cb)*.

-
224 CAPÍTULO 3. GRAMÁTICAS REGULARES y AUTÓMATAS FINITOS

Para obtener la gramática regular que genera la expresión regular Ro ,


se puede derivar la expresión, y dará (se omiten los pasos intermedios):

Da(Ro) = a*c*(a + b)(cb)* + (cb)* = Rl


Db(Ro) = (cb)* = R2
Dc(Ro) = c* (a + b)(cb)* = R3
Da(Rd = Rl
Db(R1 ) = R2
Dc(R 1 ) = c*(a + b)(cb)* + b(cb)* = R3
D a (R2) = 0
D b (R2) = 0
D c(R2) = b(cb)* = R4
Da(R3) = R2
Db(R3) = R 2
D c(R3) = R3
Da(R4) = 0
D b(R4) = R2
Dc(R4) = 0
Por tanto, la gramática regular será:
G 2 = ({a,b,c},{R o,R1 ,R2,R3,R4},Ro,P)

donde P:

Ro::= aR llbR2I cR3Ialb


Rl::= aR llbR2I cR3Ialb
R2::=cR4
R3::=aR2IbR2I cR3Ialb
R4::= bR2Ib

Ejercicio 13.401
Sean los Autómatas Finitos Deterministas Al A2 Y A3 de fa figura 3.42
que reconocen los lenguajes Ll, L2 Y L3 respectivamente. Construir los AFD
que reconocen los siguientes lenguajes:
1. Ll U L2
2. LlnL2
LENGUAJES, GRAMÁTICAS y AUTÓMATAS: UN ENFOQUE PRÁCTICO 225

3. Ll - L2
4. Ll UL3
5. L3 - L2

Al

A2
0,1
°

A3
r 0 0,1

0,1

Figura 3.42: Autómatas Al , A2 y A3.

Puesto que los AF reconocen expresiones regulares, se pueden obtener


las expresiones regulares Rl, R2 y R3 correspondientes a Al, A2 y A3
respectivamente, por ejemplo, por el método de ecuaciones características.
Puesto que la unión y concatenación de expresiones regulares también son
expresiones regulares se tiene que al lenguaje Ll U L2 le corresponde la ex-
presión regular Rl + R2. ASÍ, se puede construir un AF para esta expresión
(obteniendo por derivadas sucesivas la gramática y a partir de ella el AF).
La segunda solución que se empleará para resolver el resto de apartados
de este ejercicio, consiste en construir un AF a partir de los autómatas
cuyos lenguajes aparecen en la expresion. Se comenzará con Ll n L2.
226 CAPÍTULO 3. GRAMÁTICAS REGULARES y AUTÓMATAS FINITOS

1. A partir de los autómatas:

donde ~ = {a,l}, P = {A,B,C}, A es el estado inicial, h es la


función de transición y Fl = {C}.

donde ~ = {a,l}, P = {X, Y, Z}, X es el estado inicial, 12 es la


función de transición y F2 = {Z}.
Se construye

A= (~,R , ro, j, F)

donde ~ = {a, l}, ro = AX ,

R =P x Q = {AX,AY,AZ,BX,BY,BZ,CX,CY,CZ}

y j es la función de transición definida de la siguiente forma:

j((pq) ,a) = (h(p,a)12(q,a))

En esta fórmula, p E P, q E Q y a E ~ . F = {AZ, BZ, CX, CY, CZ}


es el conjunto de estados finales (pq) donde p E FI Ó q E F 2 puesto
que para que la expresión sea aceptada debe pertenecer a Ll ó a L2
(definición de Ll U L2).
La función de transición se define de esta forma porque el autómata
necesita mantener la pista de Al y de A2 simultáneamente. Por ello,
se construyen estados formados por los pares obtenidos de P x Q (un
estado de cada autómata).
Se construye el autómata A a partir de AX (estado inicial) según la
definición de función de transición j (de esta forma se eliminan los
estados inaccesibles) . Algunas de estas transiciones son:
LENGUAJES , GRAMÁTICAS y A UTÓMATAS: UN ENFOQUE PRÁCTICO 227

Figura 3.43: Autómata reconocedor de L1 U L2

f(AX , O) = (fI (A , O) , h(X, O)) BX


f(AX,l) = (fI(A , 1), h(X, 1)) AY
f(BX,O) = (fI(B, O), h(X, O)) = BX
f(BX , l) = (fI (B, 1), h(X, 1)) CY

y así sucesivamente hasta obtener el autómata de la figura 3.43:

2. Para L1 n L2 se tiene el mismo autómata definido en el apartado


anterior. La única diferencia estriba en el conjunto de estados finales
del autómata resultado. En este caso

F = (pq) donde p E F¡ Y q E F 2

Es decir, F = {C Z} puesto que las palabras de L 1 n L2 son palabras


aceptadas por el autómata Al y por el A2.

3. En este caso, el autómata también es el mismo, aunque F es distinto.

F = (pq) donde p E F¡ Y q rf- F2

Es decir, F = {CY, CX} ya que las palabras pertenecientes a Ll- L2


son palabras aceptadas por el autómata Al que no son aceptadas por
el autómata A2.

;""e
228 CAPÍTULO 3. GRAMÁTICAS REGULARES y AUTÓMATAS FINITOS

4. Para construir el autómata que reconoce LlUL3 se sigue el mismo pro-


cedimiento seguido en el primer apartado pero con los autómatas Al y
A3. ElconjuntoF = (pq) dondep E Fl óq E F3 = {AW,CW,BW,CV}.
El autómata que se obtiene se muestra en la figura 3.44.

BV2E)

Figura 3.44: Autómata reconocedor de Ll n L2

5. Para L3-L2 también se sigue el mismo procedimiento pero se utilizan


A3 y A2. F = (pq) donde pE F3 Y q rt F2 . El autómata resultado se
muestra en la figura 3.45.

Figura 3.45: Autómata reconocedor de L3 - L2.


LENGUAJES , GRAMÁTICAS y AUTÓMATAS: UN ENFOQ UE PRÁCTICO 229

Ejercicio 13.411
Dados los Autómatas Al y A2 de la figura 3.46 que reconocen los lenguajes
L1 y L2 respectivamente, contruir un autómata que reconozca los siguientes
lenguajes.

a) LI·L2

b) LI *

c) L2*uLI

Al o

A2

Figura 3.46: Autómatas Al y A2

Si se obtienen las Expresiones Regulares RI y R2 de Al y A2, respec-


tivamente, entonces LI . L2 estará representado por RI . R2 , LI * estará
representado por RI *, y L2* U LI estará representado por R2* + Rl.
De manera formal se pueden construir los autómatas equivalentes a
partir de la Expresiones Regulares. Comenzando por el autómata Al , sus
ecuaciones características son:

Xo = OXo + IXI
230 CAPÍTULO 3. GRAMÁTICAS REGULARES y AUTÓMATAS FINITOS

Xl 1XI + OX2 + O
X2 = OXO + 1XI

Sustituyendo X2 en Xl y resolviendo Xl:

Xl = 1*(Oxo + O)
Sustituyendo en Xo:

Xo = Oxo + 11* (Oxo +0) = (O + 11*O)xo + 11*0 = (A + 11*)Oxo + 11*0 =


= 1*Oxo + 11 *0 = (1 *0)* 11 *0 = (1 *0)* 1*10 = (1 + 0)* 10
IXo = Rl = (1 + 0)*10 I
Para el autómata A2:

Xo = OXI + 1x2 + A
Xl Oxo +O
X2 1x3 + 1
X3 = 1x2

Sustituyendo X3 en X2 Y resolviendo X2:

X2 = 11X2 + 1 = (11)*1

Sustituyendo Xl Y X2 en Xo se tiene:

Xo = OXI + 1x2 + A = OOxo + 00 + 1(11)*1 + A = (00)*(00 + 1(11)*1 + A) =


= (00)* (00 + 1(11)* 1) + (00)*

Haciendo a = 00 y f3 = 11, se obtiene:

Xo = a*(a + f3f3*) + a* = aa* + a* f3f3* + a* =


= a* + a*f3f3* = a*(A + f3f3*) = a*f3*
luego:

IXo = R2 = (00)*(11)* I
Ahora que ya se tienen las Expresiones Regulares reconocidas por los
autómatas Al y A2, las expresiones de cada uno de los lenguajes del enun-
ciado son:
LENGUAJES , GRAMÁTICAS y AUTÓMATAS: UN ENFOQUE PRÁCTICO 231

L1· L2 estará representado por R1R2 = (1 + 0)* 10(00)* (11)*


L1* estará representado por R1 * = (( 1 + O) * 1O) *
L2* U Ll estará representado por R2* + Rl = ((00)*(11)*)* + (1 + 0)*10

Por último, hay que obtener la gramática generadora de cada una de


estas expresiones, aunque para Rl* = ((1 + 0)*10)* se puede construir
directamente el AFND como muestra la figura 3.47 (se deja como ejercicio
el paso a AFD y su posible minimización).
0,1
o

Figura 3.47: Autómata reconocedor de L1 *.

También se puede construir informalmente el AFND para la expresión


R1 . R2 = (1 + 0)*10(00)*(11)* como muestra la figura 3.48 (se deja como
ejercicio el paso a AFD y su posible minimización).
0, 1

Figura 3.48: Autómata reconocedor de L1 . L2.

Para la última expresión, R2* + R1 = ((00)*(11)*)* + (1 + 0)*10


(00+ 11)* + (1 +0)* 10 se aplicará el teorema de síntesis de Kleene obteniendo
el AFND de la figura 3.49. Se deja como ejercicio su paso a AFD y su
minimización.
232 CAPÍTULO 30 GRAMÁTICAS REG ULARES y AUTÓMATAS FINITOS

Figura 30 4 9: Autómata reconocedor de L2* U Ll.

Ejercicio 13.421
Dada la gramática G = (¿'T, ¿'N, S, P), donde ¿'T = {a , b},
¿'N = {S, A, B , D , E}, S es el axioma y Pes:

S 00

00
-

aA
A 00-

00 bB I aD
B 00

00
-

aE I bS I a
D 00

00
-

bD
E 00-

00 aS I aC
F 00-

00 ba

a) Obtener el lenguaje que genera

b) Obtener el Autómata de Células de McCulloch-Pitts equivalente

Para obtener el lenguaje generado por la gramática, se construirá el


Autómata Finito Determinista y por el método de ecuaciones características
se obtendrá la Expresión Regular que reconoceo
LENG UAJES , GRAMÁTI CAS y AUTÓMATAS: UN ENFOQUE PRÁCTICO 233

En primer lugar, se limpiará la gramática puesto que contiene dos


símbolo superfluos y un símbolo inaccesible. El símbolo D no conduce
a ningún símbolo o cadena terminal, al igual que el símbolo e y el símbolo
F es inaccesible desde el axioma de la gramática. Esto significa que es posi-
ble eliminar sus producciones asociadas así como aquellas producciones de
otros símbolos en las que aparezcan.
Las producciones de la gramática limpia serían:

s ,,-
" aA
,,-
A " bB
B ,, -
" aE I bS Ia
E ,,-
" aS

El AFND correspondiente a esta Gramática Lineal por la derecha se


muestra en la siguiente tabla (se ha añadido el estado F como estado final):

f a b
--+S A (/)
A (/) B
B E,F S
E S (/)
*F (/) (/)

El AFD correspondiente, que se comprueba fácilment e que es mínimo,


es:

f a b
--+S A (/)
A (/) B
B {E,F} S
* {E,F} S (/)
(/) (/) (/)

Renombrando los estados se obtiene el siguiente AFD:

f a b
--+ qo ql q4
ql q4 q2
q2 q3 qo
*q3 qo q4
q4 q4 q4
234 CAPÍTULO 3. GRAMÁTICAS REGULARES y AUTÓMATAS FINITOS

Las ecuaciones características del autómata son:

Xo aXI
Xl bX2
X2 bxo + aX3 + a

Sustituyendo X3 en X2:

X2 = bxo + aaxo + a = (b + aa)xo + a


Sustituyendo X2 en Xl:

Xl = b(b + aa)xo + ba
Sustituyendo Xl en Xo y resolviendo:

Xo = ab(b + aa)xo + aba


I Xo = (ab(b + aa))*aba I
A partir del autómata se obtiene el Autómata de Células de McCulloch-
Pitts que se muestra en la figura 3.50, renombrando los estados de la forma
qo como p, ql como q, q2 como r Y q3 como s. Con cuatro estados se tienen
ocho células intermedias.

b
~

~ ~ 1

Figura 3.50: Autómata de Células de McCulloch-Pitts.

En la figura 3.50 se observa que las células qa Y Pb no proporcionan nin-


guna salida a las otras células, por lo que se pueden eliminar. El Autómata
de Células final se muestra en la figura 3.51.
LENGUAJES , GRAMÁTICAS y AUTÓMATAS: UN ENFOQUE PRÁCTICO 235

a r a a ]
-~ -2 ra =@

f--~ I L / ~2rb - ([B


b -¡¡- b

Figura 3.51: Autómata de Células de McCulloch-Pitts simplificado.


Capítulo 4

GRAMÁTICAS INDEPENDIENTES DEL


CONTEXTO y AUTÓMATAS A PILA

En este capítulo se estudiarán las Gramáticas Independientes del Contex-


to, de tipo 2, y los autómatas que reconocen los lenguajes generados por
ellas, los Autómatas a Pila. Este tipo de gramáticas y autómatas son im-
portantes desde el punto de vista de la Informática, debido a que permiten
la descripción de la mayoría de los lenguajes de programación, por lo que
permiten la construcción de compiladores.

4.1 Gramáticas Independientes del Contexto


En este tema se van a estudiar técnicas para preparar una gramática a
efectos de ser tratada eficientemente por un autómata que reconozca el
lenguaje generado por la gramática. Se verán los conceptos de gramáticas
limpias, bien formadas y las Formas Normales de Chomsky y Greibach.

4.1.1 Definiciones
Dada una gramática de tipo 2 (independiente del contexto) se definen:

• Reglas innecesarias: son las que tienen la forma A ::= A


(A E EN)' Estas reglas se deben eliminar de las gramáticas, ya que
no generan derivaciones útiles.

237
238 CAPÍTULO 4. GRAMÁTICAS TIPO 2 y AUTÓMATAS A PILA

• Símbolos inaccesibles: aquellos símbolos no terminales A E EN


que no pueden ser alcanzados por derivaciones desde el axioma de la
gramática, S. Es decir, no hay una derivación S ---t* xAy.

Ejemplo: Dada la siguiente gramática:

G n = ({0,1,2,3},{A,B,C,D,E},A,P)
P = {(A ::= DO), (A ::= E10), (A ::= A), (B ::= 1C3),
(C ::= C), (D ::= lA), (E ::= lE)})

los símbolos B y C son inaccesibles, y la regla (C ::= C) es


innecesaria. Por tanto, la gramática G n , es equivalente a
la GIl eliminando dichos símbolos (y sus reglas asociadas)
y la regla innecesaria.

Gn , = ({O, 1, 2, 3}, {A, D, E}, A , P)


P = {(A ::= DO), (A ::= ElO), (A ::= A), (D ::= lA),
(E ::= lE)})

• Símbolos superfluos: su definición depende del conjunto al que


pertenezcan. ASÍ,

- Símbolo no terminal superfluo, A: es aquél del que sólo se pue-


den derivar palabras en las que existe al menos un símbolo no
terminal, o, lo que es lo mismo, A 1+* x(x E ET).
- Símbolo terminal superfluo, a: es aquél que no puede ser alcan-
zado por derivación desde el axioma; es decir, no existe ninguna
producción (A ::= aa(3) E P).

Ejemplo: En la gramática G n , los símbolos E, 2 y 3 son


superfluos.

Para eliminar los símbolos superfluos, se puede utilizar el algoritmo


de la figura 4.1. Este procedimiento marca todos aquellos símbolos
no terminales que no tengan alguna producción en la que se llegue
a símbolos terminales o a símbolos no terminales marcados. Cuando
se termina el bucle, se eliminan las producciones de los símbolos no
marcados, esos símbolos no terminales, y los símbolos terminales que
no aparezcan en la parte derecha de ninguna producción.
LENGUAJES , GRAMÁTICAS y AUTÓMATAS: UN ENFOQUE PRÁCTICO 239

Función Eli~inar-SÍmbolos-Superfluos (G) : G'

G: entrada a la función, gramática definida por (~T , ~N , S, P)


G' : salida de la función, gramática sin símbolos superfluos

L:Nmarcados:=0;
Repetir
Si A E L: N Y A ti L: Nmarcados y
(A ::= x) E P, x E (L: T U L:Ñmarcados)
Entonces L: Nmarcados: = L: NmarcadosU { A }
Hasta que (L:N = L:Nmarcados) Ó
no se marque ningún símbolo nuevo
Si todos los A E L:N están marcados (* L: N = L:Nmarcados *)
Entonces Devolver G' = G
Si no L:~ := L:Nmarcados; p' := P; L:~ := L:T;
Para cada A ti L: Nmarcados
Borrar todas las producciónes de p' en las que aparezca A;
Para cada a E L:T
Borrar a de L:~ si no existe en p' una regla (A :: = aa(3)
Devolver G' = (L:~, L:~, S, P')

Figura 4.1: Procedimiento de eliminación de los símbolos superfluos de una


gramática.

Ejemplo: En la gramática GU" primero se marcan todos


los símbolos no terminales que estén en la parte izquierda
de una producción y en cuya parte derecha sólo aparezcan
símbolos terminales ó A. Por tanto, se marcaría el símbolo
A. Sucesivamente, se van marcando los símbolos no termi-
nales que aparezcan en la parte izquierda de producciones
en las que sólo haya combinaciones de símbolos terminales,
A, ó símbolos no terminales marcados. En la siguiente ite-
ración se marcaría el símbolo D. Como ya no se puede mar-
car ningún otro símbolo no terminal, los únicos símbolos no
terminales no superfluos son A y D. A continuación, se eli-
minan el resto (sólo E), y, por último, se eliminan aquellos
símbolos terminales que no aparezcan en la parte derecha
de ninguna regla (2 y 3) . La nueva gramática equivalente
será:
¡
240 CAPÍTULO 4. GRAMÁTICAS TIPO 2 y AUTÓMATAS A PILA

Gu " = ({O, l}, {A, D}, A, {(A ::= DO), (A ::= A), (D ::= lA)})

• Gramática limpia: Se dice que una gramática está limpia si no tiene


reglas innecesarias, símbolos inaccesibles, ni símbolos superfluos.

Ejemplo: La gramática G u " está limpia.

• Reglas no generativas: una regla es no generativa cuando


A ::= A, A i- S. Para eliminar dichas reglas, se puede seguir el
algoritmo que aparece en la figura 4.2.

Función Eliminar-Reglas-no-Generativas (G): G '

G: entrada a la función, gramática definida por (~T, ~N, 5, P)


G' : salida de la función, gramática sin reglas no generativas

p/:=p;
Repetir
Para cada P = (A ::= A) E p' Y (A i- S)
P/:= P'- {P};
Para cada p' = (B ::= xAy) E p' (x, y E I;*)
p' := P/U {(B ::= xy)} - {E'}
Hasta que todas las reglas sean generativas;
\ Devolver G' = (I;T, I;N, S, PI)

Figura 4.2: Procedimiento de eliminación de las reglas no generativas de


una gramática.
LENGUAJES, GRAMÁTICAS y AUTÓMATAS: UN ENFOQUE PRÁCTICO 241

Ejemplo: Dada la siguiente gramática:

G 12 = ({O},{A,B,e},A,p)
P = {(A ::= eOB), (A ::= A), (B ::= Be), (B ::= A),
(e ::= OB), (e ::= A)})

al aplicarle el algoritmo de eliminación de reglas no genera-


tivas, daría lugar a las siguientes conversiones de las reglas:
- Eliminación de la regla B ::= A:
P={(A ::= eOB), (A ::= eo), (A ::= A),
(B ::= Be), (B ::= e), (e ::= OB), (e ::= O),
(e ::= A)}
- Eliminación de la regla e ::= A:
P={(A ::= eOB), (A ::= OB), (A ::= eo), (A ::= O),
(A ::= A), (B ::= Be), (B ::= e), (B ::= A),
(e ::= OB), (e ::= O)}
En este paso, se habría generado la regla B ::= B al
reemplazar e en la regla B ::= Be por A. Esta regla,
al ser innecesaria, se elimina.
- Eliminación de la regla B ::= A, que ha aparecido nue-
vamente:
P={(A ::= eOB), (A ::= OB), (A ::= eo), (A ::= O),
(A ::= A), (B ::= Be), (B ::= e), (e ::= OB),
(e ::= O)}
La gramática quedaría como:

G 12, = ({O},{A,B,e},A,p)
P = {(A ::= eOB), (A ::= OB), (A ::= eo), (A ::= O), (A ::= A) ,
(B ::= Be), (B ::= e), (e ::= OB), (e ::= O)})

• Reglas de redenominación: una regla es de redenominación cuan-


do A ::= B con A, B E ~N. Para eliminarlas, se borra esa regla y
se genera una nueva producción A ::= x por cada regla B ::= x , con
x E ~*.
242 CAPÍTULO 4. GRAMÁTICAS TIPO 2 y AUTÓMATAS A PILA

Ejemplo: En la gramática G 12" la regla B ::= e es de re-


denominación. Al eliminar la regla y reemplazar e por
las partes derechas de sus producciones, se convierte la
gramática en:

G 12" = ({O} , {A , B ,e},A, p)


P = {(A :: = eOB) , (A ::= OB) , (A ::= eO) , (A ::= O) , (A ::= >') ,
(B ::= Be) , (B ::= OB) , (B ::= O) , (e :: = OB) , (e ::= O)}

• Gramáticas bien formadas: una gramática está bien formada si


está limpia, no tiene reglas no generativas y no tiene reglas de rede-
nominación.

Ejemplo: La gramática G 12" está bien formada.

4.1.2 Forma Normal de Chomsky (FNC)


Las gramáticas de tipo 2 (independientes del contexto), se.pueden transfor-
mar en gramáticas equivalentes expresadas en la Forma Normal de Chomsky.
En esta forma de representar las gramáticas, las producciones pueden tener
las siguientes formas: '

P = {(A ::= BC) ó (8 ::= >') Ó (A ::= a)IA, B , CE L.N, a E L.T}

Como se puede observar, los árboles de derivación, salvo en las deriva-


ciones correspondientes a las hojas, son binarios. Lo más común es partir
de una gramática limpia. El algoritmo para transformar una gramática en
su Forma Normal de Chomsky equivalente para cada producción P de la
gramática, reasigna el nuevo valor del conjunto de producciones P a lo que
devuelve la función FNC que aparece en la figura 4.3. Esta función trata
de convertir todas las producciones que no están en el formato de FNC a
dicho formato. Los casos que se pueden presentar son los siguientes:

• La producción ya está en FNC. No se hace nada.


LENGUAJES, GRAMÁTICAS y AUTÓMATAS: UN ENFOQUE PRÁCTICO 243

• La parte derecha de la producción comienza por un símbolo terminal


a. Lo que se hace es buscar si existe una producción de un símbolo
no terminal que sólo vaya al símbolo a (C ::= a); es decir, que no
haya más producciones en las que aparezca en la parte izquierda de
la producción. En ese caso, se puede sustituir en la producción inicial
el símbolo a por el C y seguir tratando el resto de la producción. Si
no se encuentra ningún C que cumpla esto, se crea un nuevo símbolo
N, se crea una nueva regla N ::= a, se sustituye a por N en la pro-
ducción original, y se sigue tratando el resto por medio de la función
FNC-auxiliar .

• La parte derecha de la producción comienza por un símbolo no ter-


minal B , pero tiene más de dos símbolos (supóngase que es By). Por
medio de la función FNC-auxiliar, puede haber dos casos: y E ~T Ó
Y E ~N. En el primer caso, se sustituye y por un símbolo no terminal
que sólo vaya a y (existente o nuevo) en esa producción. En el segun-
do caso, se crea un nuevo símbolo no terminal N' , se crea una nueva
regla que tenga en la parte izquierda a N' y en la parte derecha a y,
se sustituye a y por N' en la producción original, y se vuelve a tratar
la nueva regla formada N ::= y.

Ejemplo: Dada la gramática G 13 , se va a calcular la gramática


equivalente en Forma Normal de Chomsky. Para ello, se tra-
tarán sucesivamente las reglas aplicándoles el procedimiento an-
terior.

G 13 = ({O , 1,2} , {A , B , C} , A, P)
P = {(A ::= CB2), (A ::= lB) , (A ::= ,\) , (B ::= BC) ,
(B ::= 1), (C ::= 2)}
244 CAPÍTULO 4. GRAMÁTICAS TIPO 2 y AUTÓMATAS A PILA

Función FNC (P, G) : p'

P: entrada a la función, producción de la forma A :: = x


G: entrada a la función , gramática definida por (~T, ~N , 5, P)
P': salida de la función, conjunto de producciones en las que P está en FNC

pl:=p;
Si x E ~T Ó X = Be (B ,e E ~ N )
Entonces Devolver p'
Sino Si x = ay (a E ~T ,y E ~+)
Entonces Si 3(e ::= a) E P y jl(e ::= x) E P , x "1 a
Entonces N := e
Sino N :=nuevo-~N;
p' := p' U{(N ::= a)};
Si y E ~ N
Entonces Devolver p' U{(A :: = Ny)} - {P}
Sino Devolver FNC-auxiliar(A, N, y, G , PI)
Sino (* x = By (B E ~N , y E ~ +) *)
Devolver FNC-auxiliar(A, B, y, G, PI)

Figura 4.3: Procedimiento de conversión de una producción a Forma Nor-


mal de Chomsky.

• A ::= eB2. Como no está en FNC , ni e E ~T , se llama a


la función FNC-auxiliar con argumentos (A, e, B2, G 13 , P).
Ahora B2 ti. ~T, por lo que se crea un nuevo símbolo
no terminal D , se crea una nueva regla D ::= B2, se
elimina la regla A ::= eB2 y se crea una nueva regla
A ::= eD. Esta última ya está en FNC , mientras que
la primera (D :: = B2) hay que volverla a tratar. Al llamar
recursivamente al procedimiento FNC, por las mismas ra-
zones que antes, llamará al procedimiento FNC-auxiliar
con ar&.umentos (D, B , 2, G 13 , P). En este caso, 2 E ~T , y,
además, se da cuenta de que existe un símbolo no terminal,
e, que lleva a 2 y a ninguna otra parte derecha, por lo que
borra la regla D ::= B2 y añade la regla D ::= Be.
LENGUAJES , GRAMÁTICAS y AUTÓMATAS: UN ENFOQUE PRÁCTICO 245

Función FNC-auxiliar (A, N, y, e, P) : p'

A: símbolo no terminal a la izquierda de la producción inicial


N: símbolo no terminal primero de la derecha de la nueva producción
y: resto de símbolos en la parte derecha de la nueva producción
P: conjunto de producciones
G: gramática definida por (~T , ~N , S, P)
P': nuevo conjunto de producciones

Si y E ¿;T
Entonces Si 3(B ::= y) E P y Jj(B ::= z) E P, z =1= y
Entonces Devolver p' = P u{A ::= NB)} - P;
Sino N' :=nuevo- ¿;N;
Devolver p' = P U{(N' ::= y) , (A ::= NN ' )} - P;
Sino N' :=nuevo-¿;N;
p' := (N' ::= y);
P ' := P U{PI, (A ::= NN' )} - P ;
Devolver FNC(PI , e) donde Pg es p'

Figura 4.4: Procedimiento auxiliar de conversión de producciones a FNC.

• A ::= lB. Como no está en FNC, 1 E ¿;T, Y no hay un


símbolo no terminal que sólo vaya a 1, se crea uno nuevo,
E, una nueva producción, E ::= 1, y dado que B E ¿;N,
elimina la regla A ::= lB y añade la regla A ::= EB.
• A ::= A. Ya está en FNC .
• B ::= BC. Ya está en FNC.
• B ::= 1. Ya está en FNC.
• C ::= 2. Ya está en FNC.

Por tanto, la gramática final quedaría:

e13 , = ({O,1,2},{A,B,C,D,E},A,P)
P = {(A ::= CD), (A ::= EB), (A ::= A), (B ::= BC) ,
(B ::= 1), (C ::= 2), (D ::=BC), (E ::= l)}
246 CAPÍTULO 4. GRAMÁTICAS TIPO 2 y AUTÓMATAS A PILA

4.1.3 Forma Normal de Greibach (FNG)


Otra forma de representar las gramáticas de tipo 2 es por medio de la
Forma Normal de Greibach. Como se verá más adelante en el apartado de
Autómatas a Pila, esta representación será útil para construir el Autómata
a Pila equivalente a una gramática de tipo 2. En este caso, las producciones
son de las siguientes formas:

P = {(A ::= aX) ó (8 ::= .x)IA E ~N,X E ~N,a E ~T}

Para pasarlas a FNG, se realizan los siguientes pasos:

1. Se convierte la gramática a su equivalente gramática limpia.

Ejemplo: La gramática G l3 está limpia.

2. Se elimina la recursividad por la izquierda.

Ejemplo: La regla B ::= BC sería recursiva por la izquier-


da, con lo que se borrarían las reglas del símbolo B y se
añadirían:

B ::= lB', B' ::= CB', y B' ::= .x


o bien, para no tener reglas no generativas:

B ::= lB', B ::= 1, B' ::= CB', y B' ::= e


Eliminando la regla de redenominación, B' ::= e, se añade
la regla B' ::= 2.

3. Como no puede haber reglas en las que sus partes derechas comien-
cen por un símbolo no terminal, se deben sustituir esas reglas por
otras. Para ello, se establece un determinado orden en los símbolos
no terminales, Al, A 2 , ,,,_ , An. y se dividen las reglas en tres grupos:

• Grupo 1. Ai ::= ax, (a E ~T, X E ~*)


LENGUAJES, GRAMÁTICAS y AUTÓMATAS: UN ENFOQ UE PRÁCTICO 247

• Grupo 2. Ai ::= Ajx, (A i , Aj E ~N, i < j, x E ~*)


"
• Grupo 3. Ai ::= Ajx, (A i , Aj E ~N, i > j, x E ~*)

El objetivo es conseguir que todas las reglas sean del Grupo 1. Para
ello, se seleccionan primero las reglas del Grupo 3 cuyo i sea mínimo
en la ordenación, y se sustituyen estas reglas por las obtenidas al
sustituir Aj por todas las partes derechas de sus producciones. Este
proceso se aplica iterativamente en orden creciente de i hasta alcanzar
el objetivo. Después, se realiza el mismo proceso con las del Grupo 2.

Ejemplo: En la gramática G i 3 después de eliminar la re-


cursividad por la izquierda y limpiarla, se establece, por
ejemplo, el orden A , B , B' , C en los símbolos no terminales.
Con este orden, no hay ninguna regla del Grupo 3, por lo
que se tratan las reglas del Grupo 2. Se sustituyen las apa-
riciones como primer símbolo de la parte derecha de C en
las producciones de B , B' y A, las apariciones de B' en B
y A, y las de B en A. ASÍ, la regla A ::= CB2, generaría la
regla A ::= 2B2 y se borraría la regla A ::= CB2. La regla.
B' ::= CB' se elimina y se sustituye por B' ::= 2B'. Por
tanto, tras esta primera fase , las producciones serían:

p' = {(A ::= 2B2), (A ::= lB), (A ::= A), (B ::= lB'),
(B ::= 1) , (B' ::= 2B'), (B' ::= 2) , (C ::= 2)}

4. En este momento, todas las partes derechas de las reglas empiezan


por un símbolo terminal (a excepción de la regla A ::= A). Si todas
las reglas son de alguno de los tres tipos permitidos en FNG, no se
hace nada. Para cada regla del tipo:

A ::= aX,A E ~N,X E ~*,a E ~T

donde existen símbolos terminales b en X, entonces por cada símbolo


b, se sustituye s~ aparición en esa producción por un símbolo no
terminal N (nuevo si hace falta) que sólo tenga una producción que
sea N ::= b.
248 CAPÍTULO 4. GRAMÁTICAS TIPO 2 y AUTÓMATAS A PILA

Ejemplo: Supóngase la gramática anterior G 13 en la que ya


se han obtenido las reglas del ejemplo anterior. Sólo hay
una regla que no esté en FNG, A ::= 2B2, ya que tiene el
símbolo terminal 2 al final de la parte derecha de la regla.
Se puede sustituir por el símbolo no terminal C, ya que
C sólo tiene una producción, y ésta lleva sólo al símbolo
terminal 2. En el caso de que C llevase a otros símbolos,
entonces habría que: crear un nuevo símbolo no terminal
N; crear una nueva producción N ::= 2; y sustituir N por 2
en la regla, quedando A ::= 2BN. Por tanto, la gramática
G~3 siguiente está en FNG:

G 13" = ({O,1,2},{A,B,B',C},A,P)
P' = {(A ::= 2BC), (A ::= lB), (A ::= A), (B ::= lB') ,
(B ::= 1), (B' ::= 2B'), (B' ::= 2), (C ::= 2)}

4.2 Autómatas a Pila (AP)


Los Autómatas a Pila permiten analizar palabras para reconocer si per-
tenecen o no a lenguajes de tipo 2, independientes del contexto. Tienen
la misma estructura que los Autómatas Finitos, pero se les añade una pi-
la (memoria auxiliar) para poder guardar información que podrá ser útil
en momentos posteriores del análisis. Por ejemplo, en el caso de muchas
gramáticas de lenguajes de programación de alto nivel o en gramáticas
de lenguajes naturales, existe la posibilidad de utilizar paréntesis y estos
deben estar balanceados (por cada paréntesis de apertura debe existir pos-
teriormente un paréntesis de cierre). Este aspecto es imposible de controlar
con una Gramática Regular (de tipo 3) debido a que, como no se conoce
el número de paréntesis "a priori", se necesitarían infinitos estados para
llevar la cuenta de los paréntesis de apertura que se han leído para poder
saber luego si se han cerrado o no todos. Los Autómatas a Pila, al disponer
de la memoria auxiliar (pila), pueden introducir en ella un elemento en la
pila por cada paréntesis de apertura leído, e ir eliminando de la pila un
elemento por cada paréntesis de cierre leído, y, por tanto, llevar el control
de si se han cerrado todos o no.
I
4.2.1 Definición
Se definen los Autómatas a Pila como:
LENGUAJES, GRAMÁTICAS y AUTÓMATAS: UN ENFOQUE PRÁCTICO 249

AP = (~, r, Q, A o, qo,f, F)
donde
• ~ es el alfabeto de símbolos de entrada, que pueden aparecer en la
cinta de entrada.
•r es el alfabeto de símbolos de pila, que pueden aparecer en la pi-
la. Este alfabeto puede tener símbolos en común con el alfabeto de
entrada.
• Q es el conjunto de estados, equivalente al del resto de los autómatas
ya estudiados.
• Ao E r es el símbolo inicial de pila, que aparece en la base de la pila.

• qo E Q es el estado inicial.
• F ~ Q es el conjunto de estados finales.
• f es la función de transición entre estados, que se define como:
f : Q x (~U {A}) x r -+ P (Q x r*)
Es decir, por cada estado, símbolo de entrada o palabra vacía (A), y
símbolo en la cima de la pila, determina la transición a otro estado y
decide qué se debe escribir en la pila. Más adelante se comenta con
más detalle cómo funciona.
En la figura 4.5 se muestra la arquitectura de este tipo de autómatas. Se
dispone como entrada de una cinta con los símbolos que forman la palabra
de entrada que hay que aceptar o no (ai E ~). El autómata tiene una cabeza
lectora posicionada en cada momento en un símbolo de entrada. Esta
cabeza lectora sólo puede moverse hacia la derecha y termina de moverse
cuando llega al final de la cinta. También puede quedarse parada durante
un tiempo a mitad de cinta, que corresponde a realizar las transiciones
con la palabra vacía, A. Además, este tipo de autómatas, como todos los
anteriores, lleva el control del estado en el que está (qi E Q) donde los
estados marcados con un * son estados finales (pertenecen a F), y puede
leer y escribir en la pila los símbolos Ai E r. El control del autómata lo
lleva la función de transición f que, en cada momento, a partir del estado
actual, el símbolo actu~ de la entrada y el símbolo de la cima de la pila,
determina el siguiente estado y la siguiente configuración de la pila, como
ya se detallará más adelante.
250 CAPÍTULO 4. GRAMÁTICAS TIPO 2 y AUTÓMATAS A PILA

Cinta de entrada

AP ---------------------1

Control

Aceptada!
No Aceptada

Figura 4.5: Arquitectura de un Autómata a Pila.

Ejemplo: El siguiente Autómata a Pila reconoce el lenguaje


formado por n unos seguidos de n ceros, donde n ~ 1.

AP1 = ({ 0, 1}, {A, 1, O} , {qo , qd, A, qo , f, 0)

donde f se define como:

f(qo, 1, A) = {(qo, lA)} f(ql, 0,1) = {(ql, A)}


f(qo, 1, 1) = {(qO, ll)} f(ql, A, A) = {(ql, A)}
f(qo,O, l) = {(ql,A)}
LENGUAJES , GRAMÁTICAS y AUTÓMATAS : UN ENFOQUE PRÁCTICO 251

El funcionamiento intuitivo de este autómata es que cuando


recibe un 1 en la entrada y está en el estado qo, mete el 1 en
la pila, para memorizar cuántos ha leído. Cuando lee un O,
transita al estado q1 que se dedica a eliminar un 1 de la pila por
cada O que lee. ASÍ, si la pila se queda vacía (ha reconocido la
palabra, como se estudiará más adelante) es porque ha leído el
mismo número de unos que de ceros.

4.2.2 Movimientos
El Autómata a Pila tiene dos tipos de transiciones:

• Cuando lee un símbolo de la entrada, a E :E, si está en el estado


q E Q, hay un símbolo en la cima de la pila Z E r, y la función de
transición para esa terna, es:

entonces transita a uno de los estados qi17=1 (no determinista), se


quita de la pila el símbolo Z, se introducen en la cima de la pila los
símbolos que formen parte del Zi correspondiente, y se situa la cabeza
de lectura en el siguiente símbolo de la entrada. La introducción de la
palabra Zi = ZlZ2 ... Zn (Zi E r) correspondiente se realiza de forma
que primero se introduce el símbolo Zn, a continuación el Zn-1, y así
sucesivamente hasta el Zl.

• Cuando no se lee ningún símbolo de la entrada, si está en el estado


q E Q, hay un símbolo en la cima de la pila Z E r, y la función de
transición para la terna es:

f(q , A, Z) = {(ql , zt) , (q2 , Z2 ), ... , (qn , zn)} , qi E Q, Zi E r* ,

entohces transita a uno de los estados qi 17=1 (no determinista) , se


quita de la pila el símbolo Z , se introducen en la cima de la pila los
símbolos que formen parte del Zi correspondiente, y no se mueve la
cabeza de lectura de la entrada.
252 CAPÍTULO 4 . GRAMÁTICAS TIPO 2 y AUTÓMATAS A PILA

Ejemplo: En el Autómata a Pila definido anteriormente, se po-


drían realizar los siguientes movimientos dada la palabra de en-
trada 1100. Se comienza en el estado qo y en la pila sólo está el
símbolo A (figura 4.6(a)). Como el primer símbolo de la entrada
es un 1, está en la cima de la pila el símbolo A , y la función de
transición para esos tres elementos es f(qo , 1, A) = {(qO , lA)} ,
se transita al estado qo , se elimina de la pila A , y se añade lA ,
poniendo el 1 en la cima de la pila, dejando la situación de la
figura 4.6(b) .
Cinta de entrada Cinta de entrada

AP AP
-- -- --- - -----1 -- ---- - -- - ---- - - --- - ---------1
I
I
I
I
I
I

Qi
I
I
I
I
I

Q:
I
I
Pila I

Estados Estados Pila


I
I
- - - - - - - ___ ___ 1 --- - - - -- - -- -- - -- ---- -- - ___ _ __ 1

No Aceptada No Aceptada

(a) (b)
Figura 4.6: Situación inicial de funcionamiento del autómata AP¡ para la
palabra de entrada 1100 (a) y configuración después de leer el primer 1 de
la entrada (b) .

Se lee el siguiente símbolo de la entrada (1) y, con la cima de la


pila (1), la función de transición es f(qo , 1, 1) = {(qo, 11)}. Por
/
tanto, se transita al estado qo, se elimina el 1 de la cima de la
pila y se añaden dos unos, con lo que queda llA (figura 4.7(a)).
Al leer el siguiente O de la entrada, se aplica la función de tran-
sición f(qo , 0, 1) = {(q¡ , A)} , que transita al estado q¡ , elimina
el primer 1 de la pila y no añade nada a la pila, con lo que queda
lA , tal como se muestra en la figura 4.7(b) .
A continuación, se lee el último O y con la función de transición,
f (q¡, O, 1) = {( q¡, A)} , se sigue en el estado q¡, se elimina el 1
de la cima de la pila, que queda sólo con A , y no se añade nada
nuevo a la pila (figura 4.8(a)). Por último, sin leer nada de la
LENGUAJES , GRAMÁTICAS y AUTÓMATAS: UN ENFOQUE PRÁCTICO 253

entrada, estando en el estado ql, Y en la cima de la pila A, se


transita con f (ql, A, A) = {( ql, A)} al estado ql, se elimina la
A de la pila, quedándose la pila vacía como se muestra en la
figura 4.8(b). Como se verá más adelante, ésta es una forma de
aceptar la palabra de entrada. Es decir, pertenece al lenguaje
aceptado por el autómata.

Cinta de entrada
Cinta de entrada
AP

:
-- ---- --- -- --- - -
I
-- -- ---- -- --- , AP
I
I

Estados
-- ---- -
§
_
l

A
Pila
:
I
I
I
I
I
I
___ __ 1
Estados tE
Pila
I

:
_ __ __ _ _ _ _ _ ___ J

No Aceptada No Aceptada

(a) (b)

Figura 4.7: Configuración del autómata AP1 después de leer el segundo 1


de la entrada (a) y después de leer el primer O de la entrada (b) .

Cinta de entrada Cinta de entrada

l I I I O I O I
AP
- - - ------ ---- --- - - - --- --- - - --

~~ Q
Pila
Estados Estados

No Aceptada Aceptada

(a) (b)

Figura 4.8: Configuración del autómata AP1 después de leer el segundo O


de la entrada (a) y después de realizar una transición A (b).
254 CAPÍTULO 4. GRAMÁTICAS TIPO 2 y AUTÓMATAS A PILA

4.2.3 Descripción instantánea


El concepto de descripción instantánea permite describir sencillamente la
configuración del autómata en cada momento .

• Representación: es una terna (q ,x,z), q E Q,x E E*,z E f*. Con-


tiene el estado actual, el resto de la palabra de entrada que queda por
leer, y la situación de la pila en ese instante. El primer símbolo de
la palabra de entrada representa el puntero de lectura de la cinta de
entrada, y el primer símbolo de la pila representa la cima de la pila.

Ejemplo: En el ejemplo anterior, el momento inicial se pue-


de describir como (qO , 1100, A). El siguiente momento se
representaría como (qO, 100, lA). El momento final se re-
presentaría como (ql , A, A).

• Movimientos: si (p, x) E f (q, a, Z) , con

p, q E Q, a E E U {A} , Z E f, x E f*

entonces, de la descripción instantánea (q , ay, ZX) , se puede pasar a


la descripción instantánea (p , y , xX), representándose como

(q, ay, ZX) f- (p , y , xX)

Como se puede observar, se ha desplazado el puntero de lectura de la


cinta de entrada al siguiente símbolo de la cinta, se ha eliminado el
símbolo en la cima de la pila (Z), y se han introducido los símbolos
en la pila que señale la función de transición (x).

Ejemplo: En el ejemplo anterior, se producirían los siguien-


tes movimientos:

(qO , 1100, A)f- (qO , 100, lA) f- (qO, 00, 11A) f- (ql, O, lA) f-
f- (ql, A,A) f- (ql,A,A)
LENGUAJES, GRAMÁTICAS y AUTÓMATAS: UN ENFOQUE PRÁCTICO 255

• Sucesión de movimientos: para representar el hecho de que se


puede alcanzar la descripción instantánea d2 a partir de la dI , se
utilizará una notación similar a las derivaciones de los Autómatas
Finitos: dI r * d2 .

Ejemplo: En el ejemplo anterior, se puede decir que se pue-


de obtener la descripción (ql, A, A) a partir de (qO, 1100, A)
y se representa como:

4.2.4 Autómatas a Pila Deterministas


Al igual que los Autómatas Finitos, los Autómatas a Pila pueden ser de-
terministas o no deterministas. Hasta ahora, se ha descrito el tipo más
general, que son los no deterministas. Se dice que un Autómata a Pila es
determinista cuando:

• Vq E Q, A E r , si If(q , A,A)I > O entonces Va E ~ , f(q , a, A) = O; y

• Vq E Q,A E r,a E ~ U {A}, If(q,a,A)1 < 2

Es decir, si hay alguna transición A dados un estado q y un símbolo de


pila A, entonces no puede haber transición con ningún símbolo de entrada,
y, además, no puede haber más de una transición dados el mismo estado q
y símbolo de pila en la cima de la pila A, incluyendo las transiciones A.

Ejemplo: El autómata anterior API es determinista, ya que


cumple con las restricciones impuestas. Un Autómata a Pila
No Determinista sería el siguiente:

AP2 = ({0,1},{A,1,0},{qo,qd,A,qo,f,0)

donde f se define como:


256 CAPÍTULO 4. GRAMÁTICAS TIPO 2 y AUTÓMATAS A PILA

f(qo, 0, A) = {(qo, OA)}


f(qo, 1, A) = {(qO, lA)}
f(qo,O,O) = {(qO,OO),(ql,A)}
f(qo, 0, 1) = {(qo,Ol)}
f(qo, 1, O) = {(qo, lO)}
f (qo, 1, 1) = {( qo, 11), (ql, 1), (ql, A)}
f(ql,O,O) = {(ql,A)}
f (ql, 1, 1) = {( ql , A)}
f (ql, A, A) = {( ql, A)}

Es no determinista debido a que, para las transiciones con (qO, 0, O)


Y (qO, 1, 1), hay más de una posible transición.

4.2.5 Lenguaje aceptado por un AP


Hay dos formas equivalentes de caracterizar el lenguaje aceptado por un
Autómata a Pila:

• Por vaciado de pila: el lenguaje aceptado es el conjunto de palabras


que permiten transitar desde el estado inicial hasta una descripción
instantánea en la que tanto la entrada como la pila estén vacías.

LVAP = {xl(qo,x,A o) f-* (p,A,A) y pE Q,x E ~*}

Ejemplo: Los autómatas AP1 y AP2 aceptan el lenguaje


por vaciado de pila. El lenguaje aceptado por AP2 sería:

Intuitivamente, el autómata acepta ceros y unos en la en-


trada, que va introduciendo en la pila por medio del estado
qo. En cualquier momento, puede seguir leyendo la pala-
bra x, o empezar a leer la misma palabra de entrada, pero
al revés (su inversa x- 1 ), y transitar al estado ql, que se
encargará de comprobar que se lee bien la inversa.
LENGUAJES, GRAMÁTICAS y AUTÓMATAS: UN ENFOQUE PRÁCTICO 257

• Por estado final: el lenguaje aceptado por estado final es el equi-


valente al de los Autómatas Finitos: todas las palabras que permiten
transitar desde el estado inicial a uno final. Se aceptarán todas las
palabras que permitan pasar de la configuración inicial a una en la
que se haya leído toda la palabra de entrada y el autómata esté en
uno de los estados finales, independientemente del contenido de la
pila.

LFAP = {xl(qo,x,A o) r* (p,A,X) y p E F,x E ~* , X E r*}

Ejemplo: Un autómata equivalente al AP1 que acepte por


estado final sería:

donde f se define como:


f(qo,1,A) = {(qo,1A)}
f(qo, 1,1) = {(qo,11)}
f(qo,O,1) = {(ql ,A)}
f(ql,O ,1) = {(ql,A)}
f (ql, A, A) = {( q2, A)}

Los autómatas por vacíado de pila y por estado final son equivalentes,
y siempre es posible obtener un AP que reconozca por vaciado de pila a
partir de un AP que reconozca por estado final y viceversa.

4.2.6 Autómatas a Pila y Gramáticas de tipo 2


Dado que los Autómatas a Pila pueden reconocer lenguajes generados por
Gramáticas Independientes del Contexto, de tipo 2, en este apartado se
describirá cómo obtener el autómata correspondiente a una gramática y
viceversa.

AP asociado a una gramática


Por cada gramática G de tipo 2 existe un Autómata a Pila AP que reconoce
el lenguaje generado por ésta. Se estudiarán dos formas de construirlo:
definiendo un AP que reconozca por vaciado de pila; o definiendo un AP
que reconozca por estado final. Ninguna de estas formas asegura que se
pueda obtener un APD.
258 CAPÍTULO 4. GRAMÁTICAS TIPO 2 y AUTÓMATAS A PILA

• AP que reconoce por vaciado de pila el lenguaje generado


por una gramática de tipo 2. La forma de construirlo es la si-
guiente: si la gramática G = (I: T , I:N, S, P) está en Forma Normal
de Greibach, se construye un Autómata a Pila No Determinista:

donde la función de transición f se define como sigue:

- Si A ::= aZ E P, (a E I:T,A E I:N,Z E I:Ñ),


entonces (q, Z) E f(q, a, A).
- Si S ::= A E P, entonces (q, A) E f(q, A, S).
\
r,
Se cumple que si S ---+* xX, x E I: X E I:Ñ mediante una derivación
izquierda, entonces (q, x, S) 1-* (q, A, X). Es decir, si la gramática
puede generar la forma sentencial xX, el autómata va a poder pasar
desde la situación inicial a una en la que X esté en la pila y haya
leído la palabra x. Si X = A, el autómata habrá reconocido x como
palabra válida del lenguaje por vaciado de pila.

Ejemplo: Si se tiene la gramática:

G 13" = ({O,1,2},{A,B,B',C},A,P}
P = {(A ::= 2BC), (A ::= lB), (A ::= A), (B ::= lB'),
(B ::= 1C), (B ::= 1), (B' ::= 2B'), (B' ::= 2C), (C ::= 2n

El autómata equivalente sería:

AP = ({O, 1, 2}, {A, B, B', C}, {q},A, q, f, 0)

donde f:

f(q,2,A) = {(q,BCn
f(q, 1, A) = {(q, Bn
f(q,A,A) = {(q,An
f(q,l,B) = {(q,B'),(q,C),(q,An
f(q,2,B') = {(q,B'),(q,Cn
f(q, 2, C) = {(q, An
LENGUAJES, GRAMÁTICAS y AUTÓMATAS: UN ENFOQUE PRÁCTICO 259

Además, se cumple que:

s -+ lB -+ 11C -+ 112
y

(q, 112, A) r (q, 12, B) r (q, 2, C) r (q, A, A)


Como es no determinista, desde la descripción instantánea
(q, 12, B) también se podría haber transitado a (q, 2, B') ó
a (q, 2, A).

• AP que reconoce por estado final el lenguaje generado por


una gramática de tipo 2. La forma de construirlo es la siguiente:
dada la gramática G = (~T, ~N, S, P), se construye un Autómata a
Pila No Determinista:

donde

- r = ~T U ~N U {Ao}, de forma que Ao ~ ¿;T U ¿;N


- Q = {qO,ql,q2} donde qo es el estado inicial, ql es el estado por
el que se realizan las transiciones, y q2 es el estado final.
- la función de transición f se define como sigue:
* f (qO, A, Ao) = {ql, SAo} donde S es el axioma de la gramática;
* Para cada A E ~N, si A ::= a E P, (a E ~*),
entonces (ql, a) E f(ql, A, A);
* Para cada a E ~T, (ql, A) E f(ql, a, a);
* f(ql,A , A o) = {q2 , A o}

Ejemplo: Dada la gramática del ejercicio anterior, G~3 ' el


Autómata a Pila que reconoce por estado final será:

AP = ({a, 1, 2}, {a, 1,2, A, B, B ' , e, D}, {qo , ql , q2} , D , qo , f , {qú)

donde f:
260 CAPÍTULO 4. GRAMÁTICAS TIPO 2 y AUTÓMATAS A PILA

f(qo, A, D) = {ql, AD}


f(ql, A, A) = {(ql, 2BC), (ql, lB), (ql, An
f(ql, A, B) = {(ql, lB'), (ql, lC), (ql, In
f(ql,A,B') = {(ql,2B'),(ql,2Cn
f(ql, A, C) = {(ql, 2n
f(ql,O,O) = {(ql,A)}
f(ql,l,l) = {(ql,A)}
f(ql,2,2) = {(ql,A)}
f (ql, A, D) = {q2, D}

Gramática asociada a un AP
A partir de cualquier Autómata a Pila AP, se puede construir una gramática
de tipo 2 que genera el lenguaje aceptado por el autómata. Si el autómata
es AP = (~, r, Q, A o, qo, f, F), se construye una gramática de tipo 2 en
Forma Normal de Greibach G = (~ , ~N, 8, P) donde

• ~N = {8} U {(p,A,q)!p,q E Q,A E r}


• P:
- Para cada estado q E Q se crea una regla 8 ::= (qO, A o, q)
- Para cada a E ~ U {A}, p, q E Q, A, B, Bi E r,
si (q,B· Bl· B 2 · ... · Bn) E f(p,a,A)
entonces para todas las combinaciones de estados qi E Q se crea
una regla
(p, A, qn) a· (q, B, ql) . (ql, B l , q2) ..... (qn - l, B n , qn)
::=
- Para cada a E ~ U {A}, A E r,
si (q, A) E f(p, a, A),
entonces se crea una regla (p, A, q) ::= a

Se cumple, entonces, que si desde la descripción instantánea inicial

(qo,x,Ao),x E ~*,A E r,p,q,E Q


se puede transitar en n pasos a (q,A,A), (qo,x,A o) f-* (q,A,A), o, lo
que es lo mismo, el AP acepta la palabra x por vacíado de pila, entonces
desde el axioma de la gramática 8, se puede derivar x en n pasos (8 ---+* x).
La gramática de salida normalmente no está limpia y se pueden eliminar
símbolos superfluos.
LENGUAJES , GRA MÁTICAS y A UTÓMATAS: UN E NFOQ UE PRÁCTI CO 261

Ejemplo: Dado el Autómata a Pila AP{ , se puede crear la


gramática que genera el lenguaje que reconoce el autómata de
la siguiente forma:

G I4 = ({O , l} , L;N,S,P)

donde

• P:
S··= (qO , A , qo)l(qo , A , q¡)
(qO , A, qo) ::= l(qo , 1, qo)(qO, A , qo)
(qo , A , qo) ::= 1(qo , 1, ql) (ql , A , qo)
(qO, A , q¡) ::= 1 (qO, 1, qo) (qO , A , ql)
(qO, A , q¡) ::= l(qo , 1, ql)(ql , A , q¡)
(qO , 1, qo) ::= l(qo , l , qo)(qo , l , qo)
(qo , 1, qo) ::= l(qo , l , ql)(ql , l , qo)
(qO , 1, q¡) ::= l(qo , 1, qo)(qO , 1, ql )
(qO , 1, q¡) ::= l(qo , l , ql)(ql , l , ql)
(qO , 1, q¡) ::=
(ql , 1, q¡) ::= °°
A
(ql , A, ql) ::=
• L;N = {S, (qO, A , qo) , (qO , 1, qo), (qO, A , q¡), (qO, 1, ql) , (ql , A , qo),
(ql , 1, qo), (ql , A , ql) , (ql , 1,ql)}

Para mostrar un ejemplo de reconocimiento de palabras en el


autómata que son generadas por la gramática, a continuación
se exponen las transiciones del autómata con la palabra 1100 y
cómo se generaría esa palabra a partir de la gramática.

(qO , 1100, A) f- (qO , 100, lA) f- (qO , 00, 11A) f- (ql , 0, lA) f-
f- (ql , A, A) f- (ql , A, A)

Por otro lado,

s ---+ (qO , A , q¡) ---+ l(qo , l , ql )(ql, A , q¡)---+


---+ 11 (qO , 1, ql)( ql, 1, ql )( ql , A, q¡) ---+
---+ 110(QI,1,QI)(ql,A,q¡) ---+ 1100(QI,A,Q¡) ---+ 1100
LENGUAJES, GRAMÁTICAS y AUTÓMATAS: UN ENFOQUE PRÁCTICO 263

EJERCICIOS

Los ejercicios del capítulo 4, están divididos en ejercicios relativos a


Gramáticas Independientes del Contexto (del 4.1 al 4.8) y ejercicios rela-
tivos a la obtención de Autómatas a Pila que reconozcan las palabras del
lenguaje generado por gramáticas de tipo 2 (del 4.9 al final). Algunos de
estos ejercicios incorporan algoritmos que no se han descrito en la parte
teórica, de forma que el lector tenga un mayor abanico de posibilidades a
la hora de resolver este tipo de problemas.

Ejercicio 14.11
Definir una Gramática Independiente del Contexto para el lenguaje

Con el alfabeto ~T = {x, y} , se definirán primero las producciones


necesarias para generar cadenas con el mismo número de x que de y, es
decir, cadenas que cumplan la condición m=n, teniendo en cuenta que las
x apareceen primero.

S xAy I ,\
A xAy I ,\
Ahora se añaden las producciones necesarias para generar cadenas que
cumplan la condición m=2n. Se consigue haciendo que por cada x que se
introduce en la cadena se introducen dos y.

S xByy I ,\
B xByy I ,\
Combinando ambos conjuntos de producciones se consigue la gramática
G = (~T , ~N, S, P), donde ~T = {x, y}, ~N = {S, A , B} , S es el axioma y
Pes:
264 CAPÍTULO 4. GRAMÁTICAS TIPO 2 y AUTÓMATAS A PILA

S xAy I xByy I A
A xAy I A
B xByy I A
Eliminado las reglas no generativas se obtienen las siguientes produc-
ciones:
S xAy I xByy I xy I xyy I A
A xAy I xy
B xByy I xyy

Ejercicio 14.21
Encontrar una Gramática Independiente del Contexto que con el alfabeto
~ = {O, l} reconozca aquellas cadenas que cumplan N(O) = N(l) + l donde
N(O) es el número de apariciones de Oy N(l) es el número de apariciones de 1.

La gramática tiene que generar cadenas donde los O's y los 1's puedan
aparecer en cualquier posición, pero cumpliendo la condición de que siempre
el número de O's sea superior en una unidad al número de 1's.
Las producciones de la gramática pueden ser:

s CB I BC
C OCl IlCO I O
B OBl lIBO I A
Eliminando las reglas no generativas, la gramática resultante se puede
definir como G = (~T, ~N, S, P), donde ~T = {O, l}, ~N = {S, B, e}, S
es el axioma y Pes:

s CB I BC I C
C OCl IlCO I O
B OBl lIBO I 01 I 10
Eliminando las reglas de redenominación:

s CB I BC I OCl IlCO I O
C OCI IlCO I O
B OBl lIBO I 01 I 10
L ENGUAJES, GRAMÁTICAS y AUTÓMATAS: UN ENFOQUE PRÁCTICO 265

Ejercicio 14.31
Encontrar una Gramática Independiente del Contexto para L, = {a, b} que
reconozca cadenas en las cuales la relación entre el número de aes y el número
de bes sea de 2 a 1.

La gramática debe reconocer cadenas en las que por cada b que aparece
en la cadena debe haber dos símbolos as, sin importar la posición en la que
aparecen. Hay que buscar producciones que inserten dos símbolos a por
cada símbolo b que se introduzca. De esta forma , una posible solución es
el conjunto de producciones P:

s "= aabS I baaS I abaS I aaSb l baSa I abSa I aSab I bSaa I aSba I
Saab I Sbaa I Saba I A
La gramática resultado es G = (L,T , L,N , S, P), donde L,T = {a, b} ,
L,N = {S} y S es el axioma.

Ejercicio 14.41
Definir una Gramática Independiente del Contexto para el lenguaje

Se trata de generar cadenas donde el número de O's siempre tiene que


ser mayor que el de 1's y no importa en cuantas unidades. Por ello hay
que tener producciones que permitan insertar cualquier número de O's por
la izquierda asegurando que cada vez que se inserte un 1, también hay que
insertar un O. Una posible solución podría ser:

S OA110
A OA110B
B OB I A
266 CAPÍTULO 40 GRAMÁTICAS TIPO 2 y AUTÓMATAS A PILA

Eliminando las reglas no generativas, se obtendría la siguiente gramática


G = (L:T, L:N, S, P), donde L: T = {O, l}, L:N = {S, A , B}, S es el axioma y
Pes:
S OAllO
A OAl I OB 10
B OB 10

Ejercicio 14.51
Definir una Gramática Independiente del Contexto para el lenguaje

L = {umv n ju, v E Z+, n = múltiplo de 2y m i- múltiplo de 2 ó viceversa}

Teniendo en cuenta que m, n ~ O, se van a definir primero las produc-


ciones para la primera condición en la que n debe ser par y m impar.

S uuBv
B Bvv I uuB IA
En cuanto a las producciones necesarias para la segunda condición en
la que n debe ser impar y m debe ser par, se tiene:

s 00- uAvv
A 00- uuA I Avv I A

Combinando ambos conjuntos, eliminando las reglas no generativas y


teniendo en cuenta que las producciones de A y de B son las mismas,
la gramática resultado se puede definir como G = (L:T, L:N, S, P), donde
L:T = {u,v}, L: N = {S,A}, S es el axioma y Pes:

S uAvv I uuAv I uvv I uuv


A uuA I Avv I uu I vv
LENGUAJES, GRAMÁTICAS y AUTÓMATAS: UN ENFOQUE PRÁCTICO 267

Ejercicio 14.61
Construir una Gramática Independiente del Contexto para el lenguaje

Para conseguir cadenas pertenecientes a este lenguaje que cumplan la


condición de que la suma del número de símbolos w e y sea igual a la suma
del número de símbolos x y z es necesario considerar algunos aspectos o

Cada vez que se introduce una wo una y, es necesario introducir una x o


una Zo Además, por cada x ó Z introducida es necesario introducir una wo
una yo
Las cadenas más cortas que se pueden generar son A, xy, yz, wz, wx
puesto que r, s, t, y u son enteros positivos mayores o iguales que 00
Una posible solución es G = CE'T, l'.N, S, P) , donde l'.T = {x, y, z, w},
l'.N = {S, A, B , e, D} , S es el axioma y Pes:

s 00-
00 wBz I ADC I A
A 00-
00 wAxlA
B 00-
00 wBzlD
C 00-
00 yCzl A
D 00-

00 xDy I A

Esta gramática contiene reglas de redenominación y no generativas Se o

deja como ejercicio la limpieza de G o

Ejercicio 14.71
Dada la siguiente gramática G = {l'.T, l'.N , S, P}, donde l'.T {O, l} ,
l'.N = {S,A,B,e,D,E,F}, S es el axioma y Pes:
268 CAPÍTULO 40 GRAMÁTICAS TIPO 2 y AUTÓMATAS A PILA

s 0

0
0-

0 AB 1 A 1 eS1 1OE
A 0
00
0-

OAS 1 ,\ 1 AO 1 e
B 0

0
0-

0 B1 11
D 0
0
0-
0 B1 1 ,\ 1 1F
E 0
00
0-

El
F 00-

00 OD

depurarla hasta conseguir una gramática bien formadao

Se van a seguir los pasos necesarios para conseguir una gramática limpiao

1. Símbolos inaccesibles. Se trata de eliminar aquellos símbolos que no


son accesibles desde el axioma o Para ello, se construirá una matriz en la que
las filas y las columnas estén etiquetadas con los símbolos no terminales de
la gramáticao Se escribe un 1 en aquellas celdas (X ,Y) para las que exista
una regla que contenga X (siempre y cuando se pueda obtener a partir
del axioma) en la parte izquierda e Y en la parte derecha o Se realiza el
cierre transitivo de la matriz y aquellos simbolos que contengan su fila y su
columna vacías son símbolos inaccesibles o
La matriz es:

S A B C D E F
S 1 1 1 1 1
A 1 1 1
B 1
C
D
E 1
F

ASÍ, se eliminan los símbolos D y F Y sus producciones asociadas o Las


producciones ahora son:

S 0

00
0-

AB 1 A 1 CS1 lOE
A 00-
0 0
OAS 1 ,\ 1 AO 1 C
B 0

00
0-

B1 11
E 0

0
0-

0 El
LENGUAJES , GRAMÁTICAS y AUTÓMATAS: UN ENFOQUE PRÁCTI CO 269

2. Símbolos superfluos. Se trata de eliminar aquellos símbolos no ter-


minales a partir de los cuales nunca se llegará a cadenas que sólo tengan
símbolos terminales. Para ello se seguirá el procedimiento explicado en la
parte teórica. En éste caso, E y e son símbolos superfluos. El conjunto de
producciones quedaría:

S AB 1 A
A OAS 1 A 1 AO
B B1 11

3. Reglas innecesarias. No hay.

3. Símbolos y reglas no generativas. En éste caso sólo se tiene que


eliminar la regla A -T A. Las producciones quedarían:

S ABIAIBIA
A OAS 1OS 1O 1 AO
B B1 11

4. Reglas de redenominación. Existen dos reglas de redenominación:

S A
S B

Eliminándolas, la gramática quedaría:

S ABIOASIOSIAOIB1 10111~
A OAS 1OS 1 AO 1O
B B1 11

Ejercicio 14.81
Diseñar una gramática que genere los números romanos válidos dado el
alfabeto L: = {I , V, X, L , D, M}.

Recordando un poco las normas que rigen los números romanos se tiene:
270 CAPÍTULO 4. GRAMÁTICAS TIPO 2 y AUTÓMATAS A PILA

• El significado de la siglas es: 1 (1), V (5) , X (10) , L (50), D (500) Y


M (1000)
• No puede haber más tres símbolos iguales seguidos, por ejemplo, III
(3) Y IV (4) XXX (30) Y XL (40)

• Los símbolos V, L Y D no se pueden repetir

• Con el alfabeto dado ~ sólo es posible generar desde el 1 hasta el 3999

La gramática que se obtendrá no es recursiva debido a la condición antes


expuesta sobre la repetición de símbolos y al carácter finito del lenguaje.
Los símbolos terminales de la gramática son: ~T = {I , V, X, L, D, M}.

• Se construirán primero las reglas que generan del 1 al 9:

I Del 1 a13
A ,,- lB
B ,,- IE I A
E ,,- 1IA
I 5 Y 10
G ,,- V
F
,,- X
I Del 6 al 8
H ,,- VA
K ::= IG I IF
I Números del 1 al 9 I
S ,,- Al H I G I K

• Reglas para 10, 20 Y 30:

O ,,-
" XV
V " - XW lA
W ,,-
" X lA

• Reglas para 100, 200 Y 300:

(3 ,,- cn
n ,,- CAlA
A " - CIA
LENGUAJES, GRAMÁTICAS y AUTÓMATAS: UN ENFOQUE PRÁCTICO 271

• Reglas para 1000, 2000 Y 3000:

Z 00-

00 MN
N 00-
0 0 M<I>IA
<I> 00-
00
M IA

• Reglas para los números del 1 al 39:

P os I O I S
• Reglas para los números del 40 al 99:

Q LPIXLSILIXLIXCSIXC

• Reglas para los números del 1 al 99:

T 00- PI Q

• Reglas para los números del 1 al 399:

R ::= f3T I f3 I T

• Reglas para los números del 400 al 999:

CDTIDRICMTIDICDICM

• Reglas para los números del 1000 al 3999:

y 00- ZR I Z1: I Z

• Reglas para todos los números del 1 al 3999:

rr

A continuación se muestran algunas derivaciones para algunas cadenas


del lenguaje:
272 .
CAPÍTULO 40 GRAMÁTICAS TIPO 2 y AUTÓMATAS A PILA

1997 = MCMXCVII

II -+ y -+ Z~ -+ MÑ~ -+ M~ -+ MCMT -+ MCMQ -+ MCMXCS -+


-+ MCMXCH -+ MCMXCVA -+ MCMXCVIB -+ MCMXCVIIE-+
-+ MCMXCVII

3405 = MMMCDV

II -+ y -+ Z~ -+ MÑ~ -+ MM<I>I: -+ MMM~ -+ MMMCDT -+


-+ MMMCDP -+ MMMCDS -+ MMMCDG -+ MMMCDV

2001= MMI

II -+ y -+ ZR -+ MNR -+ MM <I> R -+ MMR -+ MMT -+ MMP -+


-+ MMS -+ MMA -+ MMIB -+ MMI

27 = XXVII

II -+ R -+ T -+ P -+ OS -+ XUS -+ XXWS -+ XXS -+ XXH -+


-+ XXVA -+ XXVIB -+ XXVIIE -+ XXVII

Se deja como ejercicio al lector la limpieza de esta gramática y la trans-


formación a una gramática regular o

Ejercicio 14.91
Obtener el Autómata a Pila equivalente a la gramática G = (~T, ~N , S, P),
donde ~T = {x, y}, ~N = {S, A, B}, S es el axioma y Pes:

s 00- xAy I xByy I xy I xyy I A


A 00- xAy I xy
B 00_ xByy I xyy

Para definir el Autómata a Pila correspondiente se tienen dos posibili-


dades:
LENGUAJ ES, GRAMÁTICAS y AUTÓMATAS: UN ENFOQUE PRÁCTICO 273

1. Autómata a pila de estado final. Sea AP = (2;, r, Q, F, Aa, qa, j, F)


donde:

Q {qO,ql,q2}
r = {Aa} , Aa
2; N U 2;T U ct 2; N U 2;T
F = {q2}estado final

y los movimientos se reflejan en la tabla siguiente:

Q 2; r Movimiento
qa ,\ Aa (ql , SAa)
ql ,\ S (ql, xAy)(ql, xByy)(ql, xyy)(ql, Xy)(ql,'\)
ql ,\ A (ql, XAy)(ql, xy)
ql ,\ B (ql, XByy)(ql, xyy)
ql X X (ql, ,\)
ql Y Y (ql, ,\)
ql ,\ Aa (q2, Aa)

2. Autómata a pila que reconoce por vaciado de pila. Para cons-


truir este autómata se transformará primero la gramática anterior a la
Forma Normal de Greibach. Como no existe recursividad por la izquierda
y todas las partes derechas de las reglas comiellzan por un símbolo terminal
sólo hay que sustituir los símbolos terminales que no están situados en la
cabeza de una parte derecha. Para ello, se añade una nueva producción:
(C::=y) , realizando las sustituciones pertinentes:

S xAClxBCClxClxCCI,\
A xAC I xC
B xBCC I xCC

El Autómata a Pila que reconoce por vaciado de pila el lenguaje descrito


por esta gramática es el siguiente:

y j viene definida por:


274 CAPÍTULO 4. GRAMÁTICAS TIPO 2 y AUTÓMATAS A PILA

f(q, x, S) {(q, AC), (q, BCC) , (q, C) , (q, CC) }


f(q, A, S) {(q, A)}
f(q, x, A) = {(q, AC), (q, C)}
f(q, x, B) = {(q, BCC) , (q, CC)}
f(q, y, C) = {(q, A)}

Ejercicio 14.101
Definir un Autómata a Pila para la gramática G = (L.T, L.N, S, P), donde
L.T = {O,l}, L.N = {S,B,C}, S es el axioma y Pes:

s .. - CB I BC I OC1 I 1CO I O
C .. - 00 I 1CO I O
B .. - OB1 lIBO I 01 I 10

Se definirán dos autómatas a pila, uno que reconozca el lenguaje gene-


rado por la gramática por estado final y otro que reconozca por vaciado de
pila.

1. Autómata a pila de estado final. Sea AP = (L. , r , Q, F, A o, qo , j , F)


donde:

Q {qO , q1 , q2}
r = L. N U L.T U {Ao} , Ao rt L. N U L.T
F {q2}
y los movimientos que AP puede hacer se reflejan en la siguiente tabla:

Q L. r Movimiento
qo A Ao (q¡, SAo)
q¡ A S (q¡ , CB)(q¡ , BC)(q¡ , OC1)(q¡, 1CO)(q¡ , O)
q¡ A C (q¡ , OC1)(q¡ , 1CO)(ql , O)
ql A B (ql , OB1)(ql , 1BO)(ql , 01)(ql , 10)
ql O (ql , A)
ql °
1 1 (ql, A)
q1 A Ao (q2, Ao)
LENGUAJES, GRAMÁTICAS y AUTÓMATAS: UN ENFOQUE PRÁCTICO 275

2. Autómata a Pila que reconoce por vaciado de pila. Se trans-


formará la gramática a Forma Normal de Greibach. Como no existe recur-
sividad por la izquierda, se toma la ordenación de símbolos S, C y B.
Se sustituyen C y B en las producciones S::= CB I BC por sus respectivas
producciones con lo que se obtiene la gramática:

S .. - OQIB 11COB~ 1 OB I OC1I 1CO I OB~C 11BOC I ORC I lOe 10


C OC 1 I 1CO I O '(
B .. - OB1 lIBO I 01 110

Se añaden dos nuevas producciones D ::= O y E ::= 1 y la gramática


queda:

S .. - OCEB 11CDB I OB I OCE 11CD I O


C .. - OCE 11CD 10
B .. - OBE I 1BD I OE I ID
E ..- 1
D .... - O

El Autómata a Pila que reconoce por vaciado de pila el lenguaje descrito


por esta gramática es el siguiente:

y J viene definida por:

J(q, Q, S) = {(q, CEB), (q, B), (q, CE), (q, >.)j (q, BEC), (q, EC)}
J(q, I,'S) = {(q , CDB) , (q, CD)j(q, BqC) , (q, DC)}
J(q , O, C) = {(q, CE) , (q, >')}
f(q, 1, C) = {(q, CD) }/J(q, O, B) = {(q, BE) , (q, E)}
J(q , 1, B) {(q , BD) , (q, D)}j(q , O, D) = {(q, >')}
f(q, 1, E) = {(q , >.)}

Ejercicio 14.111
Definir un Autómata a Pila para la gramática G = (¿'T, ¿'N, S, P), donde
¿'T = {a, b}, ¿'N = {S}, S es el axioma y Pes:
276 CAPÍTULO 4. GRAMÁTICAS TIPO 2 y AUTÓMATAS A PILA

S ::= aabS I baaS I abaS I aaSbl baSa I abSa I


~ ::= aSab I bSaa laSba I Saab I Sbaa I Saba I >.

Se definirán dos Autómatas a Pila, uno que reconozca el lenguaje gene-


rado por la gramática por estado final y otro que reconozca por vaciado de
pila.

1. Autómata a pila de estado final. Sea AP = (~ , f , Q, F, A o, qo, ¡ , F)


donde:

Q {qO,ql ,q2}
f ~ N U ~T U {Ao}, Ao tt ~ N U ~T
F = {q2 }estado final

y los movimientos que AP puede hacer son:

Q ~ f, Movimiento
qo >. Ao (ql , SAo)
(ql, aabS) (ql, baaS) (ql , abaS) (ql, aaSb)
ql >. S (ql , baSa) (ql , abSa)(ql, aSab)(ql, bSaa)
(ql, aSba)(ql , Saab)(ql , Sbaa)(ql , Saba)(ql , >.)
ql a a (ql, >.)
ql b b (ql, >.)
ql >. Ao (q2 , Aa)

2. Autómata a pila que reconoce por vaciado de pila. Se trans-


forma la gramática a Forma Normal de Greibach. Primero, se elimina la
recursividad por la izquierda:

S := Saab I Sbaa I Saba


Para ello se añade un nuevo símbolo A y aplicando la regla de elimina-
ción de recursividad por la izquierda se tiene:
LENGUAJES , GRAMÁTICAS y AUTÓMATAS: UN ENFOQUE PRÁCTICO 277

S ::= aabSA I baaSA I abaSA I aaSbA I baSaA I abSaA I aSabA I


:: =bSaaA I aSbaA I A
A ::= aabA I baaA I abaA I aab I baa I aba

Se elimina la regla de redenominación S ::= A y la gramática completa


es:

S ::= aabSA I baaSA I abaSA I aaSbA I baSaA I abSaA I aSabA I


::= bSaaA I aSbaA I aabA I baaA I abaA I aab I baa I aba
A ::= aabA I baaA I abaA I aab I baa I aba
Como todas las partes derechas de las reglas comienzan por un símbolo
terminal sólo queda añadir dos nuevas producciones B ::= a y C ::= b:

S ::= aBCSA I bBBSA I aCBSA I aBSCA I bBSBA I aCSBA I


::= aSBCA I bSBBA I aSCBA I aBCA I bBBA I aCBA I
::= aBC I bBB I aCB
A ::= aBCA I bBBA I aCBA I aBC I bBB I aCB
B ::= a
C ::= b

El Autómata a Pila que reconoce por vaciado de pila el lenguaje descrito


por esta gramática es el siguiente:

y f viene definida por:

f(q,a,S) = {(q, BCSA), (q, CBSA), (q, BSCA), (q, CSBA) ,


= (q , SBCA)(q, SCBA) , (q , BCA) , (q , CBA) , (q , B C) , (q, CB)}
f(q, b, S) = {(q, BBSA) , (q, BSBA), (q, SBBA) , (q, BBA) , (q, BB)}
f(q, a, A) = {(q, BCA), (q, CBA) , (q, BC), (q, CB)}
f(q, b, A) = {(q,BBA), (q,BB)}
f(q , a, B) {(q,A)}
f(q,b,C) {(q , A)}

Ejercicio 14.121
Definir un Autómata a Pila para la gramática G = (~T, ~N, S, P), donde
~T = {O, 1}, ~N = {S, A, B}, S es el axioma y Pes:
278 CAPÍTULO 4. GRAMÁTICAS TIPO 2 y AUTÓMATAS A PILA

s ,,- OA1 10
A ,,- OA1 I OB I O
B ,,- OB I O

Se definirán dos Autómatas a Pila, uno que reconozca el lenguaje gene-


rado por la gramática por estado final y otro que reconozca por vaciado de
pila.

1. Autómata a pila de estado final. Sea AP = (~, r, Q, F, A o, qo, ¡, F)


donde:

Q = {qO , q1,q2}
r = ~ N U ~T U {Ao}, Ao f/. ~ N U ~T
F = {q2}estado final

y los movimientos que AP puede hacer son:

Q ~ r Movimiento
qo ,X Ao (ql , SAo)
ql X S (ql, OA1) (ql, O)
ql ,X A (ql , OA1)(ql , OB)(ql , O)
ql ,X B (ql, O)(ql, OB)
ql O O (ql, ,X)
ql 1 1 (ql, ,X)
ql ,X Ao (q2, Ao)

Por ejemplo, la secuencia de movimientos para la aceptación de la pa-


labra 00011 sería:

(qO, 00011, AO) -t (q1, 00011, SAO) -t (q1 , 00011 , OA1AO) -t


(q1, 0011, A1AO) -t (q1 , 0011 , OAllAO) -t (q1, 0011, 0011AO) -t
(q1, 011, 011AO) -t (q1, 11, llAO) -t (q1, 1, 1AO) -t (q1, *, AO) -t (q2, *, AO)
LENGUAJES, GRAMÁTICAS y AUTÓMATAS: UN ENFOQ UE PRÁCTICO 279

2. Autómata a pila que reconoce por vaciado de pila. Se trans-


forma la gramática a Forma Normal de Greibacho Como todas las partes
derechas de las reglas comienzan por un símbolo terminal sólo queda añadir
una nueva producción C ::=1 y cambiar 1 por C en las producciones o

S 00-
00 OAC I O
A 00-
00 OAC¡ OB 10
B 00-
00 OB I O
C 00-
00 1

El Autómata a Pila que reconoce por vaciado de pila el lenguaje descrito


por esta gramática es el siguiente:

y f viene definida por:

f(q, O, S) {(q, AC), (q, A)}


f(q, O, A) = {(q, AC), (q, B) , (q, A)}
f(q, O, B) {(q, B), (q, A)}
f(q, 1, C) = {(q, A)}

Ejercicio 14.131
Definir un Autómata a Pila para la gramática G = (~T, ~N, S, P), donde
~T = {u,v}, ~N = {S, A}, S es el axioma y Pes:

S uAvv I uuAv I uvv I uuv


A uuA I Avv I uu I vv

Se definirán dos Autómatas a Pila, uno que reconozca el lenguaje gene-


rado por la gramática por estado final y otro que reconozca por vaciado de
pilao
280 CAPÍTULO 40 GRAMÁTICAS TIPO 2 y AUTÓMATAS A PILA

1. Autómata a Pila de estado final. SeaAP = (1:,r,Q,F,A o,qo,¡,F)


donde:

Q {qO, ql, q2}


r 1: N U 1:T U {Ao}, Ao rf. 1:N U 1:T
F {q2}

y los movimientos que AP puede hacer son:

Q 1: r Mov imiento
qo >. Ao (ql, SAo)
ql >. s (ql, UAVV)(ql, UU AV)(ql, UVV)(ql, UUV)
ql >. A (ql, UUA)(ql, Avv )(ql, UU)(ql, vv)
ql U U (ql, >')
ql V V (ql, A)
ql >. Ao

2. Autómata a Pila que reconoce por vaciado de pila. Se transfor-


ma la gramática a Forma Normal de Greib acho Eliminando la recursividad
por la izquierda:
11, '

A::=Avv

Para ello se añade un nuevo símbolo B y aplicando la regla de elimina-


ción de recursividad por la izquierda se tie ne:

S 00-
00 uAvv I uuAv luv v luuv
A 00 - uuAB I uuB I vv B I uu I vv I uuA
B 00-
00 vvB I vv

Como todas las partes derechas de las reglas comienzan por un símbolo
terminal sólo queda añadir dos nuevas pro ducciones C ::= u y D ::= v
1I
S 00- uADD I uCAD luD D luCD :i !
A 00-
00 uCAB I uCB I vD B I uC I vD I uCA i¡
B 00-
00 vDB I vD
I!!

1: :1

:::
LENGUAJES , GRAMÁTICAS y A UTÓMATAS: UN ENFOQUE PRÁCTICO 281

El Autómata a Pila que reconoce por vaciado de pila el lenguaje descrito


por esta gramática es el siguiente:

y f viene definida por:


f(q,u, S) {(q, ADD), (q , CAD) , (q , DD) , (q , CD)}
f(q , u , A) {(q , CAB), (q , CB) , (q , C) , (q , CA)}
f(q , v , A) {(q,DB), (q,D)}
f(q , v , B) = {(q, DB) , (q , D)}
f(q, u, C) {(q, A)}
f(q, v, D) {(q , A)}

Ejercicio 14.141
Encontrar una Gramática Independiente del Contexto y su correspondiente
Autómata a Pila que reconozca expresiones aritméticas en notación polaca
inversa construidas con el alfabeto ~ = {n, +, -, *,: }. Una expresión en
notación polaca inversa lleva los operadores siempre detrás de los operandos a
los que se aplica. Por ejemplo, la expresión aritmética en notación infija

(a + b) * (b - e * (a - b))

se escribiría de la siguiente forma

ab + bcab - *- *
Nótese que en esta notación no se utilizan paréntesis puesto que son inne-
cesarios (la propia notación establece las prioridades).

Puesto que los operadores sólo se pueden aplicar a dos operandos y


además el operador siempre aparece detrás de los operandos, una solución
puede ser:

s .. - AAO
A ..
.. - AAO In
O .. - + 1-1 * I :
282 CAPÍTULO 4. GRAMÁTICAS TIPO 2 y AUTÓMATAS A PILA

La gramática resultado es G = (1:T, 1:N, S, P), donde 1:T = {n , +, -, *,: },


1:N = {S, A, O}, S es el axioma y Pes:
S AAO
A AAO In
O + 1- I * I :
Se construirá un autómata que reconozca por vaciado de pila. Para ello,
se transforma la gramática a Forma Normal de Greibach. El primer paso
es eliminar la recursividad por la izquierda:
A ::= AAO
Para ello se añade un nuevo símbolo B y aplicando la regla de elimina-
ción de recursividad por la izquierda se tiene:
S .... - AAO
A .... - nB I n
B .... - AOB I AO
O .. - + 1- I * I :
Se establece el orden S, B, A, O Y sólo hay que sustituir aquellas partes
derechas de las reglas que comiencen por un símbolo no terminal.
S .. - nBAO
A .... - nB I n
B .... - nBOB I nBO
O .... - + 1-1 * I :
Ahora todas las partes derechas de las reglas comienzan por un símbolo
terminal y el resto son símbolos no terminales con lo que la gramática
ya está en FNG. El Autómata a Pila que reconoce por vaciado de pila el
lenguaje descrito por esta gramática es el siguiente:

y f viene definida por:


f(q, n, S) {(q, BAO)}
f(q, n, A) {(q,B),(q,A)}
f(q, n, B) {(q, BOB), (q, BO)}
f(q, +, O) {(q,*)}
f(q, -, O) {(q,*)}
f(q, *, O) {(q, *)}
f(q,:, O) {(q, *)}
LENGUAJES , GRAMÁTICAS y AUTÓMATAS: UN ENFOQUE PRÁCTICO 283

Ejercicio 14.151
Definir una gramática independiente del contexto para el lenguaje

Construir el Autómata a Pila reconocedor del lenguaje.

Las cadenas pertenecientes a este lenguaje deben cumplir la condición


de que el número de símbolos z debe ser igual a la suma de símbolos x e y.
Esto significa que por cada x que se introduzca por la izquierda se tiene que
introducir también una z por la derecha. De igual forma, por cada y que
se introduzca también se introducirá una z. En caso de que se introduzcan
tanto una x como una y, entonces habrá que colocar dos z más.
El conjunto de producciones que genere estas cadenas puede ser:

S xAzlyBz I A
A xAz I B I A
B yBzlA

Eliminando las reglas de redenominación A::=B y las reglas no genera-


tivas, se obtiene:

S xAz I yBz I xz I yz A
A xAz I yBz I yz I xz
B yBz I yz

Como S y A tienen las mismas producciones exceptuando la producción


S::= A, la gramática se puede simplificar obteniendo G = (L.T , L.N , S, P) ,
donde L.T = {x,y,z}, L.N = {S,A,B}, S es el axioma y Pes:

S xSz I yBz I yz A
B yBz I yz
284 CAPÍTULO 4. GRAMÁTICAS TIPO 2 y AUTÓMATAS A PILA

1. Autómata a pila de estado final. Sea AP = (L:, r, Q, F, A o, qo, f, F)


donde:

Q = {qO, ql, q2}

r = L: N U L: T U AO, Ao ti- L: N U L:T

F = {q2}

Q L: r Movimiento
qo A Ao (ql, SAo)
ql A S (ql, XSZ)(ql, yBz )(ql, yz) (ql, A)
ql A B (ql, yBZ)(ql, yz)
ql X X (ql, A)
ql Y Y (ql, A)
ql Z Z (ql, A)
ql A Ao (q2, Ao)

2. Autómata a pila que reconoce por vaciado de pila. Se trans-


forma la gramática a Forma Normal de Greibach. Como todas las partes
derechas de las reglas comienzan por un símbolo terminal sólo queda añadir
una nueva producción C ::= z y sustituir los símbolos terminales interme-
dios de las producciones:

S xSC I yBC I yC I A
B yBC I yC

El Autómata a Pila que reconoce por vaciado de pila el lenguaje descrito


por esta gramática es el siguiente:

AP = (L: T , L:N, q, S, f, 0)

y f viene definida por:

f(q, x, S) {(q,SC)}
f(q, y, S) {(q,BC),(q,C)}
f(q,*,S) {(q, A)}
f(q, y, B) {(q,BC),(q,C)}
f(q,y,B) {(q,A)}
LENG UAJ ES, GRAMÁTICAS y A UTÓMATAS; UN ENFOQUE PRÁCTICO 285

Ejercicio 14.161
Con el alfabeto ¿: = {O, 1, 2, 3,4,5, 6, 7, 8, 9} construir una gramática que
genere números, de cualquier número de cifras, que sean múltiplos de 4. Definir
también un Autómata que reconozca este lenguaje .

Son múltiplos de cuatro aquellas cadenas que cumplen las siguientes


condiciones:

1. De 1 cifra: 4, 8.

2. De 2 cifras: un dígito par seguido de O, de 4 ó de 8.

3. Un dígito impar seguido de 2 ó de 6.

4. De 3 ó más cifras: cualquier combinación de dígitos seguida de dos


cifras que cumplan la condición anterior o seguida de OO.

La gramática que genera estas cadenas es G = (¿:T, ¿:N , 5, P), donde


¿:T = {O, 1, 2, 3,4,5, 6, 7,8, 9} , ¿:N = {5,A, B , C, P,I, D} , 5 es el axioma y
P es:

S .... - 418 1 A 1 B
A .. -
.. PO 1 P4 1 P8
A .... - I2 1 I6
B .... - CA 1 COO
C .... - CD 1 CO 1 D
P .... - 2 1416 18
I .... - 113151719
D .... - 11 2 131 4 1516171819

Se construirá un Autómata a Pila que reconozca por vaciado de pila


puesto que la gramática es independiente del contexto. Primero, se lim-
pia G eliminando las reglas de redenominación (S::=B , S::=A, C::=D). La
gramática limpia se muestra a continuación:
286 CAPÍTULO 4. GRAMÁTICAS TIPO 2 y AUTÓMATAS A PILA

s ..- 4 1 8 1 PO 1 P4 1 P8 112 116 1 CA 1 COO


A .... - PO 1 P4 1 P8 112 1 16
B .. - CA 1 COO
C .. -
.. CD 1 CO 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9
P .. - 21 4 1618
1 ..- 113151719
D .. - 11213141516171819

A continuación, se escribe la gramática en FNG. Para ello, es necesario


eliminar la recursividad por la izquierda de la producción C ::= CD 1 CO.
Se añade un nuevo símbolo M y la gramática resultante es:

S .. - 4 1 8 1 PO 1 P4 1 PS 1 12 116 1 CA 1 COO
A .... - PO 1 P4 1 P8 112 116
B .. - CA 1 COO
C .. - 1M 1 2M 1 3M 1 4M 1 5M 1 6M 1 7M 1 8M 1 9M 1 1 1 2 1 3 1 4 1
516171819
M .. - DM 1 OM 1 DIO
P .... - 2 14 16 1 8
1 .." - 113151719
D ..- 11 2 131 4 1516171819

Como vuelve a surgir una regla de redenominación (M::=D) , después


de eliminarla se obtiene:

s .. - 4 1 8 1 PO 1 P4 1 PS 112 116 1 CA 1 COO


A .. - PO 1 P4 1 P8 112 116
B .... - CA 1 COO
C .... - 1M 1 2M 1 3M 1 4M 1 5M 1 6M 1 7M 1 8M 1 9M 1 1 1 2 1 3 1 4 1
516171819
M .. - DM 1 OM 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 91 O
P .... - 21 4 1618
1 .... - 113151719
D ..
.. - 112131 4 1516171819

Estableciendo el orden de símbolos no terminales S, A, B, C, P, 1, M, D


todas las producciones cumplen los requisitos de preferencia entre símbolos.
El siguiente paso es sustituir aquellas partes derechas de las producciones
que comiencen por un símbolo no terminal:
LENGUAJES , GRAMÁTI CAS y AUTÓMATAS: UN ENFOQUE PRÁCTICO 287

8 ..- 4 1 8 1 20 1 40 1 60 1 80 1 24 1 44 1 64 1 84 1 28 1 48 1 68 1 88 1
12 1 32 1 52 1 72 1 92 1 16 1 36 1 56 1 76 1 96 lIMA 1 2MA 1
3MA 1 4MA 1 5MA 1 6MA 1 7MA 1 8MA 1 9MA 1 lMOO 1
2MOO 1 3MOO 1 4MOO 1 5MOO 1 6MOO 1 7MOO 1 8MOO 1 9MOO
A .. = 20 1 40 1 60 1 801 24 1 44 1 64 1 84 1 28 1 48 1 68 1 88 112 1 32 1
52 1 72 1 92 1 16 1 36 1 56 1 76 1 96
B ..= lMA 1 2MA 1 3MA 1 4MA 1 5MA 1 6MA 1 7MA 1 8MA 1 9MA 1
lMOO 1 2MOO 1 3MOO 1 4MOO 1 5MOO 1 6MOO 1 7MOO 18MOO 1
9MOO
e ..- 1M 1 2M 1 3M 14M 1 5M 1 6M 1 7M 1 8M 1 9M
M .. - 1M 1 2M 1 3M 1 4M 1 5M 1 6M 1 7M 1 8M 1 9M 1 OM 1 1 1 2 1
3 1 4 1 5 1 6 1 7 18 1 91 o
P .. - 2 1416 18
1 .. - 1 13 15 17 19
D ..= 1 1 2 13 14 1 5 16 17 18 1 9
8e añaden cuatro nuevas producciones X::=O, T::=2, R::=6 y W::=4.
Realizando la sustitución se obtiene la gramática en FNG:

8 ..- 4 1 8 1 2X 1 4X 1 6X 1 8X 1 2W 1 4W 1 6W 1 8W 1 28 1 48 1 68 1
88 lIT 1 3T 1 5T 1 7T 1 9T 1 IR 1 3R 1 5R 1 7R 1 9R lIMA 1
2MA 1 3MA 1 4MA 1 5MA 1 6MA 1 7MA 1 8MA 1 9MA 1
lMXX 1 2MXX 1 3MXX 1 4MXX 1 5MXX 1
6MXX 17MXX 18MXX 19MXX
A .. - 2X 1 4X 1 6X 18XI 2W 1 4W 1 6W 1 8W 1 28 148 1 68 188 1
1T 1 3T 1 5T 1 7T 1 9T 1 IR 1 3R 1 5R 1 7R 1 9R
B ..- lMA 1 2MA 1 3MA 1 4MA 1 5MA 1 6MA 1 7MA 1 8MA 1 9MA 1
lMXX 12MXX 13MXX 14MXX 15MXX 16MXX 17MXX 1
8MXX 19MXX
e .. - 1M 1 2M 1 3M 1 4M 1 5M 1 6M 1 7M 1 8M 1 9M
M ..- 1M 1 2M 1 3M 1 4M 1 5M 1 6M 1 7M 1 8M 1 9M 1 OM 1 1 1 2 1
3 1 4 1 5 1 6 1 7 1 8 1 91 o
P .. - 2141618
1 .. - 113151719
D .. - 11 2 13141516171819
X ..- o
T ..- 2
R .. - 6
W .. - 4
288 CAPÍTULO 4. GRAMÁTICAS TIPO 2 y AUTÓMATAS A PILA

El Autómata a Pila que reconoce por vaciado de pila el lenguaje descrito


por esta gramática es el siguiente:

AP = (~T, ~N , q, S, ¡ , 0)
y ¡ viene definida por:

f(q, 4, S) = {(q, A) , (q, X), (q, S) , (q, W), (q, MA), (q, MXX)}
f(q, 8, S) = {(q, A) , (q, X) , (q, S) , (q, W) (q, MA), (q, MXX)}
f(q, 2, S) = {(q, X) , (q, S) , (q, W) (q, MA) , (q, MXX)}
f(q, 6, S) = {(q, X) , (q, S) , (q, W) (q, MA) , (q, MXX)}
f(q, 1, S) = {(q, T) , (q, R) , (q, MA), (q, MXX)}
f(q, 3, S) = {(q, T), (q, R), (q, MA) , (q, MXX)}
f(q , 5, S) = {(q, T) , (q, R) , (q, MA) , (q, MXX)}
f(q , 7, S) = {(q, T) , (q, R) , (q, MA) , (q, MXX)}
f(q, 9, S) = {(q, T) , (q, R) , (q, MA) , (q, MXX)}
f(q, 4, A) = {(q, X), (q, S) , (q, W)}
f( q, 8, A) = {(q, X) , (q, S) , (q, W) }
f(q, 2, A) = {(q, X) , (q, S) , (q, W) }
f(q, 6, A) = {(q, X) , (q, S) , (q, W) }
f(q, 1, A) = {(q, T) , (q, R)}
f(q, 3, A) = {(q, T), (q, R)}
f(q , 5, A) = {(q, T) , (q, R)}
f(q , 7, A) = {(q, T) , (q, R)}
f(q , 9, A) = {(q, T) , (q, R)}
f(q , 4, B) = {(q, MA), (q, MXX)}
f(q , 8, B) = {(q, MA) , (q, MXX)}
f(q , 2, B) = {(q, MA) , (q, MXX)}
f(q, 6, B) = {(q, MA) , (q, MXX)}
f(q, 1, B) = {(q, MA) , (q, MXX)}
f(q, 3, B) = {(q, MA), (q, MXX)}
f(q, 5, B) = {(q, MA) , (q, MXX)}
f(q, 7, B) = {(q, MA) , (q, MXX)}
f(q , 9, B) = {(q, MA) , (q, MXX)}
f(q, 4, C) = {(q, M) , (q, A)}
f(q, 8, C) = {(q, M), (q, A)}
f(q , 2, C) = {(q, M) , (q, A)}
f(q , 6, C) = { (q, M) , (q, A)}
f(q, 1, C) = {(q, M), (q, A)}
f(q, 3, C) = {(q, M), (q, A)}
LENGUAJES, GRAMÁTICAS y AUTÓMATAS: UN ENFOQU E PRÁCTICO 289

f(q, 5, C) = {(q, M), (q, A)}


f(q, 7, C) = {(q, M), (q, A)}
f(q, 9, C) = {(q, M) , (q, A)}
f(q, 4, M) = {(q, M), (q, A)}
f(q, 8, M) = {(q, M), (q, A)}
f(q, 2, M) = {(q, M), (q, A)}
f(q, 6, M) = {(q, M), (q, A)}
f(q, 1, M) = {(q, M) , (q, A)}
f(q, 3, M) = {(q, M) , (q, A)}
f(q , 5, M) = {(q, M) , (q, A)}
f(q, 7, M) {(q, M) , (q, A)}
f(q, 9, M) = {(q, M) , (q, A)}
f(q, O, M) = {(q, M), (q, A)}
f(q, 2, P) = {(q, A)}
f(q, 4, P) = {(q, A)}
f(q, 6, P) = {(q, A)}
f(q, 8, P) = {(q, A)}
f(q, 1,1) = {(q, A)}
f(q, 3, 1) = {(q, A)}
f(q, 5,1) = {(q, A)}
f(q, 7, 1) = {(q, A)}
f(q, 9, 1) = {(q, A)}
f(q, 1, D) = {(q, A)}
f(q, 2, D) = {(q, A)}
f(q, 3, D) {(q, A)}
f(q, 4, D) = {(q, A)}
f(q , 5, D) = {(q, A)}
f(q, 6, D) = {(q, A)}
f(q, 7, D) = {(q, A)}
f(q, 8, D) {(q, A)}
f(q, 9, D) = {(q, A)}
290 CAPÍTULO 4. GRAMÁTICAS TIPO 2 y AUTÓMATAS A PILA

Ejercicio 14.171
Encontrar una gramática que reconozca las cadenas pertenecientes al len-
guaje

L = {xmyn In y m son enteros no negativos y m :::; n :::; 2m}


Construir un Autómata a Pila reconocedor del lenguaje .

Las cadenas pertenecientes a este lenguaje cumplen dos condiciones:

m:::; n y n:::; 2m

es decir, fijado un m, se pueden obtener m + 1 cadenas. Por ejemplo,


para m=4 se tienen las siguientes cadenas:

xxxxyyyy
xxxxyyyyy
xxxxyyyyyy
xxxxyyyyyyy
xxxxyyyyyyyy

Hay que tener en cuenta, a la hora de definir las producciones, que para
un determinado número m de símbolos x, es posible introducir desde m
hasta 2m símbolos y. Una posible gramática generadora del lenguaje L es
G = (E T , EN, S, P), donde ET = {x, y}, EN = {S, A, e}, S es el axioma y
Pes:

S ACy I A
::=
A ::= xACy I x
C ::= y lA

Por ejemplo, para generar la cadena "xxxxyyyyyyyy" se tiene la si-


guiente derivación:

s -+ ACy -+ xACyCy -+ xxACyCyCy -+


-+ xxxACyCyCyCy -+ xxxxCyCyCyCy -+ xxxxyyCyCyCy -+
-+ xxxxyyyyCyCy -+ xxxxyyyyyyCy -+ xxxxyyyyyyyy
LENGUAJES , GRAMÁTICAS y AUTÓMATAS : UN ENFOQUE PRÁCTICO 291

La gramática limpia sería:

S ACy I Ay I ,X
A xACyI xAyIx
C .. - y

1. Autómata a Pila de estado final. Sea AP = (E, r , Q, F , A o, qo , j, F)


donde:

Q = {Qo , ql, q2}


r = E N U ET U {Ao}, Ao \t' E N U ET
F = {q2}

Q E r Movimiento
qo ,X Ao (ql, SAo)
ql ,X S (ql , ACy)(ql , Ay)(ql , 'x)
ql ,X A (ql, xACy)(ql, XAy)(ql, x )
ql ,X C (ql, y)
ql X X (ql , ,X)
ql Y Y (ql, ,X)
ql ,X Ao (q2, Ao)

2. Autómata a Pila que reconoce por vaciado de pila. Se transfor-


ma la gramática a Forma Normal de Greibach. Estableciendo el orden S,
A, C , todas las reglas cumplen la propiedad de precedencia. Sustituyendo
aquellas reglas cuyas partes derechas comienzan por un símbolo no terminal
se obtiene:

S xACyCy I xAyCy IxCy ! xACyy ! xAyy ! xy ! ,X


A xACy!xAylx
C y

Como todas las partes derechas de las reglas comienzan por un símbolo
terminal sólo queda sustituir los símbolos terminales intermedios de las
producciones.

S xACCCClxACCC lxCC l xACClxCI,X


A xACC I xAC Ix
C y
292 CAPÍTULO 4. GRAMÁTICAS TIPO 2 y AUTÓMATAS A PILA

El Autómata a Pila que reconoce por vaciado de pila el lenguaje descrito


por esta gramática es el siguiente:

AP = (L: T ,L: N ,{q},S,j,0)


y f viene definida por:

f(q, x, S) {(q, ACCCC) , (q, ACCC) , (q, CC) , (q, ACC), (q, e)}
f(q , A, S) {(q, A)}
f(q, x, A) {(q, ACC) , (q, AC), (q, A)}
f(q, y, C) {(q, A)}

Ejercicio 14.181
La gramática G = (L: T , L:N, S, P), donde S es el axioma, L:T = {a, b},
L:N = {S, A, B}, Y Pes:

S AabB
A aA I bA I A
B Bab I Bb I ab Ib
aunque no es regular genera un Lenguaje Regular. Encontrar la Expresión
Regular correspondiente al lenguaje y encontrar una Gramática Regular que
genere el lenguaje .

Informalmente, se podría obtener la expresión regular generada por la


gramática para, a continuación, obtener la gramática regular correspon-
diente por derivadas sucesivas. Las producciones asociadas al símbolo no
terminal A generan la expresión:

(a + b)*
Las producciones asociadas al símbolo no terminal B generan la expre-
sión:

(ab + b)(ab + b) *
Relacionando las dos expresiones anteriores con la producción corres-
pondiente al axioma S se tiene:
LEN GUAJ ES, GRAMÁTI CAS y A UTÓMATAS : UN E NFOQUE PRÁCTI CO 293

IR = (a + b)*ab(ab + b)(ab + b)* I


Por derivadas sucesivas, se obtiene la Gramática Regular que genera la
expresión anterior.

R = (a + b) *ab(ab + b)(ab + b)*


Da(R) = Da((a + b)*ab(ab + b)(ab + b)*) =
= Da((a + b)*)ab(ab + b)(ab + b) * + Da(ab(ab + b)(ab + b)*) =
= Da( (a + b))(a + b)*ab(ab + b)(ab + b)* +
+Da(a)b(ab + b)(ab + b)* =
= (a + b) *ab(ab + b)(ab + b)* + b(ab + b)(ab + b) * =
= [(a + b)*a + >.]b(ab + b)(ab + b) * = RO

Db(R) = Db((a + b) *ab(ab + b)(ab + b)*) =


= Db((a + b)*)ab(ab + b)(ab + b)* + Db(ab(ab + b)(ab + b)*) =
= Db((a + b))(a + b) *ab(ab + b)(ab + b)* +
+Db(a)b(ab + b)(ab + b) * =
= (a + b) *ab(ab + b)(ab + b)* = R

Da(RO) = Da([(a + b)*a + >']b(ab + b)(ab + b)*) =


= Da([(a + b) *a + >'])b(ab + b)(ab + b)* +
+Da(b(ab + b)(ab + b) * ) =
= (Da((a + b) * a) + Da (>') )b(ab + b) (ab + b)*) =
= (Da((a + b) * )a + Da(a))b(ab + b)(ab + b) * =
= [(a + b) *a + >']b(ab + b)(ab + b) * = RO
Db(RO) = Db([(a + b) *a + >.]b(ab + b)(ab + b)*) =
= Db([(a + b) * a + >'])b(ab + b)(ab + b)* +
+Db(b(ab + b)(ab + b) * ) =
= [(a + b) *ab + >.](ab + b)(ab + b)* = Rl

Da(Rl) = Da([(a + b) *ab + >.](ab + b)(ab + b)*) =


= Da([(a + b) *ab + >'])b(ab + b)(ab + b) * +
294 CAPÍTULO 4. GRAMÁTICAS TIPO 2 y AUTÓMATAS A PILA

+Da((ab + b)(ab + b)*) =


= [Da((a + b)*)ab + Da (ab)](ab + b)(ab + b)* +
+Da(ab + b)(ab + b)* =
= [(a + b)*a + >']b(ab + b)(ab + b)* + b(ab + b)* = R2

Db(Rl) = Db([(a + b)*ab + >.](ab + b)(ab + b)*) =


= [Db((a + b)*)ab + Db(ab)](ab + b)(ab + b)* +
+Db(ab + b)(ab + b)* =
= [(a + b)*ab(ab + b) + >.](ab + b)* = R3

Da(R2) = Da([[(a + b)*a + >.]b(ab + b) + b](ab + b)*) =


= Da([(a + b)*a + >.]b(ab + b) + b)(ab + b)* =
[Da ([(a + b)*a + >.])b(ab + b) + Da(b(ab + b))](ab + b)* =
= Da((a + b)*a)b(ab + b)(ab + b)* =
= [(a + b)*a + >']b(ab + b)(ab + b)* = RO

Db(R2) = Db([[(a + b)*a + >.]b(ab + b) + b](ab + b)*) =


= Db([(a + b)*a + >']b(ab + b) + b)(ab + b)* =
= [Db([(a + b)*a + >.])b(ab + b) + Db(b(ab + b)) + >.](ab + b)* =
= [(a + b)*ab(ab + b) + (ab + b) + >.](ab + b)* = R4

Da(R3) = Da([(a + b)*ab(ab + b) + >.](ab + b)*) =


= Da([(a + b)*ab(ab + b) + >.])(ab + b)* + Da((ab + b)*) =
[Da((a + b)*)ab(ab + b) + Da(ab(ab + b))](ab + b)* +
+Da(ab + b)(ab + b)* =
[(a + b)*ab(ab + b) + b(ab + b)](ab + b)* + b(ab + b)* =
[(a + b)*a + >']b(ab + b)(ab + b)* + b(ab + b)* = R2

Db(R3) Db([(a + b)*ab(ab + b) + >.](ab + b)*) =


Db([(a + b)*ab(ab + b) + >.])(ab + b)* + Db((ab + b)*) =
= (a + b)*ab(ab + b)(ab + b)* + (ab + b)* =
= [(a + b)*ab(ab + b) + >.](ab + b)* = R3
LENGUAJES , GRAMÁTICAS y AUTÓMATAS: UN ENFOQUE PRÁCTICO 295

Da (R4) = Da([(a + b)*ab(ab + b) + (ab + b) + .\](ab + b)*) =


= [Da((a + b)*ab(ab + b)) + b](ab + b)* + Da((ab + b)*) =
= [(a + b)*ab(ab + b) + b(ab + b) + b](ab + b)* + b(ab + b)* =
= [(a + b)*a + .\Jb(ab + b)(ab + b)* + b(ab + b)* = R2

D b(R4) = Db([(a + b)*ab(ab + b) + (ab + b) + .\](ab + b)*) =


= [Db([(a + b)*ab(ab + b)]) +
+Db((ab + b))](ab + b)* Db((ab + b)*) =
= [Db((a + b)*)ab(ab + b) + .\](ab + b)* + (ab + b)* =
= [(a + b)*ab(ab + b) + .\](ab + b)* = R3

En este momento, ya es posible extraer la gramática generadora de la


Expresión Regular anterior, que queda:

R aROlbR
RO .. - aRO I bRl
Rl .. - aR21bR31b
R2 .. - aROlbR41b
R3 ..- aR21bR31b
R4 .. - aR21bR31b

Si se renombran los símbolos no terminales, se obtendría la gramática


G = CL'T , L,N, S, P) , donde L,T = {a , b} , L,N = {S, A,B , C, D,E} , S es el
axioma y Pes:

S ..- aA I bS
A .. - aA I bB
B ..- aC I bD I b
C .. - aA I bE I b
D .. - aC I bD I b
E ..- aC I bD lb
296 CAPÍTULO 4 . GRAMÁTICAS TIPO 2 y AUTÓMATAS A PILA

Ejercicio 14.191

• Obtener el Autómata a Pila que reconoce el lenguaje:

• ¿Cuáles serían las transiciones efectuadas si las palabras de entrada son:


aabbbcaaaabb y aaabbaabb?

• ¿Qué modificaciones habría que realizar al autómata para que reconociera


el lenguaje:

L = {a n . bm . ¿p. a q . bT • c8 1Q = p + m, 2n = r + s, n, m 2 1,p 2 O}?

1. En el ejercicio, se pide guardar primero las a's, para luego sacarlas


cuando aparezcan las b's , y guardar las b's y c's para recuperarlas
cuando aparezcan las segundas a's. Por tanto, un posible Autómata
a Pila que reconoc~ría el lenguaje, por vaciado de pila, sería:
AP=( {a,b ,c },{A,a,b ,c },{qo ,q¡} ,A,qo'¡ ,0)
donde f:
f(qo ,a,A)={ (qo ,aA)} f( qo ,a,a)={ (qo ,aa)}
f( qo ,b,a)={ (qo,ba)} f( qo ,b,b )={ (qo ,bb)}
f( qo ,c,b )={ (qo,cb)} f( qO,c,c)={ (qO ,ce)}
f( qo ,a,c)={ (ql ,A)} f( qo ,a,b )={ (ql ,A)}
f( ql ,a,c) ={ (ql ,A)} f( ql ,a,b )={ (ql ,A)}
f( ql ,b,a) ={ (ql ,A)} f( ql ,A,A)={ (ql ,A)}

2. Las transiciones se describen por secuencias de descripciones InS-


tantáneas, por lo que las transiciones pedidas serían:
LENGUAJES, GRAMÁTICAS y AUTÓMATAS: UN ENFOQUE PRÁCTICO 297

• (qo,aabbbcaaaabb,A)I-(qo,abbbcaaaabb,aA)1-
1- (qo,bbbcaaaabb,aaA)1- (qo ,bbcaaaabb,baaA)1-
1- (qO, bcaaaabb, bbaaA) 1- (qO ,caaaabb, bbbaaA)1-
1-( qo,aaaabb,cbbbaaA)1-( q¡ ,aaabb,bbbaaA)1-
1-( q¡ ,aabb, bbaaA)1-( q¡ ,abb,baaA)I-( q¡ ,bb,aaA)1- (q¡ ,b,aA)1-
1- (q¡ ).,A)I- (q¡ ,A,A)

Reconoce la palabra
• (qo,aaabbaabb,A)I-(qo,aabbaabb,aA)I-(qo,abbaabb,aaA)1-
1- (qO, bbaabb,aaaA)1- (qO, baabb, baaaA) 1- (qO ,aabb,bbaaaA) 1-
1-( q¡ ,abb,baaaA)1-( qo ,bb,aaaA)1-
1-( q¡ ,b,aaA)I-( q¡ ,A,aA)

No reconoce la palabra por no haber más transiciones posibles


y no haber ningún camino alternativo que considerar, por ser
determinista

3. Como ahora el autómata tiene al final que recuperar una b o una e


por cada dos a's, entonces habrá que introducir dos a's al principio
en la pila. El autómata quedará como:
AP= ({ a, b,c}, {A,a, b,c}, {qo ,q¡ ,q2} ,A,qo,J ,0)
donde f:
f(qo ,a,A)={ (qo ,aaA)} f( qO ,a,a)={ (qO ,aaa)}
f( qo,b,a)={ (qo,ba)} f(qo,b ,b)={ (qo,bb)}
f( qo ,c,b )={ (qo ,cb)} f( qO ,c,c)={ (qo ,cc)}
f( qo ,a,c) ={ (q¡).)} f( qo ,a,b )={ (ql).)}
f( q¡ ,a,c)={ (q¡).)} f( ql ,a,b )={ (ql ,A)}
f( q¡ ,b ,a) ={ (q¡).)} f( q¡ ,c,a) ={ (q2 ,A)}
f( q2,c,a)={ (q2 ,A)} f( q2,A,A)={ (q2,A)}
298 CAPÍTULO 4. GRAMÁTICAS TIPO 2 y AUTÓMATAS A PILA

Ejercicio 14.201
Demostrar formalmente si las palabras abbaabbbba, abaaba, y bababbab
pertenecen al lenguaje aceptado por el autómata que reconoce al lenguaje:

Hay varias formas de realizar el ejercicio, entre las que se van a destacar
dos y se comentará sólo una.

1. Construir una gramática de tipo 2 que genere el lenguaje y, a partir


de ella, construir el Autómata a Pila que puede reconocer las palabras
del lenguaje. Una posible gramática que generaría el lenguaje sería:
G 2 = ({a , b} , {S, A} , S, P) donde P :

S::=a . S· alb· S· bla· A . bla . b


A::=a . A . bla . b
El Autómata a Pila correspondiente sería:
AP=( {a, b}, {S, A, a, b, Ao} , {qo, ql, qd, A o, qo, f, {q2})
donde f:

f(qo, >., Ao) = {(ql, SAo)}


f (ql, >., S) = {(ql, aSa), (ql, bSb), (ql, aAb), (ql, ab)}
f(ql,>.,A) = {(ql , aAb),(ql,ab)}
f(ql,a,a) = {(ql,>')}
f(ql,b,b) = {(ql,>')}
f (ql , A, Ao) = {( q2 , Ao)}

A partir de aquÍ, utilizando las descripciones instantáneas y las deriva-


ciones, se puede demostrar si una palabra pertenece o no al lenguaje.
ASÍ:
LENGUAJES , GRAMÁTICAS y AUTÓMATAS: UN ENFOQUE PRÁCTICO 299

• (qO, abbaabbbba, Ao) 1- (ql, abbaabbbba, SAo) 1-


1- (ql , abbaabbbba, aSaAo) 1- (ql, bbaabbbba, SaAo) 1-
1- (ql, bbaabbbba, bSbaAo) 1- (ql, baabbbba, SbaAo) 1-
1- (ql , baabbbba, bSbbaAo) 1- (ql, aabbbba, SbbaAo) 1-
1- (ql, aabbbba, aAbbbaAo) 1- (ql, abbbba, AbbbaAo) 1-
1- (ql , abbbba, abbbbaAo) 1- (ql, bbbba, bbbbaAo) 1-
1- (ql, bbba, bbbaA o) 1- (ql, bba, bbaAo) 1- (ql, ba, baAo) 1-
1- (ql , a, aAo) 1- (ql, A, Ao) 1- (q2, A, Ao)
Acepta la palabra por estado final (q2).

• abaaba: Se haría igual que la anterior, salvo que, en este caso, la


palabra no es aceptada. Para demostrar formalmente que no es
aceptada habría que considerar todas las posibles derivaciones a
partir de cualquier descripción instantánea. Así, si se tiene en
la cima de la pila el símbolo A, habría que considerar los dos
movimientos especificados en la tabla de transiciones.

• bababbab: De igual forma a las dos palabras anteriores, se de-


muestra que esta palabra es aceptada por el autómata. Se deja
esta demostración como ejercicio al lector.

2. Construir directamente el Autómata a Pila a partir del lenguaje. En


este caso, habría que analizar qué transiciones habría que tener en
cuenta para que funcionara el autómata correctamente. Informal-
mente, se podría tener en cuenta lo siguiente: como los símbolos de
la palabra w deben aparecer en orden inverso en w- 1 , habría que
meter en la pila las aes y bes para luego sacarlas. Por cada b que se
meta cuando hay una a encima de la pila, se puede transitar a otro
estado en el que se empiecen a quitar las aes acumuladas con las bes
que aparezcan, para poder reconocer la parte central (a r . br ). Por
tanto, podría quedar el Autómata a Pila No Determinista de la forma
siguiente:

AP=( {a, b} , {A, a, b} , {qO, ql, q2}, A, qo, j, 0)

donde j:
300 CAPÍTULO 4 . GRAMÁTICAS TIPO 2 y AUTÓMATAS A PILA

f(qo , a, A) = {(go , aA)}


f(qo ,a, a) = {(qo,aa)}
f(go, a, b) = {(qO, ab)}
f(qo, b, A) = {(qO , bA)}
f(qo , b, a) = {(qO, ba) , (ql , A)}
f(go,b , b) = {(qo , bb)}
j(ql , b,a) = {(ql,A)}
j(ql , a,a) = {(q2,A)}
j(ql , b,b) = {(q2,A)}
f(ql , A, A) = {(q2 , A)}
j(q2 , a, a) = {(q2,A)}
j(q2,b,b) = {(q2,A)}
f (q2, .x, A) = {( q2 , A)}

Para demostrar si una palabra pertenece o no al lenguaje, se haría de


la misma forma que la solución anterior.

Ejercicio 14.211
Sea la siguiente gramática de contexto libre:

G=( {a,b,c,d,e,O,1 },{S ,A,B},S,P)

Donde P viene definido por:

S "-
" AaB 1AaC
A "-
" AblAclblc
B .." - BdCIO
C ,, -
.. CeB 11
Construir un Autómata a Pila que acepte por estado final que reconozca el
mismo lenguaje que el descrito por la gramática.

Lo primero que hay que hacer es pasar la gramática a su Forma Normal


de Greibach. Para ello se elimina, en primer lugar, la recursividad por
la izquierda. Las reglas de producción de la gramática equivalente sin
recursividad serán:
LENGUAJES, GRAMÁTICAS y AUTÓMATAS: UN ENFOQUE PRÁ CTICO 301

s .... - AaB I AaC


A .. -
bD I cD lb I c
D .. - bD cD b c
B .. - OEIO
E .. - dCE 1dC
C .... - lF 11
F .. - eBF I eB
Al pasar esta última a Forma Normal de Greibach quedará:

s .. - bDG 1cDG I bDH I cDH I bG I cG I bH I cH


G .. - aB
H .. -
.. aC
A ..
.. -
bD IcD lb Ic
D .... - bD cD b c
B
E
.... -
.... -
OE I°
dCE I dC
C .. - lF 11
F .... - eBF 1eB
A continuación, se calcula el Autómata a Pila que reconoce el mismo
lenguaje que el de la gramática anterior. Dicho autómata será:

APV=( {a,b,c,d ,e,O,1},{S,A,B,C,D,F ,G,H} ,{q} ,S,q,f,0)

donde f se define como:

f( q,b,S)={ (q,DG) ,(q,DH),( q,G) ,(q,H)} f(q,b ,A)={ (q,D),(q,A)}


f( q,c,S)={ (q,DG) ,(q,DH),( q,G) ,(q,H)} f( q,O,B)={ (q,E) ,(q,A)}
f(q,c ,A)={ (q,D) ,(q,A)} f(q,d,E)={ (q,CE),(q,C)}
f(q,a,G)={(q,B)} f( q,a,H)={ (q,C)}
f( q,I,C)={ (q,F),( q,A)} f(q,b,D)={ (q,D),(q,A)}
f( q,c,D)={ (q,D) ,(q,A)} f(q,e ,F)={ (q,BF) ,(q,B)}
Por último habrá que convertir este último autómata en su equivalente
que acepte por estado final. El resultado final será:

APF= ({a, b,c,d,e,O, 1}, {S,A,B,C,D,F ,G ,H,I}, {p,q,r } ,I,p,f, {r } )

donde f queda definida por:


302 CAPÍTULO 4. GRAMÁTICAS TIPO 2 y AUTÓMATAS A PILA

f(p,A,I)={ (q,IA)} f( q,b,S)={ (q,DG),( q,DH) ,(q,G),( q,H


f(q,b,A)={ (q,D),(q,A)} f( q,O,B)={ (q,E),( q,A)}
f( q,c,S)={ (q,DG),( q,DH),(q,G),( q,H)} f(q,c,A)={ (q,D),(q,A)}
f(q,d,E)={ (q,CE),(q,C)} f(q,a,G)={ (q,B)}
f( q,a,H)={ (q,C)} f( q,1,C)={ (q,F) ,(q,A)}
f(q,b,D)={ (q,D),(q,A)} f(q,c ,D)={ (q,D),(q,A)}
f( q,e,F) = { (q,BF), (q,B) } f( q,A,I)={ (r,A)}

Ejercicio 14.221
Sea la siguiente gramática de contexto libre:

donde:

~T = {0 .... 9.x.sin.cos.(.).d.D.+.-.a.k.t,J}

~N = {Prob.Exp.Term.Power.Trig.Const.Var.lnt}

y P viene definido por:

Prob ..- J Exp d Var 1 D Exp Var


Exp .. - Term 1 Term + Exp 1 Term - Exp
Term .. - Const 1 Var 1 (-Term) 1 Trig 1 Power 1 Prob 1 (Exp)
Power .. - (Var t Term)
Trig .. - (sin Var) 1 (cos Var)
Const .. - Int 1 a 1 k
Var .. - x
Int .. - 0111213141516171819
LENGUAJES, GRAMÁTICAS y AUTÓMATAS: UN E NFO QUE PRÁCTICO 303

Realizar un Autómata a Pila que reconozca por estado final el mismo len-
guaje que el descrito por la gramática Indicar también tres sentencias del
o

lenguaje de longitud superior a 50

En primer lugar, se ordenan los símbolos no terminales para clasificar las


reglas en los tres grupos descritos en la teroía, y después pasarlo a FNGo La
ordenación elegida es: (Exp,Term,P-term,Power,Trig,Const,Var,Int,Prob) o
La categoría de cada regla se muestra en la siguiente tabla:

Prob 00-
00 f Exp d Var 1 D Exp Var (1)(1)
Exp 00-
00 Term 1Term + Exp 1Term - Exp (2)(2)(2)
Term 000-
0 Const 1 Var 1 (-Term) (2)(2)(1)
Term 00 00- Trig 1 Power 1 Prob 1 (Exp) (2)(2)(2)(1)
Power 000-
0 (Var t Term) (1)
Trig 0000- (sin Var) 1 (cos Var) (1)(1)
Const 0000- Int 1a 1 k (2)(1)(1)
Var 000-
0 x (1)
Int 000-
0 0111 2 13141516171819 (1)000(1)

Para pasarlo a FNG, al no haber reglas recursivas por la izquierda, ni


reglas del Grupo 3, bastará con introducir los siguientes símbolos no ter-
minales con sus respectivas reglas:

A 000-
0 d
B 00 -
C 00- )
D 00-
00 t
E 00-
00 sin
F 00-
00 cos
G 00-
00 +

Haciendo las sustituciones oportunas, las producciones de la gramática


en FNG quedarán:
304 CAPÍTULO 4. GRAMÁTICAS TIPO 2 y AUTÓMATAS A PILA

Prob .. - J Exp A Var 1D Exp Var


Exp .... - ( B Term C 1(Exp C
Exp alklx
Exp .. - 0111213141516171819
Exp ..- (F Var e 1(E Var e
Exp .. - (var D Term e
Exp .. - J Exp A Var 1D Exp Var
Exp .. - ( B Term e G Exp 1(Exp e G Exp
Exp .. - a G Exp 1k G Exp 1x G Exp
Exp .. - O G Exp 11 G Exp 12 G Exp 13 G Exp 14 G Exp
Exp .. - 5 G Exp 16 G Exp 17 G Exp 18 G Exp 19 G Exp
Exp .. - (F Var e G Exp 1(E Var e G Exp
Exp ..- (var D Term e G Exp
Exp .. - J Exp A Var G Exp 1D Exp Var G Exp
LENG UA JES , GRAMÁTICAS y AUTÓMATAS: UN ENFOQUE PRÁCTICO 305

Exp 00-

0 0 ( B Term C B Exp 1 (Exp C B Exp


Exp 0
00
0 -

a B Exp 1 k B Exp 1 x B Exp


Exp 00-
00 O B Exp 1 1 B Exp 1 2 B Exp 1 3 B Exp 1 4 B Exp
Exp 00-
0 0 5 B Exp 1 6 B Exp 1 7 B Exp 1 8 B Exp 1 9 B Exp
Exp 00-
0 0 (F Var C B Exp 1 (E Var C B Exp
Exp 00- (var D Term C B Exp
Exp 00- J Exp A Var B Exp 1 D Exp Var B Exp
Term 00- ( B Term C 1 {Exp C
Term alklx
Term 0 0-
0111 2 131 4 1516171819
Term 00- (F Var C 1 (E Var C
Term 00-
00 (var D Term C
Term 00- J Exp A Var 1 D Exp Var
Power 00- {var D Term C
Trig 00- {F Var C 1 (E Var C
Const 0
0
0
0
-

alk
Const 0 0-
0111 2 131 4 1516171819
Var 00- x
Int 00-
00
0111213141516171819
A d
B 00-
0 0

C 0
00
0 -

)
D 00-
0 0
t
E 00- sin
F 00 - cos
G 00 -
+
y se pasa la gramática anterior a Autómata a Pila por vaciado de pilao

AP=(~T,~N ,{ q},Prob,q,f,0)

donde:

~T = {0, oo,9,x,sin,cos,{,),d,D,+ ,-,a,k,t,J}

~N = {Prob,Exp,Term,Power,Trig,Const,Var,Int,A,B,C,D,E,F,G,H,I}

y f viene definido por:


306 CAPÍTULO 4. GRAMÁTICAS TIPO 2 y AUTÓMATAS A PILA

f( q,J ,Prob) (q,Exp a Var)


f(q,D,Prob) (q,Exp Var)
f(q,(,Exp) (q,B Term C)
f(q,(,Exp) (q,Exp C)
f(q,a,Exp) (q,A)
f(q,k,Exp) (q,A)
f(q,x,Exp) (q,A)

f(q,cos,F) = (q,A)
f(q,+,G) (q,A)

Las sentencias podrían ser:

D a - (sin x)+(x t k) , I (sin x) (cos x) d x, I 3 x d x

Ejercicio 14.231
Dada la siguiente gramática de tipo 2, que forma parte de una gramática
de un lenguaje de alto nivel, se pide obtener el Autómata a Pila que reconoce
las palabras que genera dicha gramática.

G = ({[ , ],and, or, not, =, >, <, id, num} , {8, e, V} , 8, P)

donde Pes:

P = {(8 ::= [e and eJ), (8 ::= [e or eJ), (8 ::= [ not eJ),


(e ::= [V = vJ) , (e ::= [v> vJ), (e ::= [V < vJ),
(V::= id), (V ::= num)}

También se pide comprobar si reconoce la palabra:

[[ id = num 1or [num > id II


LENGUAJES, GRAMÁTICAS y AUTÓMATAS: UN ENFOQUE PRÁCTICO 307

Utilizando el método de conversión de una gramática de tipo 2 a un


AP, primero se debe comprobar que la gramática está en FNG. Como no lo
está, se emplea el método de conversión de una gramática a FNG descrito
en este capítulo. Para ello, se sustituyen los símbolos terminales que no
aparecen como primeros símbolos de las partes derechas de las reglas por
símbolos no terminales que sólo lleven a esos símbolos terminales. Así, se
convierte la gramática a:

G' = ({[,], and,or,not, =, >, <, id,num} , {8, C, V, D, E , F, G, H , I , J} , 8, P)


p' = {(8 ::= [CDCE), (8 ::= [CFCE), (8 ::= [GCE),
(C ::= [VHVE), (C ::= [VIVE) , (C ::= [V JVE),
(V::= id) , (V ::= num), (D ::= and), (E ::=]), (F ::= or),
(G ::= not), (H ::==), (I ::=», (J ::=<)}

Ahora, se puede obtener el AP que reconoce las palabras que genera


dicha gramática:

AP = (~, f, {q}, 8, q, f, 0)

donde:

• ~ = {[,], and,or,not, =, >, <, id,num}j


• f = {8,C, V,D,E,F,G,H,I, J}j y

• f:

f(q, [,8) = {(q, CDCE), (q, CFCE), (q , GCE)}


f(q , [, C) = {(q, V HV E), (q, V IV E), (q, V JV E)}
f(q, id , V) = {(q, A)}
f(q, num , V) = {(q , A)}
f(q, and ,D) = {(q, A)}
f (q, ], E) = {( q, A)}
f(q, or ,F) = {(q, A)}
f(q , not , G) = {(q , A)}
f(q , =, H) = {(q , A)}
f(q, >,1) = {(q, A)}
f(q, <, J) = {(q, A)}
308 CAPÍTULO 4. GRAMÁTICAS TIPO 2 y AUTÓMATAS A PILA

Para saber si reconoce la palabra de entrada, se parte de la descripción


instantánea inicial y se va transitando de acuerdo a la función f hasta que la
pila y la entrada estén vacías, en cuyo caso, ha reconocido la palabra. Si no,
no la habrá reconocido. En este caso, existe un conjunto de movimientos
que permite pasar desde la descripción inicial hasta la descripción (q , A, A) ,
por lo que acepta la palabra.

(q, [[ id = num] or [num > id ]] , S) f-


f- (q, [id = num] or [num > id]J , CFCE) f-
f- (q, id = num] or [num > id ]] , V HV EFCE) f-
(q, = num] or [num > id ]] , HV EFCE) f-
f- (q , num] or [num > id ]], V EFCE) f-
(q,] or [num > id ]] , EFCE) f-
f- (q, or [ num > id]J, F CE) f- (q, [num > id]J, CE) f-
(q , num > id]J, V IV EE) f-
f- (q, > id]J, IV EE) f- (q, id]J, V EE) f- (q,]J, EE) f- (q , J, E) f-
f- (q,A,A)

Este Autómata a Pila podría reconocer palabras de este lenguaje, por


lo que podría ser la parte del compilador de ese lenguaje que se encarga
de realizar el denominado análisis sintáctico o comprobación de que las
palabras de entrada cumplen con las reglas de la gramática del lenguaje.

Ejercicio 14.241
Dada la gramática siguiente perteneciente a una parte del lenguaje COMMON-
LISP, obtener el Autómata a Pila que reconozca sentencias válidas.

G = ({ (,do,) ,id,num,and,or ,not ,print ,cdr ,length, +} ,


{S,A,C, E,ME , V,N, VN},S, P)

donde P:
LENGUAJES, GRAMÁTICAS y AUTÓMATAS: UN ENFOQ UE PRÁCTICO 309

S e
:: = ( do ( A ) ( E ) M E )
A :: = ( V E E ) A I ( V E E )
e :: = (and E E ) I (or E E ) I ( not E )
E ::= (print V) I (cdr V) I (length V) I ( + VN VN ) IVI N
ME ::= E ME I A
V ::= id
N ::= num
VN ::= V IN

Primero, hay que convertir la gramática a otra equivalente en FNG .


Para ello, se sustituyen los símbolos terminales que no aparezcan en la
primera posición de la parte derecha de las producciones por símbolos no
terminales que sólo lleven a dichos símbolos terminales. ASÍ, la regla:
S::= ( do (A) ( C E ) ME )
se transforma en:
S ::= (D P A P ' P CE P ' ME P '
D ::= do
P :: = (
P ' ::=)

Las reglas:
A::= ( V E E ) A I(V E E )
se transforman en:

A :: = ( V E E P ' A I(V E E P'

Las reglas:
C::= ( and E E ) I( or E E ) I (not E)
se transforman en:

C ::= ( Y E E P ' I(O E E P' I(T E P'


Y ::= and
0::= or
T ::= not

Las reglas:
E::= (print V) I ( cdr V) I ( length V) I ( + VN VN ) IVI N
se transforman en:
310 CAPÍTULO 4. GRAMÁTICAS TIPO 2 y AUTÓMATAS A PILA

E ::= ( R V P' I(L V P' I(G V P' I(M VN VN P' I id I num


R ::= print
L ::= cdr
G ::= length
M::=+

Aquí, las reglas E::=V y E::=N se han transformado en FNG sin más
que sustituir todas las producciones de V y N, respectivamente, por las
partes derechas de sus producciones. Las reglas:
ME::= E ME I A
se convierten a FNG eliminando la regla no generativa y sustituyen-
do la E por todas las partes derechas de sus producciones, quedando las
producciones:

ME ::= ( R V P ' I ( L V P ' I ( G V P ' I ( M VN VN P ' I id I num I


( R V P ' ME I ( L V P ' ME I ( G V P ' ME I
( M VN VN P ' ME I
id ME I num ME

Por último, las reglas


VN::= V IN
se convierten en:

VN ::= id I num

Por tanto, la gramática equivalente en FNG sería:

donde

~~ {(, da , ), id, num, and, or, not , print , cdr, length, +} ,


~~ {S, A , C, E , Q, V, N , W , D , P, P' , Y , O,T , R , L , G, M}

y p' será:
LEN GUAJES, GRAMÁTICAS y AUTÓMATAS: UN ENFOQUE PRÁCTICO 311

S ::= ( D P A P P' e E P' Q P'


D ::= do
P ::= (
P' :: =)
A ::= ( V E E P' A I ( V E E P'
e ::= ( Y E E P' I ( o E E P' I ( T E P'
Y ::= and
o :: = or
T ::= not
E ::= ( R V P' I ( L V P' I ( G V P' I ( M W W P' I id I num
R ::= print
L ::= cdr
G ::= length
M ::=+
Q ::= ( R V P' I ( L V P' I ( G V P' I ( M W W P' I id I num I
( R V P ' Q I ( L V P ' Q I ( G V P ' Q I ( M W W P' Q I
id Q I num Q
v ::= id
N ::= num
W ::= id I num

Se han sustituido los símbolos no terminales ME y VN por Q y W,


respectivamente, para evitar confusiones con las secuencias de símbolos no
terminales M y E , Y V Y N. A partir de esta gramática se puede construir
el Autómata a Pila que reconoce el lenguaje generado por esta gramática;
es decir, las sentencias COMMON-LISP que se pueden formar con estas pro-
ducciones. Este autómata se puede construir de forma que reconozca por
estado final o por vaciado de pila. Se construirá de las dos formas.

• AP que reconoce por vaciado de pila. Se define de la siguiente


forma:

APv = (~~, ~~, {q}, S, j , 0)

donde ~~ y ~~ se han definido anteriormente, S es el axioma de la


gramática, y j será:

j(q, (,S) = {(q , DPAPP'CEP'QP')}


j(q , do, D) = {(q, A)}
312 CAPÍTULO 4 . GRAMÁTICAS TIPO 2 y AUTÓMATAS A PILA

f(q , (,P) = {(q , A)}


f(q,) , P') = {(q, A)}
f(q, (,A) = {(q, VEEP'A) , (q, VEEP')}
f(q, (, C) = {(q , y EEP') , (q , OEEP') , (q , TEP')}
f(q, and, Y) = {(q, A)}
f(q,or,O) = {(q,A)}
f(q, not, T) = {(q , A)}
f(q,( , E) = {(q , RVP') , (q,LVP') , (q,GVP'),(q,MWWP')}
f(q, id, E) = {(q, A)}
f(q ,nurn, E) = {(q , A)}
f(q,print,R) = {(q , A)}
f(q, cdr, L) = {(q , A)}
f(q , length, G) = {(q , A)}
f(q, +, M) = {(q, A)}
f(q, (, Q) = {(q, RV P') , (q, LV P'), (q, GV PI), (q, MWW PI),
(q , RV P'Q), (q, LV P'Q) , (q , GV P'Q) ,
(q,MWWP'Q)}
f(q,id,Q) = {(q,A)}
f(q , nurn, Q) = {(q , A)}
f(q, id, V) = {(q, A)}
f(q, nurn, N) = {(q, A)}
f(q, id, W) = {(q , A)}
f(q,nurn, W) = {(q,A)}

• AP que reconoce por estado final. Se define de la siguiente


forma:

donde

- ~ = 1:~ U ~~;
- r = ~~ U ~~ U {Ao} ; y
- f:

f(qo , A, A o) = {ql , SA o}
f(ql , A, S) = {(ql, (DPAPP'CEP'qP'))
f(ql, A, D) = {(ql, do)}
LENGUAJES, GRAMÁTICAS y A UTÓMATAS : UN E NFO QUE PRÁCTICO 313

f(ql , A, P) = {(ql , O}
f(ql, A, P') = {(ql,))}
f(ql,A , A) = {(ql, (VEEP'A), (ql, (VEEP')}
f(ql , A, C) = {(ql , (Y EEP') , (ql , (OEEP') , (ql , (TEP'))
f(ql , A, Y) = {(ql, and)}
f(ql, A, O) = {(ql, or)}
f(ql , A,T) = {(ql , not)}
f(ql , A, E) = {(ql , (RV P'), (ql , (LV P'), (ql, (GV P') ,
(ql, (MWW P'), (ql , id), (ql , num)}
f(ql , A, R) = {(ql , print)}
f(ql , A, L) = {(ql, cdr)}
f(Ql , A, G) = {(Ql, length)}
f(Ql , A, M) = {(Ql , +)}
f(Ql, A, Q) = {(Ql, (RV P'), (Ql, (LV P'), (Ql , (GV P') ,
(Ql, (MWW P'), (Ql, (RV P'Q), (Ql, (LV P'Q),
(Ql , (GV P'Q) , (Ql , (MWW P'Q) ,
(Ql , id), (Ql,num)}
f(Ql, A, V) = {(Ql, id)}
f(Ql , A, N) = {(Ql , num)}
f(Ql , A, W) = {(Ql, id) , (Ql , num)}
f(Ql , (, O = {(Ql , A)}
f(Ql , do, do) = {(Ql , A)}
f( Ql , ), )) = {( Ql , A)}
f (Ql, id, id) = {( Ql , A)}
f(Ql , num, num) = {(Ql , A)}
f(Ql, and, and) = {(Ql, A)}
f(Ql,or , or) = {(Ql,A)}
f(Ql , not, not) = {(Ql , A)}
f(Ql,print,print) = {(Ql , A)}
f(Ql ,cdr,cdr) = {(Ql,A)}
f(Ql , length , length) = {(Ql , A)}
f(Ql , +, +) = {(Ql, A)}
f (Ql, A, Ao }) = {( Q2, Ao)}
314 CAPÍTULO 4. GRAMÁTICAS TIPO 2 y AUTÓMATAS A PILA

Una cuestión que tienen en común ambos métodos es que no aseguran la


obtención de AP Deterministas. De hecho en los dos casos se han obtenido
APND. Esto causa que el análisis que se debe realizar en los compiladores
para saber si una sentencia pertenece al lenguaje o no, denominado análisis
sintáctico, sea complejo, debido a que, dado un símbolo de entrada y una
descripción del autómata (estado y situación de la pila) no es capaz de saber
cuál de las posibles transiciones se debe realizar. Una de las soluciones que
hay para resolver este no determinismo consiste en relajar la restricción
de que la gramática esté en FNG , permitiendo reglas no generativas, a
cambio de que para cada símbolo no terminal, cada una de sus producciones
comience por un símbolo terminal distinto. Es decir, no puede haber un
A E ~N tal que haya dos producciones A ::= aX y A ::= aY donde
X , Y E ~* Y X =1 y. l
Así, para convertir la gramática anterior a una gramática equivalente
que pudiera dar lugar a un APD, habrá que transformar todas las produc-
ciones que cumplan lo anterior. Para ello, se puede factorizar a izquierdas,
utilizando el método descrito en el capítulo 2.
Por ejemplo, las producciones:
A::= ( V E E P ' A I ( V E E P '
se pueden transformar en:

A ::= ( V E E P ' A'


A' ::= A IA

Como la producción A'::=A no está en FNG , se convierte, sustituyendo


A por sus partes derechas, quedando:

A ::= ( V E E P' A'


A' ::= ( V E E P ' A' I A

Estas producciones ya están en FNG. Si se repite el proceso para aque-


llas producciones de un símbolo no terminal que comiencen por el mismo
símbolo terminal, se obtendría sI siguiente conjunto de producciones P":

lExiste otra restricción más que no se estudiará por salirse de la intención del libro.
L ENGUAJ ES , GRAMÁTICAS y AUTÓMATAS: UN E NFOQUE PRÁCTICO 315

S ::= (D P A P P' C E P' Q P'


D ::= do
P ::= (
P' ::=)
A ::= ( V E E P ' A'
A' ::= ( V E E P ' A' I A
C ::= (C'
C' ::= and E E P ' I or E E P ' I not E P '
E ::= ( E' I id I num
E' ::= print V P ' I cdr V P ' Ilength V P ' I + W W P '
Q ::= ( Q' I id I num I id Q I num Q
Q' ::= print V P ' Q" I cdr V P ' Q" Ilength V P ' Q" I + W W P ' Q"
Q" ::= print V P ' Q" I cdr V P ' Q" I length V P ' Q" I + W W P ' Q" I A
V ::= id
N ::= num
W ::= id I num

Las producciones correspondientes a Y, 0 , T , R , L, G, y M se han


eliminado, ya que, al sustituirlos en las producciones de C', Q' y E ' serían
símbolos no terminales inaccesibles. Como se puede comprobar, todas las
partes derechas de las producciones de cada símbolo no terminal comienzan
por símbolos terminales distintos o por A.

Ejercicio 14.251
Supóngase un lenguaje de programación en el que existe una sentencia for
que permite que, en cada ciclo, se actualicen varias variables en un solo paso.
La sintaxis de este for se puede resumir de la siguiente forma :

for A [{as A}* and A] do {S;}* S

Donde la notación [xl significa que x puede aparecer o no .


A puede tomar las siguientes formas:

• variable from expresión1 to expresión2

• variable from expresión1 downto expresión2 by expresión3

• variable from expresión1 upto expresión2 by expresión3


316 CAPÍTULO 4. GRAMÁTICAS TIPO 2 y AUTÓMATAS A PILA

• variable = expresión1 then expresión2

S son sentencias de asignación con la siguiente sintaxis: variable : =


expresión donde las expresiones pueden ser:

• expresión1 + expresión2

• expresión1 * expresión2

• (expresión)

• variable

• número

Un ejemplo de sentencia válida sería:

for i from (x*x) downto x by 2 as


j from x to x+x and
k = 2 then (j+1) do
y : =k*(i+j)

Se pide definir la gramática G que generaría sentencias válidas del for y el


Autómata a Pila que permitiera realizar el análisis sintáctico de las sentencias de
entrada; es decir, que permitiera reconocer o no sentencias que pertenezcan al
lenguaje generado por la gramática . ¿Se podría haber utilizado una gramática
regular para describir este lenguaje?

U na posible gramática sería:

donde

.~T = {for,do,as,and,id,from,to,downto,by,upto,=,then,
;,: = ,+ ,* ,(,),num}
.~ N = {F,A, H , S , I , E}
.P:
LENGUAJES, GRAMÁTICAS y AUTÓMATAS: UN ENFOQUE PRÁCTICO 317

F :: = for A do S
A ::= H as A I H and H I H
H ::= id from E to E I id from E downto E by E
id from E upto E by E I id = E then E
S ::= 1 j Sil
1 ::= id := E
E ::= E + E I E * E I ( E ) I id I num

Debido a que existen aspectos que no pueden tratar las gramáticas regu-
lares, la gramática debe ser de tipo 2 o menor. Un ejemplo de aspecto que
no puede controlar las gramáticas de tipo 3 es que el número de paréntesis
de apertura concuerde con el número de paréntesis de cierre.
Esta gramática no está en FNG, por lo que hay que transformarla antes
para poder construir el Autómata a Pila que reconozca el lenguaje. En el
caso de la primera regla, habría que sustituir los símbolos terminales que
no sean los primeros de la parte derecha (en este caso el do) por símbolos
no terminales que sólo lleven a dichos símbolos terminales. ASÍ, se trans-
formaría en las reglas:

F ::= for A D S
D ::= do

En el caso de las producciones del símbolo A, sus partes derechas co-


mienzan por un símbolo no terminal H, con lo que hay que sustituirlo por
las producciones de H. Quedarían las reglas:

A ::= id from E to E as A I id from E downto E by E as A


id from E upto E by E as A I id = E then E as A
id from E to E and A I id from E downto E by E and A
id from E upto E by E and A I id = E then E and A
id from E to E I id from E downto E by E
id from E upto E by E I id = E then E

Ahora hay que sustituir los símbolos terminales de la derecha que no


sean los primeros, por lo que quedarían:
318 CAPÍTULO 4. GRAMÁTICAS TIPO 2 y AUTÓMATAS A PILA

A ::= id RE T E A' A I id R E O E B E A' A


id RE U E B E A' A I id G E T' E A' A I id R E T E N A
id RE O E B E N A I id R E U E B E N A I id G E T' E N A
id RE T E I id R E O E B E I id R E U E B E I id G E T' E
R ::= froro
T ::= to
G .. - -
A' ::= as
N ::= and
O ::= downto
U ::= upto
B ::= by
T' ::= then

De forma similar, las producciones de H se transformarían en:

H ::= id R E T E lid R E O E BE lid R E U E BE lid G E T' E

En el caso de las producciones de S, hay que sustituir las producciones


de 1 y sustituir los símbolos terminales j y : =, generando las producciones:

S ::= id P E C S I id P E
P ..= :=
e :: = j

La producción de 1 necesita sustituir el símbolo : = por P, quedando:

1 ::= id PE

Las producciones de E presentan recursividad por la izquierda, por lo


que primero hay que eliminarla. Se generarían las siguientes producciones:

E :: = ( E ) E' I id E' I num E'


E' :: = + E E ' I * E E ' I A

Si se sustituye el símbolo terminal ), quedarián:

E ::= ( E P' E' I id E' I num E'


E' ::= + E E' I * E E' I A
P' ::= )
L ENGUAJES, GRAMÁTICAS y AUTÓMATAS: UN ENFOQUE PRÁCTICO 319

Por último, se puede eliminar la regla no generativa E::=>., quedando:

E ::= ( E P' E' I id E' I num E' I ( E P' I id I num


E' ::= + E E' I * E E' 1+ E 1* E
P ' ::=)

Por tanto, la gramática equivalente en FNG , sería:

donde ~~ = {F, D , A, R , T , G, A' , N, 0, U, B, T', H , S , P, e, 1, E, E', PI}


yPl:

F ::= for A D S
D :: = do
A ::= id R E T E A' A I id R E o E B E A' A
id R E U E B E A' A I id G E T' E A' A I id R E T E N A
id R E o E B E N A I id R E U E B E N A I
id G E T ' E N A I id R E T E I id R E o E B E I
id R E U E B E I id G E T ' E
R ::= from
T ::= to
G ..
A' ::= as
N ::= and
O ::= downto
U ::= upto
B ::= by
T ' ::=
then
H ::= id R E T E I id R E O E BE lid R E U E B E I
id G E T ' E
e
S ::= id P E S I id P E
P ::= :=
e .. -,
1 ::= id PE
E :: = ( E P ' E' I id E' I num E' I ( E P ' I id I num
E' ::= + E E' I * E E' I + E I * E
P' ::=)
320 CAPÍTULO 4 . GRAMÁTICAS TIPO 2 y AUTÓMATAS A PILA

A partir de esta gramática, se puede construir el AP que reconozca


o no las palabras de este lenguaje; es decir, la parte de los compiladores
denominada análisis sintáctico. Se va a generar un AP que reconozca por
vaciado de pila, aunque sería equivalente el realizarlo por estado final.

APv = (~~ , ~~ , {q} , F , f , 0)

donde ~~ y ~~ se han definido anteriormente, F es el axioma de la


gramática, y f será:

f(q, (, F) = {(q , forADS)}


f(q, do, D) = {(q , A)}
f(q, id, A) = {(q , RETEA'A) , (q, REOEBEA' A) , (q , REUEBEA'A),
(q , GET' EA' A) , (q , RETEN A) , (q , REOEBEN A) ,
(q , REU EBEN A), (q , G ET' EN A) , (q , RETE) ,
(q , REOEBE) , (q , REUEBE) , (q , GET' E)}
f(q , from , R) = {(q , A)}
f(q , to ,T) = {(q , A)}
f(q , = , G) = {(q , A)}
f(q , as,A') = {(q , A)}
f(q , and, N) = {(q , A)}
f(q,downto , O) = {(q , A)}
f(q ,upto,U) = {(q , A)}
f(q , by, B) = {(q , A)}
f(q , then, T') = {(q , A)}
f(q , id, H) = {(q , RETE), (q , REOEBE) , (q , R EUEBE) , (q , GET' E)}
f(q , id, S) = {(q , PEC S) , (q , PE)}
f(q , :=, P) = {(q , A)}
f(q ,;, C) = {(q , A)}
f(q,id,I) = {(q , PE)}
f(q, (, E) = {(q , EP' E') , (q , EP')}
f(q , id, E) = {(q , E') , (q , A)}
f(q ,num, E) = {(q , E') , (q , A)}
f(q , +, E') = {(q , EE') , (q , E)}
f(q , *, E') = {(q , EE') , (q , E)}
f(q , ), P') = {(q , A)}
Capítulo 5
GRAMÁTICAS y AUTÓMATAS
GENERALES

Este capítulo estudiará los autómatas que reconocen lenguajes generados


por las gramáticas más generales que hay, de tipo O y 1: Autómatas Lineal-
mente Acotados y Máquinas de Thring. Estos dos tipos de autómatas son
menos restrictivos que los anteriores, al permitir mover la cabeza de lectura
en las dos direcciones (derecha e izquierda), además de permitir escribir, al
mismo tiempo, en la cinta de entrada (que ahora será de entrada/salida).
La principal diferencia entre estos dos tipos de autómatas está en la lon-
gitud de la cinta. Mientras que las Máquinas de Thring disponen de una
cinta teóricamente infinita, los Autómatas Linealmente Acotados disponen
de una cinta acotada a ambos lados.

5.1 Máquinas de Turing


Las Máquinas de Thring son el autómata más general, capaz de reconocer
los lenguajes generados por las gramáticas menos restrictivas, las de tipo
O. La figura 5.1 muestra un gráfico de la arquitectura de una Máquina de
Thring, con los elementos que se estudiarán a continuación.

5.1.1 Definición
Una Máquina de Thring se define por la siguiente tupla:

321
322 CAPÍTULO 5. GRAMÁTICAS y AUTÓMATAS GENERALES

Cinta

Estados

5J
~~ Control

<:- - Movimiento - - 3>

Figura 5.1: Arquitectura de una Máquina de Turing.

MT = (r,~, b, Q, qo, J, F)

donde

• r: es el alfabeto de símbolos de cinta

• ~ e r: es el alfabeto de símbolos de entrada. Como la Máquina


de Turing puede escribir en la cinta, es diferente el alfabeto de los
símbolos que, inicialmente pueden aparecer en la cinta (~) del alfa-
beto de los símbolos que, en algún momento, pueden aparecer en la
cinta (r)

• b E r, b tj ~: es un símbolo de la cinta de entrada especial que


representa el espacio en blanco

• Q: es el conjunto de estados

• qo E Q: es el estado inicial

• J :Q x r -+ Q x r x {J, D, P}: es la función de transición, donde J


es izquierda, D es derecha, y P es parada

• F ~ Q: es el conjunto de estados finales


LENGUAJES , GRAMÁTICAS y AUTÓMATAS: UN ENFOQUE PRÁCT ICO 323

Características

• La cinta es infinita, por lo que a los dos lados de la información que


aparezca en la entrada, habrá espacios en blanco representados por b.

• Inicialmente contiene un número finito de símbolos de ~ precedidos


y seguidos de infinitos blancos (símbolo especial b).

• Al igual que el resto de los autómatas, se representan por la tabla de


transición en la que en las filas están los estados, en las columnas los
símbolos de r, y en la posición (q, a) aparece j (q, a) .

Ejemplo: Se puede definir la siguiente Máquina de Thring:

AfT1 = ({O , l,b},{l},b,{p,q,r,s} ,p,j,{s})


donde j se define por la siguiente tabla de transición:

j 1 O b
p qOD pOI rbD
q qlD qOD pOI
r rlD sbP
s

Esta máquina convierte un número n de unos en la cinta de


entrada en un número 2n de unos, como se describirá en el
siguiente apartado.

5.1.2 Movimiento
Si la Máquina de Thring está en un estado q E Q, lee a E r de la cinta de
entrada (el puntero de lectura de la cinta de entrada está sobre el símbolo
a), y la función de transición para esa pareja estado-símbolo es:

j(q,a) = (p,x,m) ó pxm donde pE Q,x E r,m E {I,D,P}

entonces la Máquina de Thring:


324 CAPÍTULO 5. GRAMÁTICAS y AUTÓMATAS GENERALES

1. transita al estado p ;

2. imprime el símbolo x en la cinta en donde estaba el a; y

3. mueve la cabeza lectora de la cinta de entrada/salida hacia la izquier-


da (m = 1), derecha (m = D) o se para (m = P).

Ejemplo: Para analizar el funcionamiento de la máquina MT1 ,


se va a describir en cada momento: en qué est ado está la máquina;
en qué posición de la cinta de entrada está situado el puntero de
lectura; y qué contiene la cinta de entrada en ese momento. Así,
supóngase que inicialmente la máquina está en el estado inicial
(p), el puntero de lectura está situado en el primer símbolo de
entrada (el primer 1) Y la cinta contiene los siguientes símbolos:

b 1 1 b
p

Como la función de transición para p y 1 es


f(p,l) = (q, O, D) , la máquina transita al estado q, escribe un
O en la posición del 1, Y se mueve un símbolo a la derecha,
quedando la situación como:

bOl b
q

A continuación, vuelve a mirar la función de transición con el


estado q y el símbolo 1, que es: f(q,l) = (q , 1, D). Por tanto,
pasará a la siguiente configuración:

bOl b
q
LENGUAJES , GRAMÁTICAS y AUTÓMATAS : UN E NFOQ UE PRÁCTICO 325

Si se sigue el comportamiento de la máquina, realizará las si-


guientes transiciones.

blOI 1 Iblbl b blOI 1 10lblb bl O O 1 O 1 b 1 b


q p q

bl O 1 O 1 O 1 b lb blOIOI O 1 O 1 b bl O 1 0 1 0 1 0 1 b
q p p

bl O O O O b b 1 O 1 O lO 1 O b b O lO 1 O O b
p p r

bl 1 O 10 1O b bl 1 1 O O b bl 1 1 1 O b
r r r

bl 1 1 1 1 b bl 1 1 1 1 b
Parar
r s
Para entender el comportamiento de una MT, es útil describir
qué realiza cada estado. En el caso de MT1 , los estados llevan
a cabo las siguientes tareas:

• p: busca el siguiente 1 para copiarlo. Para ello, va leyendo


ceros y moviéndose hacia la izquierda hasta que lee un 1.
En ese momento, transita al estado q después de cambiar
el 1 por O. Si se encuentra con un blanco, ha terminado la
labor de copia de la cadena de unos y transita al estado r.
• q: copia el 1 en la siguiente posición libre. Para ello, se
desplaza hasta la derecha hasta que lee un blanco, en cuyo
caso escribe un O, y transita al estado p para buscar el
siguiente 1 para copiarlo.
• r: después de copiar todos los unos, ha ido marcando cada
1 con un O para saber que lo había copiado ya. El estado r
se encarga de convertir los ceros en unos, desplanzándose
hacia la derecha hasta que se encuentra con un blanco,
en cuyo caso, transita al estado s y se para, porque ha
terminado su ejecución.
• s: es un estado ficticio que sólo sirve para mostrar que ha
terminado la ejecución de la MT.
326 CAPÍTULO 5. GRAMÁTICAS y AUTÓMATAS GENERALES

5.1.3 Lenguaje reconocido por una Máquina de Turing


Una palabra es reconocida por una Máquina de Turing, si, dispuesta inicial-
mente en la cinta de entrada, con la cabeza de lectura en el primer símbolo
de la palabra y la MT en el estado inicial, la máquina es capaz de transitar
a un estado final y pararse. Por tanto, el lenguaje aceptado por una MT es
el conjunto de palabras que son reconocidas, según la definición anterior.

Ejemplo: La siguiente MT, MT2 , acepta el lenguaje L = {O*1}.

MT2 = ({O,1,b},{O,1},b , {p , q} , p,j,{q})

donde j se define por la siguiente tabla de transición:

j 1 O b
p q1D pOD pbP
q p1P p1P qbP

En este caso, el estado q es final y MT2 sólo aceptará las pala-


bras de entrada cuando estando en ese estado se encuentre con
un blanco, ya que le hará parar en q. Si se encuentra en ese
estado y hay un 1 ó un O en la entrada, parará, pero terminará
en el estado p, con lo que no aceptaría la palabra.

5.1.4 Variantes de las Máquinas de Turing


Existen numerosas variantes del concepto de Máquina de Turing que se
pueden formar restringiendo algún aspecto de las mismas, como la repre-
sentación de la cinta de entrada, los símbolos de entrada, etc. Como ejem-
plo, se comenta el caso de las MT con alfabeto binario. Si la máquina
sólo trabaja con alfabeto binario, r = {O, 1, b}, y se tienen entradas con
m símbolos diferentes, cada símbolo de entrada se puede codificar (repre-
sentar en la cinta) con n bits tal que 2n - 1 :::; m :::; 2n . A partir de ahí,
cada vez que se haga una lectura o escritura en la cinta, hay que tener en
cuenta que hay que leer/escribir n bits seguidos. Otros ejemplos son MT:
con cinta limitada por un extremo; que no pueden escribir y cambiar de
estado simultáneamente; o que sólo pueden realizar una tarea en cada paso.
LENGUAJES, GRAMÁTICAS y AUTÓMATAS: UN ENFOQUE PRÁCTICO 327

5.1.5 Máquina de Turing Universal (MTU)


Es una máquina que recibe en la cinta una descripción de otra MT, Y el
contenido de la cinta de esta MT, y produce, como resultado de su ejecución,
el mismo resultado que produciría la MT sobre su cinta. Recibe el nombre
de universal, porque es capaz de simular el comportamiento de cualquier
Máquina de Turing. Se convierte, de esta forma, en un dispositivo análogo a
una computadora, capaz de realizar cualquier cómputo. En este apartado
se describirá en qué consiste la codificación de la cinta de la MTU, y se
comentará su funcionamiento.
Sin perder generalidad, se puede reducir el número de MT que una
MTU es capaz de simular, a ls máquinas binarias con cinta limitada a la
derecha (MTBD). La cinta de una MTU es infinita en ambos sentidos, y se
divide en dos partes, separadas por un símbolo identificativo (por ejemplo
$). A la derecha de $ se codifica la MTBD, y, a la izquierda, se codifica su
cinta (CMTBD). El resultado de la ejecución de la MTU consistirá en dejar
la parte derecha de la cinta (la que describe la MTBD) intacta, y, en la
izquierda, la misma información que habría dejado en su cinta la MTBD.
Para que la MTU realice su labor, simulando a otra MT , se debe co-
dificar la MT y su cinta de entrada en la cinta de entrada de la MTU.
La codificación de la CMTBD transcribe la cinta tal cual, exceptuando la
posición que ocupa la cabeza lectora, en la cual se coloca otro símbolo
identificativo de cabeza lectora (por ejemplo *). El bit que había en dicha
posición, se transcribe justo a la derecha del $.
Para codificar la MTBD , en primer lugar se codifican los estados en
binario. Así, si se tienen seis estados, se necesitarán 3 bits para su codi-
ficación. La parte derecha de la cinta se divide en tantos registros como
entradas tenga la tabla de movimientos de la MTBD. Cada registro está
separado por un caracter especial (por ejemplo #) y contiene, en binario,
la codificación de cada movimiento, de la siguiente manera:

• el estado en que está (codificado en binario)

• el bit a leer (O ó 1)

• el estado al que va (codificado en binario)

• el bit a escribir (O ó 1)

• el movimiento a realizar (codificado en binario, por ejemplo O derecha,


1 izquierda)
328 CAPÍTULO 5. GRAMÁTICAS y AUTÓMATAS GENERALES

Entre el símbolo $ y el primer registro, denotado por # está el estado


en que está la máquina y el bit que lee en ese momento la cabeza lectora.

Ejemplo: Un ejemplo de esta codificación sería el siguiente.


Supóngase que se tiene la Máquina de Turing MT B 2 :

MTB 2 = ({0 , 1} , 0, {p , q,r},p,j, 0)

j O 1
P qOD p 1I
q p 1I rO D
r q1D pOI

y la cinta CMTB2 contiene la siguiente secuencia binaria, donde


el puntero de lectura estaría en el tercer uno.

C MTB2 = ... 101101]

Entonces,

• Se calcula el número de bits necesarios para representar los


estados. En este caso, 1 = E(log23) = 3, donde E(n) es la
función que calcula el número entero justo por encima del
n. Por tanto, se necesitan 2 bits para codificar los estados .
Al codificar los estados en binario, quedaría, por ejemplo:
p ~ 00, q ~ 01 , r ~ 10
• El número de bits necesarios para codificar las entradas es
1. En este caso, la codificación es inmediata: el O para
representar a la entrada O y el 1 para la entrada 1
• En el caso del movimiento, se codifica con un bit para los
dos posibles movimientos (O para la D y 1 para la I)
• ASÍ, la cinta de MTU sería:

... 101 *01$001#0000100#0010011#0100011#0111000# 1000110# 1010001 J

donde, por ejemplo, el contenido del primer registro, 0000100,


estará formado por la primera transición: 00 (estado p) , O
(entrada 0),01 (transita al estado q), O (escribe un O) , y O
(se mueve a la derecha).
LENGUAJES , GRAMÁTI CAS y A UTÓMATAS: UN ENFOQ UE PRÁCTI CO 329

Con esta codificación, el funcionamiento de la MTU sería el siguiente:

• localizar en alguno de los registros la cadena que aparece entre los


símbolos $ y # (llamémoslo registro O) ;

• leer y memorizar uno a uno los símbolos que restan del registro en-
contrado, excepto el último (que se corresponde con el movimiento a
realizar);

• para cada una de los símbolos memorizados con anterioridad, colo-


carlos en la parte correspondiente del registro O;

• el penúltimo bit del registro localizado (que se corresponde con el bit


a escribir), se escribe en el lugar que ocupa el *;

• se localiza y memoriza el último bit del regis tro encontrado ante-


riormente (que se corresponde con el movimiento) , para desplazar la
cabeza lectora correctamente y colocar el * en el lugar adecuado;

• el contenido que había en la posición donde se escribe el * ha de ser


memorizado y escrito en la última posición del registro O, para, de
esta forma, recoger lo que lee la cabeza lectora y poder preparar todo
el sistema para una nueva lectura .

5.1.6 Máquinas de Turing y computación


Debido a que, a nivel abstracto, las Máquinas de Turing reciben una en-
trada codificada en la cinta, y generan una salida, codificada en la cinta al
final de la ejecución de la Máquina de Turing, se puede realizar una analogía
entre una Máquina de Turing y un programa. En los dos casos existe: una
entrada (si hay varias, se puede codificar como si fuera una única, sin más
que tomar como entrada la cadena de entradas) , una salida (si hay varias,
se toma de la misma forma que las entradas) , y un proceso que permite
generar la salida correspondiente a cada entrada. Esta analogía ha llevado
a realizar numerosos estudios teóricos sobre la computación, permitiendo
asignar la etiqueta "computable" a cualquier proceso que pueda represen-
tarse mediante una Máquina de Turing. Además, debido a que se puede
definir una MT universal que es capaz de ejecutar/simular cualquier MT,
y las MT son análogas a los programas, se puede establecer otra analogía
entre la MT universal y las computadoras.
330 CAPÍTULO 5. GRAMÁTICAS y AUTÓMATAS GENERALES

5.2 Autómatas Linealmente Acotados


Este tipo de autómata es una particularización de las Máquinas de Turing
en los que la cinta es finita y está acotada por los dos lados. Para ello,
definen dos símbolos de cinta especiales que delimitan el principio y final de
cinta. Además, la cabeza lectora no podrá ir más a la izquierda del símbolo
que delimita a la izquierda, ni más a la derecha del símbolo que delimita
a la derecha. Sirven para reconocer lenguajes generados por gramáticas de
tipo 1, dependientes de contexto.
LENGUAJES, GRAMÁTICAS y AUTÓMATAS: UN ENFOQUE PRÁCTICO 331

EJERCICIOS

Ejercicio 15.11
Obtener una gramática que genere el lenguaje L = {Oi1 i 2i /i ~ 1} .

Las cadenas pertenecientes a L contienen el mismo número de ocurren-


cias de los símbolos O, 1 Y 2. Una gramática que genera e lenguaje L es
G = (~T , ~N,S, P), donde ~T = {x, y} , ~N = {S,A,B} , S es el axioma y
Pes:

S .. - OBS2
S .... - 012
BO .. - OB
B1 .... - 11

La gramática G no es de Tipo 1 (sensible al contexto) pues las pro-


ducciones S ::= OBS2 y BO ::= OB , no cumplen la propiedad que deben
cumplir las producciones de una gramática de Tipo 1. Sin embargo, todas
las producciones cumplen la propiedad de no decrecimiento y por tanto, es
posible transformar G en una gramática sensible al contexto.
A continuación, se estudiará cómo genera G las cadenas del lenguaje L.
La producción S :: = OBS2 se aplica i-l veces, de tal forma que se obtiene:

OB ...OBS2 .. 2

donde OB Y 2 aparecen i-l veces. Aplicando la producción S ::= 012 se


obtiene:

OB ... OB0122 .. 2

La producción BO ::= OB se emplea para desplazar todos los símbolos


O a la izquierda y los símbolos B a la derecha, con lo que se genera:

00 ... OB ... B122 .. 2


332 CAPÍTULO 5 G RAMÁ TICAS
o y AUTÓMATAS GENERALES

Finalmente, la producción B1 ::= 11 se encarga de reducir los símbolos


B, introduciendo los símbolos 1 necesarios o Enumerando las reglas de G co-
mo p1 , p2, p3 Y p4 respectivamente, se muestra a continuación la derivación
de la cadena 000011112222:

S -t OBS2 (p1) -t OBOBS22 (p1) -t


-t OBOBOBS222 (p1) -t OBOBOB012222 (p2) -t
-t 00BBOB012222 (p3) -t 00BOBOB12222 (p3) -t
-t 000BBOB12222 (p3) -t 000BOBB12222 (p3) -t
-t 0000BBB12222 (p3) -t 0000BB112222 (p4) -t
-t 0000Bl112222 (p4) -t 000011112222 (p4) Palabra de L

Ejercicio 15.21
Obtener el lenguaje que genera la siguiente gramática G = (~T, ~N , S, P),
donde ~T = {O, 1}, ~N = {S, A, B, C}, S es el axioma y Pes:

S 0

00
0 -

BAB
BA 00-

00 BC
CA 00-

0 0 AAC
CB 00-

00 AAB
A 00-

00 O
B 00-
00 1

Aunque la gramática G no es de Tipo 1, sus producciones cumplen


la propiedad de no decrecimiento, luego es posible transformarla en una
Gramática Sensible al Contextoo Se denominarán p1 , p2, p3, p4, p5 Y p6
respectivamente a las reglas de G o Se verá cómo son las cadenas generadas
por G mediante algunos ejemplos (se indican entre paréntesis las produc-
ciones aplicadas durante la derivación)

• S -t BAB (p1) -t 101 (p5 Y p6) palabra

• S -t BAB (p1) -t BCB (p2) -t BAAB (p4) -t 1001 (p5 Y p6) palabra

• S -t BAB (p1) -tBCB (p2) -t BAAB (p4) -t BCAB (p2)


-t BAACB (p3) -t BAAAAB (p4) -t 100001 (p5 Y p6) palabra
LENGUAJES, GRAMÁTICAS y AUTÓMATAS: UN ENFOQUE PRÁCTICO 333

• S ~BAB (pI) ~BCB (p2) ~ BAAB (p4) ~ BCAB (p2) ~


~ BAACB (p3) ~BCACB (p2) ~ BAACCB (p3) ~
~ BAACAAB (p4) ~ BAAAACAB (p3)~ BAAAAAACB (p3) ~
~ BAAAAAAAAB (p4) ~ 1000000001 (p5 Y p6) palabra

Se observa que, una vez aplicada la producción pI (S ::= BAB) , se


emplea la producción p2 ( BA ::= BC) para introducir un símbolo C que
se va desplazando hacia la derecha con la producción p3 (CA :: = AAC),
introduciendo dos símbolos A por cada símbolo Ao
Finalmente, mediante la producción p4 (CB ::= AAB) se reduce la e,
introduciendo dos símbolos Ao En este momento, sólo quedan los símbolos
A y B en la cadena que, mediante las producciones p5 (A::=O) y p6 (B::=I),
se transforman en los símbolos O y 1.
Por tanto, el lenguaje generado por la gramática G es:

Ejercicio 15.31
Obtener el lenguaje que genera la siguiente gramática G = CE T , 'EN, S , P).
donde 'ET = {a,b}. 'EN = {S,A,B,C}. S es el axioma y P es:
S 00- ABCS I ABC
AB 0 0 - BA
AC 00- CA
BC 00- CB
BA 00- AB
CA 00- AC
CB 0 0 - BC
A 0 0 - a
B 00-

00 b
C 00- e

Observando las producciones de G, todas ellas cumplen la propiedad


de no decrecimiento, luego esta gramática se podría trasformar en una
gramática Tipo 1, cuyas producciones fueran sensibles al contextoo
334 CAPÍTULO 5. GRAMÁTICAS y AUTÓMATAS GENERALES

Enumerando las producciones de G como pI , p2, p3, p4, p5, p6, p7,
p8, p9, plO Y pll respectivamente, se mostrarán a continuación algunas
derivaciones que obtienen palabras generadas por G.

• S ~ ABC (p2) ~ abc (p9, plO, pll) palabra


• S ~ ABCS (pI) ~ ABCABC (p2) ~ abcabc (p9, pIO, pll) palabra

• S ~ ABCS (pI) ~ABCABC (p2) ~ BACABC (p3) ~


~ bacabc (p9, pIO, pll) palabra

• S ~ ABCS (pI) ~ ABCABC (p2) ~ACBABC (p5) ~


~ acbabc (p9, plO, pll) palabra

• S ~ ABCS (pI) ~ABCABC (p2) ~ ABCACB (p5) ~


~ abcacb (p9, plO, pll) palabra

Aplicando la producción S: :=ABCS sucesivas veces, se introduce la se-


cuencia de símbolos ABC. Todos los símbolos de la cadena pueden permu-
tarse mediante las producciones p3, p4, p5, p6 , p7 Y p8 para finalmente
reemplazar los símbolos A, B Y C mediante las producciones p9, plO Y pll.
Así, el lenguaje generado por G es:

L={palabras con el mismo número de símbolos a, b y c}

Ejercicio 15.41
Obtener el lenguaje que genera la siguiente gramática G = (~T, ~ N, S, P),
donde ~T = {a}, ~ N = {S, L , D , R}, S es el axioma y Pes:
S: :=LaR L::=LD I A
Da::=aaD DR::=R
R::=A

La gramática G no es de Tipo I pues sus producciones no son sensibles


al contexto, ni cumplen la propiedad de no decrecimiento, con lo que sólo
es posible clasificar G como Tipo O. Se verán algunas derivaciones que
obtienen cadenas generadas por G. Para ello, se enumeran las producciones
de G como pI, p2, p3, p4, p5 Y p6 , respectivamente.
LENGUAJES , GRAMÁTICAS y AUTÓMATAS: UN ENFOQUE PRÁCTICO 335

• S -+ LaR (pI)-+ a (p3 y p6) palabra

• S -+ LaR (pI) -+ LDaR (p2)-+ LaaDR (p4)-+ LaaR (p5)-+


-+ aa (p3 y p6) palabra

• S -+LaR (pI) -+ LDaR (p2) -+LDDaR (p2)-+ LDaaDR (p4)-+


-+ LDaaR (p5) -+ LaaDaR (p4)-+ LaaaaDR (p4)-+ LaaaaR (p5)-+
-+ aaaa (p3 y p6) palabra

• S -+LaR (pI) -+ LDaR (p2) -+LDDaR (p2) -+LDDDaR (p2)-+


-+ LDDaaDR (p4)-+ LDDaaR (p5)-+ LDaaDaR (p4)-+
-+ LDaaaaDR (p4)-+ LDaaaaR (p5)-+ LaaDaaaR (p4) -+
-+ LaaaaDaaR (p4) -+ LaaaaaaDaR (p4) -+ LaaaaaaaaDR (p4)-+
-+ LaaaaaaaaR (p5) -+ aaaaaaaa (p3 y p6) palabra

Se observa que, una vez aplicada la producción pI (S ::= LaR) , la


producción p2 (L ::= LD) se emplea para introducir varias veces el símbolo
D en la cadena. Los símbolos D se desplazan hacia la derecha empleando
la regla p4 (Da :: = aaD) , a la vez que, por cada símbolo a, se introducen
dos símbolos a. Los símbolos D se reducen mediante p5 (DR :: = R). Por
último, los símbolos L y R se reducen con p3 (L ::= ).) y p5 (R ::= ).).
ASÍ, el lenguaje generado por G es:

Ejercicio 15.51
Se dispone de una cinta en la que hay un número m de 1s seguido de un
número n 2: m de As. Se desea definir una Máquina de Turing que cambie las
primeras m As por Ss. Se supone que la cabeza de la cinta inicialmente está
en el 1 más a la izquierda.

Se puede definir la Máquina de Thring de la siguiente forma:

MT = ({b, 1, A, B}, {b, 1, A}, b, {qO , ql, q2}, qo, ¡, {qo})

donde
336 CAPÍTULO 5. GRAMÁTICAS y AUTÓMATAS GENERALES

f 1 A B b
qo ql bD qoBP
ql qtlD q2 B1 ql BD
q2 q2 1I q2 B1 qobD
El estado qo se encarga de cambiar un 1 por un blanco, para llevar la
cuenta de las As que cambia, y transitar al estado ql. Si se encuentra con
una B, es que ha cambiado m As ya, con lo que termina. El estado ql
busca la primera A y la cambia por B, pasando al estado q2. El estado q2
se encarga de buscar el primer 1 (a la derecha del primer blanco), y pasar
al estado qo.

Ejercicio 15.61
Dado el AFD de la figura adjunta, obtener el Autómata de Células de
McCulloch-Pitts equivalente, el lenguaje aceptado y la Máquina de Turing que
reconoce el mismo lenguaje.

El Autómata de Células de McCulloch-Pitts, se obtiene en tres pasos.


En el primero, se crean las células intermedias y se unen las entradas con
ellas. En el segundo paso, se unen las células entre sí de acuerdo a las
transiciones del AFD. En el último paso, se crean las células inicial y final
y se unen al resto. Esto se muestra en las figuras 5.2, 5.3, y 5.4.
Para obtener el lenguaje aceptado por el AFD, se definen las ecuaciones
características y se resuelven.
LENGUAJES, GRAMÁTICAS y AUTÓMATAS: UN ENFOQUE PRÁCTICO 337

@
--89
a @
b
®
@
~@
Figura 5.2: Paso inicial de construcción del Autómatas de Células.

Xo = bXI + b + aX2
Xl = bXI + b + aX2
X2 bXI + b + aX2

Como Xo = Xl = X2, se obtiene

Xo = bxo + b + axo = (a + b)xo + b = (a + b)*b


que es la expresión regular del lenguaje aceptado por el autómata.
Por último, la Máquina de Thring que acepta este lenguaje se puede
construir de la siguiente forma, donde se cambia la b de entrada por una B
para diferenciarla del símbolo b que representa al blanco de la cinta.

MT = ({b, a, B}, {a, B}, b, {qO,ql}, qo, ¡, {qt})

donde

¡ a B b
qo qoaD qlBD qobP
ql qoaD qlBD qlbP
338 CAPÍTULO 5. GRAMÁTICAS y AUTÓMATAS GENERALES

a -----------------.-----1-+~

b------------+-~~=========H~

Figura 5.3: Paso intermedio de construcción del Autómatas de Células.


LENGUAJES , GRAMÁTICAS y AUTÓMATAS: UN ENFOQUE PRÁCTICO 339

@J
~I a
~I 2 'lo

a
:®-
b 2 qJ b

~
~@-
~ 1
~
~ 2 q2

~,

Figura 5.4: Autómatas de Células final.


340 CAPÍTULO 5. GRAMÁTICAS y AUTÓMATAS GENERALES

Esta Máquina de Thring sólo aceptará la palabra de entrada si termina


en el estado ql , que es el correspondiente a haber leído una B como último
símbolo.

Ejercicio 15.71
Construir una Máquina de T uring que compruebe si dos palabras de entrada
del lenguaje formado por el alfabeto ~ = {O, 1, 2} son iguales. Las dos palabras
estarán separadas por el símbolo #. Así, una posible cinta de entrada sería:

··· l bI211101#121110Ibl···

Se va a suponer que la cabeza de lectura comienza en el símbolo más


a la izquierda de la palabra más a la izquierda. Una posible Máquina de
Thring que realiza esta tarea sería:

MT = ({O, 1,2, *, b, #} , {O, 1,2, #}, b, {p , q, r, s, t, u, v, x, a, n} , p, j, {a})

donde j será:

j O 1 2 # * b
p q*D r *D s *D a#P p*D
q qOD qlD q2D t#D
r rOD rlD r2D u#D
s sOD slD s2D v#D
t x*I nlP n2P hD nbP
u nOP x*I n2P u*D nbP
v nOP n1P x*I v *D nbP
x xOI xlI x2I x#I x*I pbD
a
n

Se ha incluido el símbolo de cinta * para marcar aquellos símbolos de


entrada que ya se han leído. El significado de los estados es el siguiente:
LENG UAJES, GRAMÁTICAS y AUTÓMATAS: UN ENFOQUE PRÁ CTICO 341

• p: busca el primer símbolo de la primera palabra que todavía no ha


sido equiparado con la segunda palabra. Si es un O, lo marca (escribe
un * en lugar del O) y transita al estado q. Si es un 1, hace lo mismo
y transita al estado r , y si es un 2, hace lo mismo y transita al estado
s. Si se encuentra con el símbolo de separación de las dos palabras
de entrada, # , significa que las dos palabras son iguales, con lo que
transita al estado de aceptación a y se para.

• q: se mueve hacia la derecha hasta encontrar el símbolo que delimita


las dos palabras, #. Entonces, transita al estado t.

• r y s: hacen lo mismo que q, pero teniendo en cuenta que tienen que


encontrar un 1 (ó un 2) , y transitan a los estados u y v, respectiva-
mente.

• t : comprueba si el primer símbolo de la segunda palabra que todavía


no se ha equiparado es un O. Si es así, lo cambia por un * y transita
al estado x.

• u y v: realizan la misma labor que el t , pero para los símbolos 1 y 2


respectivamente.

• x: busca el primer blanco hacia la izquierda y transita al estado p en


busca del siguiente símbolo a equiparar.

• a: estado de aceptación

• n: estado de no aceptación
Capítulo 6

APLICACIONES

En este capítulo se van a estudiar algunas aplicaciones de la teoría de


lenguajes, gramáticas y autómatas a la resolución de problemas desde un
punto de vista informático. Así, se estudiarán ejemplos de utilización en la
construcción de compiladores y de analizadores del lenguaje natural.

6.1 Construcción de compiladores


La construcción de compiladores de lenguajes de programación de alto ni-
vel se suele realizar utilizando tanto Autómatas a Pila como Autómatas
Finitos. Las fases y etapas más usuales que conforman un compilador son:

• Análisis: esta fase realiza una comprobación de si el programa fuen-


te, cumple con las reglas de la gramática del lenguaje de programa-
ción. Normalmente, se suele dividir en tres etapas:

A nálisis léxico: lee el fichero fuente e identifica cuáles son los


elementos básicos del análisis, denominados tokens, como, por
ejemplo, los identificadores, los símbolos de puntuación, las pa-
labras reservadas, los números, etc. Esta etapa se suele realizar
por medio de un Autómata Finito, ya que el lenguaje que des-
cribe a los elementos básicos se puede reducir a un Lenguaje
Regular.

343
344 CAPÍTULO 6. APLICACIONES

Análisis sintáctico: toma como entrada los tokens y comprueba


que la secuencia completa de todos los tokens como palabra for-
ma parte del lenguaje de la gramática que describe al lenguaje
de programación. A tales efectos, a los tokens se les considera
los símbolos terminales de la gramática, y a la secuencia de to-
kens la palabra de entrada. Este tipo de análisis se realiza por
medio de Autómatas a Pila, debido a que la gramática suele ser
de contexto libre.
Análisis semántico: se encarga de comprobar que el progra-
ma fuente, además de cumplir con las reglas sintácticas de la
gramática, también cumple las reglas semánticas. Por ejemplo,
si una variable ya ha sido declarada cuando se utiliza, o si en una
operación numérica todos los operandos son de tipo numérico.
Debido a que este tipo de análisis necesita tener en cuenta al con-
texto, no es posible realizar el análisis con gramáticas de tipo 2
ó 3, por lo que hay que utilizar gramáticas menos restrictivas.

• Generación de código: una vez que el análisis ha sido correcto,


los compiladores deben generar código en el lenguaje destino. Para
ello, se recurre a las estructuras generadas durante la fase de análisis,
como, por ejemplo, los árboles de derivación, para generar el código.

A continuación, se describirá un ejemplo de análisis léxico y sintáctico


para una sentencia while de un imaginario lenguaje de programación, aná-
loga a la que aparece en muchos lenguajes de programación. Esta sentencia
consta de tres partes, con la siguiente sintaxis:

while definición de variables


condición de fin
cuerpo

• Definición de variables: será una lista que contendrá una sublista


por cada tipo para el que existan variables. Sólo se tratarán aquí los
tipos entero y booleano. La sintaxis será (m ::; 2):

( (tipol variablel variable2 variablen )


(tipo2 variablel variable2 variable¡)

(tipom variablel variable2 ... variablek))


LENGUAJES, GRAMÁTICAS y AUTÓMATAS: UN ENFOQUE PRÁCTICO 345

• Condición de fin: se podrán utilizar las conectivas and, or y not o


Las dos primeras conectivas podrán unir varias condiciones. La sin-
taxis será:

(condición! and condición2 and ... and condiciónn )


(condición! or condición2 or ... or condiciónn)
(not condición)

Las condiciones podrán ser: otras condiciones unidas por and, or


y not; variables de tipo booleano; o expresiones de comparación
numérica. Las expresiones de comparación podrán ser, donde ope-
rador podrá ser <, > ó =:

(expresión! operador expresión2)

Las expresiones podrán ser: la suma (+) o multiplicación (*) de dos


expresiones; una variable entera; o un número entero .

• Cuerpo: estará formado por una sentencia cif (sentencia con es-
tructura de case). Esta sentencia toma una expresión (que podrá
ser booleana o numérica) y, dependiendo del resultado, tendrá dos
formas:

Si es booleana: la condición tendrá la misma sintaxis que las


condiciones del while definidas anteriormente. La sintaxis será:

cif condición
(true asignaciones)
(f al se asignaciones)
Si es numérica: si el número resultado de la ejecución de la ex-
presión coincide con el primer elemento de alguna de las listas,
se ejecutarán las asignaciones que vengan a continuación de ese
número en la lista. Si no coincide con ningún número, se ejecu-
tarán las asignaciones que aparezcan en el elemento denominado
sino, que siempre tiene que aparecer. La sintaxis será:

cif expresión
(número : asignacion es)*
(sino: asignaciones)
346 CAPÍTULO 6. APLICACIONES

Las asignaciones tendrán la siguiente sintaxis, donde asignación po-


drá ser numérica o booleana (ambas con sintaxis definidas anterior-
mente):

(variable := asignación)+

U n ejemplo de esta sentencia while será la siguiente expresión El:

while «entero i j k)
(booleano exito))
«i > j * 3) or
(not exito) or
(exito and (k + 1 i * j)))
cif i + j
(2 (j : = i*2))
(O (i := i +1) (exito:= (i j)))
(sino (j := i*k))

A continuación, se describirá un analizador léxico que reconozca los


elementos básicos del lenguaje fuente, tokens, y un analizador sintáctico
que permite comprobar si el programa fuente cumple con las reglas de la
gramática.

6 .1.1 Analizador Léxico


Para la construcción del analizador léxico hay que describir cuáles serán
los elementos básicos que pueden aparecer como símbolos terminales de
la gramática del lenguaje. Se pueden identificar los siguientes tipos de
elementos, por ejemplo:

• Palabras reservadas del lenguaje: while, booleano, entero, and,


or, not, cif, true, false, y sino

• Operadores numéricos: + y *
• Operadores de comparación: <, > y =

• Signos de puntuación: ( y )

• Otros: identificadores (id), números (num), y asignación (:=).


LENGUAJES, GRAMÁTICAS y AUTÓMATAS: UN ENFOQUE PRÁCTICO 347

Estos elementos serán la salida del analizador léxico. Como los Autó-
matas Finitos no generan una salida (más que un sí/no se reconoce la
palabra de entrada), se tienen que modificar para que, una vez reconozcan
uno de estos elementos, generen en la salida el elemento que han reconoci-
do. Así, si reconocen el nombre de un identificador, generen una salida que
informe que se ha reconocido un identificador junto al nombre del identifi-
cador reconocido. Es por ello, que habrá un estado final por cada tipo de
elemento.
En cuanto a la entrada al Autómata Finito será el fichero que contiene
el programa fuente, con lo que hay que tener en cuenta todos los caracteres
(que serán los símbolos terminales de la Gramática Regular) que pueden
aparecer en ficheros de ese lenguaje de programación. Para simplificar el
ejemplo, no se considerarán otros caracteres a los que ya han aparecido,
como, por ejemplo, comentarios, otros signos de puntuación (.,;, ... ), etc.
También se supondrá que los identificadores deben comenzar por una letra y
contener dígitos, letras o guiones, y que los números sólo serán los naturales.
Teniendo en cuenta lo anterior, una posible gramática para el Autómata
Finito podría ser:

donde

ET = {a .. z , A•• Z , O•. 9, ( , ) , <, >, =, +, * , : , =, - , #}


(# representa al espacio en blanco)
E N = {R"W W' vi
"W" W"' " B B'
, B" , B"' , Biv , BV , B "E E' , E" , E"' , Eiv "A A' ,
O,N,N',C,C',T,T',T" ,F,F',F" ,F"' ,8,8',8" ,I,M,D}

yP:

R ::= w W °
Ib B Ie E Ia A Io In N Ic C It T If F Is 8 I+ I ~ I
< I > I = I ( I ) I al I ... I z 1 I Al I ... I Z 1 10M l··· 19M I
al· .. I z I Al· .. I Z I 01 ... I 9 I : D
W ::=hW'
W' ::=iW"
W" ::=IW'"
W'" ::= e
348 CAPÍTULO 6. APLICACIONES

B .. - O B '
B' .. - O B"
B" .. - 1 B'"
B'" ::= e B iv
B iv ::= a B V
BV ::= n B vi
B vi
::= o
E ::= nE'
E' ::= t E"
E" ::= e E'"
E'" ::= r Eiv
Eiv ::= o
A ::= nA'
A' :: = d
O ::= r
N ::= oN'
N' ::= t
C ::= i C'
C' ::= f
T ::= r T'
T' ::= u T"
T" ::= e
F ::= a F'
F' ::= 1 F"
F" ::= s F'"
F'" ::= e
S ::= i S'
S' ::= n S"
S" ::= o
1 ::= a 1 I b 1 I ...
I z 1 I A 1 I ... I Z 1 I O1 I 11 I ... I 9 1 I a I b I .. . I z I
AI .. ·IZIOI11 .. ·19
M ::= OMil MI ... 19M I OI 1 I ... I 9
D .. _-
LENGUAJES , GRAMÁTICAS y AUTÓMATAS: UN ENFOQUE PRÁCTICO 349

Como se puede observar, la gramática es grande, pese a que sólo con-


templa una pequeña parte de un lenguaje de programación. U na solución
que se suele tomar para compactar esta gramática consiste en introducir
el reconocimiento de las palabras reservadas como identificadores y, una
vez leído cada identificador, comprobar si es una palabra reservada. Así se
ahorran muchas producciones y símbolos no terminales.

A continuación, se podría pasar de la gramática lineal por la derecha


al autómata que la reconoce, utilizando los algoritmos estudiados en el
capítulo 3. Así, el autómata sería:

donde Zi ti. ¿; N son nuevos estados que representan el reconocimiento


de los distintos elementos. En esto difiere del procedimiento estudiado en el
capítulo 3, ya que anteriormente sólo se generaba un nuevo estado. Ahora,
como es necesario distinguir los diferentes elementos, para su tratamiento
separado, hay que crear tantos estados finales como elementos pueda haber.
Así, por ejemplo, Zl es el estado que reconoce el operador numérico +, Z2
reconoce el operador numérico *, Z8 reconoce los identificadores, Zg los
números, Y ZlQ la palabra reservada vhile .

En cuanto a fes:

r
350 CAPÍTULO 6. APLICACIONES

f(R,w) = W f(R,O) = M f(B Vi , o) = Zn f(1,a) = 1


f(R, b) = B f(E,n) = E'
f(R,e) = E f(R,9) = M f(E', t) = E" f(1,z) = 1
f(R,a) = A f(R,a) = ZB f(E", e) = E'" f(1,A) = 1
f(R,o) = O f(E''', r) = Eiv
f(R,n) = N f(R,z) = ZB f(E iv , o) = Z12 f(I, Z) = 1
f(R,c) = G f(R, A) = ZB f(A,n) = A' f(I,O) = 1
f(R, t) = T f(A', d) = Z13
f(R,f) = F f(R, Z) = ZB f(O , r) = Z14 f(1,9) = 1
f(R,s) = S f(R , O) = Zg f(N,o) = N' f(I, a) = ZB
f(R,+)=Zl f(N', t) = Z15
f(R, *) = Z2 f(R,9) = Zg f(G,i) = G' f(I, z) = ZB
f(R, <) = Z3 f(R,:) = D f(G', f) = Z16 f(I,A) = ZB
f(R,»=Z4 f(W,h) = W' f(T,r) = T'
f(R, =) = Z5 f(W', i) = W" f(T', u) = T" f(I, Z) = ZB
f(R,O = Z6 f (W", l) = W'" f(T", e) = Z17 f(I, O) = ZB
f(R , )) = Z7 f(W"', e) = ZlO f(F, a) = F'
f(R,a) = 1 f(B,o) = B' f(F', l) = F" f(I,9) = ZB
f(B', o) = B" f(F", s) = F'" f(M,O) = M
f(R,z) = 1 f(B", l) = B'" f(F"', e) = ZlB

f(R,A) = 1 f(B"', e) = B iv f(S, i) = S' f(M,9) = M


f(B iv , a) = B V f(S', n) = S" f(M, O) = Zg
f(R,Z)=1 f(BV, n) = B vi f(S", o) = Z19
f(M , 9) = Zg
f(D , =) = Zg

El autómata resultante es no determinista, ya que, por ejemplo, para el


estado R (estado inicial) y la entrada w, transita a dos estados diferentes:
W , para reconocer la palabra while; e 1, para reconocer identificadores que
comienzan por la letra w. Por los algoritmos estudiados anteriormente se
puede pasar fácilmente de este AFND a su AFD equivalente. Esto se deja
como ejercicio para el lector.
LENGUAJES, GRA MÁTICAS y AUTÓMATAS: UN E NFOQUE PRÁCTICO 351

6.1.2 Analizador Sintáctico


Una vez construido el analizador léxico 1 , se va a estudiar cómo se puede
construir un analizador sintáctico. Al igual que antes, se va a utilizar
la teoría de lenguajes, gramáticas y autómatas, esta vez empleando las
gramáticas de tipo 2 y sus autómatas equivalentes: los Autómatas a Pila.
Una posible gramática sería:

donde

~T = {while, (,) , id, booleano ,entero ,and,or ,not, <, >, =, +, * ,num,
eif,true,false,:=,sino} ,
que corresponden a los elementos que reconoce el analizador léxico
~N = {W,V,V',V" ,T,e,e',e" ,R ,E ,B ,A , A ', N}

y P:

W ::= while V eB
V ::= (V' )
V' ::= ( T V" ) V' I >.
V" ::= id V" I id
T ::= booleano I entero
e ::= ( e and e' ) I ( e or e" ) I( not e ) I id I ( E RE)
e' ::= e and e' I e
e" ::= e or e" I e
R ::= < I> I=
E ::= E+E I E * E I id I num
B ::= eif e ( true A ) ( false A ) I eif E N
A ::= ( id := A' ) A I(
id := A' )
A' ::= E le
N ::= ( num A ) N I( sino A )

1 Para construir compiladores más eficientes, normalmente se suelen realizar las dos
etapas en paralelo, de forma que cuando el analizador sintáctico necesita el siguiente
símbolo de entrada (los tokens que reconoce el analizador léxico), le pide al léxico cuál
es, y el léxico le devuelve el siguiente que pueda reconocer.
352 CAPÍTULO 6. APLICACIONES

Esta gramática hay que ponerla en FNG para poder construir un AP


por vaciado de pila a partir de ella. Por cada producción que no esté en
FNG, es necesario convertirla a este formato. Así, la primera producción
está en FNG, pero la segunda no, ya que el símbolo ) está en una posición
que no es la primera de la parte derecha. Para resolver dicho problema, se
genera un nuevo símbolo no terminal, P, se sustituye por el paréntesis de
cierre en dicha producción, y se genera una nueva producción, quedando:

V ::= (V' P
P ::=)

Además, como V' lleva a A, es necesario eliminar dicha regla no gene-


rativa, quedando:

V ::= ( V ' P I(P


P ::= )

Los mismos pasos habría que efectuar en las producciones de V', gene-
rando:

V' ::= ( T V" P V' I(T V" P

Las producciones de V" y T están en FNG, por lo que no es necesario


convertirlas. Las de e no lo están, por lo que, al transformarlas, quedarán:

C ::= ( C D e' P I ( e o e" P I ( G epI id I(E RE P


D ::= and
0::= or
G ::= not
Ni las producciones de e' ni las de e" están en FNG , debido a que
tienen símbolos terminales que no están en la primera posición, y, además,
no comienzan por símbolos terminales. Sustituyendo e y los símbolos ter-
minales, quedaría:

e' ,,- ( e D e' P D e' I ( e o e" P D e' I ( G e P D e' I id D e'


( E R E P D e' I ( e D e' P I ( e o e" P I ( G epI id
(EREP
e" :: = ( e D e' P o e" I ( e o e" P o e" I ( G e P o e" I id o e"
( E R E P o e" I ( e D e' P I ( e o e" P I ( G epI id
(EREP
LENGUAJES, GRAMÁTICAS y AUTÓMATAS: UN ENFOQUE PRÁCTICO 353

Las producciones de R están en FNG , pero las de E son recursivas por


la izquierda, con lo que habría que eliminar la recursividad y convertirlas
a FNG. Al eliminar la recursividad, quedarían:

E ::= id E ' I num E'


E' ::= + E E' I * E E' I );
Se puede eliminar la regla no generativa E::=A, quedando:

E ::= id E' I num E' I id I num


E' ::= + E E' I * E E' I + E I * E

En las producciones de B, A, Y N habría que eliminar los símbolos


terminales en posiciones que no sean la primera, generando:

B ::= eif e P' u A P P' F A P I eif E N


U ::= true
P' ::= (
F ::= false
A ::= ( 1 S A' P A I ( 1 S A' P
1 ::= id
S ::= :=
N ::= ( M A P N I(H A P
M ::= num
H ::= sino

En el caso de la producción de A', hay que sustituir E y e por sus


respectivas producciones, quedando:

A' ::= id E' I num E' I ( e D e' P I(e ° e" P I ( G epI id I(E RE P

Por lo tanto, la gramática equivalente en FNG sería:

donde

L.N = {W,V,P,V',V" ,T,e,D,O,G,e',C" ,R,E,E',B,U,P',F,A,I,S,N,M,H,A'}

yP':
354 CAPÍTULO 6. APLICACIONES

W ::= while VCB


V ::= ( V ' P I(P
P ::=)
V' ::= ( T V" P V' I(T V" P
V " ::= id V " I id
T ::= booleano I entero
C ::= ( C D C' P I ( C O C" P I ( G C P I id I ( E R E P
D ::= and
O ::= or
G ::= not
C' C D C' P D C' I ( C O C" P D C' I ( G C P D C' I id D C'
::= (
( E R E P D e' I ( C D C' P I ( e O C" P I ( G epI id
(E RE P
C" ::= ( C D C' P O C" I ( C O C" PO C" I ( G C PO C" I id O e"
( E R E P O C" I ( C D C' P I ( C O C" P I ( G C P I id
(EREP
R ::= < I > 1=
E ::= id E' I mm E' I id I num
E' ::= + E E' I * E E' I + E I * E
B ::= cif C P ' U A P P ' F A P I cif E N
U ::= true
P ' ::= (
F ::= false
A ::= ( 1 S A' P A I ( 1 S A' P
1 ::= id
S .. .-
-

N ::= ( M A P N I ( H A P
M ::= num
H ::= sino
A' ::= id E' I num E' I ( C D C' P I ( C O C" P I ( G C P I id I ( E R E P
A continuación, se define el Autómata a Pila que reconoce el lenguaje
generado por la gramática. Se va a construir por estado final.

donde
LENGUAJES, GRAMÁTICAS y AUTÓMATAS: UN ENFOQUE PRÁCTICO 355

•r= I;T U I;~ U {Ao}; y


• f:

f (qO , A, Ao) = {ql, W Ao}


f(ql , A,W) = {(ql ,vhile V C B)}
f(ql , A,V) = {(ql,( V' P),(ql,( P)}
f(ql,A ,P) = {(ql,))}
f(ql , A,V' ) = {(ql ,( T V" P V'),(ql , ( T V" P)}
f(ql , A,V") = {(ql,id V"),(ql,id)}
f(q¡, A,T) = {(ql ,booleano) , (q¡,entero)}
f(q¡,A,C) = {(ql,( C D C' P) ,(ql,( C O C" P),(ql,( G C P),
(ql,id),(ql,( E R E P)}
f(q¡, A,D) = {(q¡ ,and)}
f(q¡, A,O) = {(q¡ ,or)}
f(q¡, A,G) = {(q¡ ,not)}
f(ql , A,C') = {(q¡ ,( C D C' P D C'),(ql,( C O C" P D C') ,
(ql , ( G C P D C'),(ql,id D C'),(ql, ( E R E P D C'),
(ql ,( C D C' P),(ql,( C O C" P) ,(ql ,( G C P),
(ql ,id) ,(ql,( E R E P)}
f(ql,A,C") = {(ql,( C D C' P O C"),(ql,( C O C" PO C"),
(ql ,( G C P O C") ,(ql ,id O C" ),(ql ,( E R E PO C" ),
(ql,( C D C' P),(ql,( C O C" P),(ql,( G C P),
(ql ,id) ,(ql ,( E RE P)}
f(ql,A ,R) = {(ql,<) , (ql ,», (ql,=)}
f(ql, \E) = {(ql,id E') ,(ql,num E') ,(ql ,id) ,(ql ,num)}
f(ql, A,E') = {(ql,+ E E'),(ql,* E E' ),(ql,+ E) ,(ql,* E)}
f(ql , A,B) = {(ql ,cif C P' U A P P' F A P),(ql ,cif E N)}
f(ql , A,U) = {(ql,true)}
f(ql, A,P') = {(ql,()}
f(ql , A,F) = {(ql ,false)}
f(ql, A,A) = {(ql,( 1 S A' P A),(ql,( 1 S A' P)}
f(ql , \1) = {(ql ,and)}
f(ql, A,S) = {(ql ,and)}
f(ql , A,N) = {(ql,( M A P N) ,(ql ,( H A P)}
f(ql, A,M) = {(ql,num)}
f(ql , A,H) = {(ql ,sino)}
f(ql, A,A' ) = {(ql,id E'), (ql ,num E'),(ql ,( C D C' P) ,
(ql ,( C O C" P),(ql,( G C P),(ql,id),(ql,( E R E P)}

sd
356 CAPÍTULO 6. APLICACIONES

f(ql,vhile, vhile) = {(ql , A)}


f(ql, (, O = {(ql, A)}
f(ql,),)) = {(ql, A)}
f(ql, id, id) = {(ql,A)}
f(ql , booleano, booleano) = {(ql, A)}
f (ql, entero, entero) = {( ql , A)}
f(ql, and, and) = {(ql, A)}
f(ql,or,or) = {(ql,A)}
f(ql, not, not) = {(ql, A)}
f(ql, <, <) = {(ql, A)}
f (ql, >, » = {( ql, A)}
f(ql, =, =) = {(ql, A)}
f (ql, l,]) = {( ql , A)}
f(ql , *,*) = {(ql,A)}
f(ql,num,num) = {(ql,A)}
f(ql, cif, cif) = {(ql, A)}
f(ql, true, true) = {(ql, A)}
f(ql, false, false) = {(ql , A)}
f(ql , :=, :=) = {(ql , A)}
f(ql, sino, sino) = {(ql, A)}
f(ql,A,A o}) = {(q2,A o)}

Este es un Autómata a Pila No Determinista, lo que significa que el


análisis de las palabras de entrada (sentencias vhile del lenguaje de pro-
gramación) no tiene por qué seguir un único camino de análisis. Así, si se
está en la descripción instantánea:
(ql, (. .. ), V C B Ao)
el autómata podría realizar dos movimientos:

• (ql,(. . . ),V C BAo) f- (ql,(. .. ),T V" P V' C BAo)

• (ql, (. .. ) ,V C B Ao) f- (ql, (. .. ), T V" P C B Ao)


LENGUAJES, GRAMÁTICAS y AUTÓMATAS: UN ENFOQUE PRÁCTICO 357

Por esto, como se comentó en los ejercIcIOs del capítulo 4, se suele


sacrificar el hecho de que la gramática esté en FNG por que se pueda
realizar un análisis determinista de las palabras de entrada. Para ello, no
se permite que las partes derechas de dos producciones del mismo símbolo
no terminal comiencen por el mismo símbolo terminal. 2 Así, el problema
anterior de no determinismo de las transiciones del símbolo V son debidas
a que se tienen las dos producciones:

V::= ( V' P I(P


que comienzan por el mismo símbolo terminal, (. Para resolver este pro-
blema se recurre a la factorización a izquierdas, estudiada en el capítulo 2.
Este algoritmo tranforma las reglas anteriores en:

V ::= (VI
VI ::= V' PI P

Este proceso debería realizarse para todas las producciones en las que
ocurra lo mismo. El precio que se paga es que pueden aparecer reglas no
generativas, (A -+ A, A E ~N, A no es el axioma), pero eso no presenta
dificultades para la contrucción de determinados analizadores sintácticos.

6.2 Análisis del lenguaje natural


La tecnología de los Autómatas Finitos se aplica con éxito en la resolución
de algunas tareas de un sistema de procesamiento del lenguaje natural.
U na de estas tareas es la desambiguación morfológica consistente en averi-
guar cuál es la categoría gramatical (nombre, verbo, adjetivo, etc.) de una
palabra en una oración.
U na misma palabra puede tener varias categorías gramaticales y por
ello es necesario un proceso de desambiguación el cual puede llevarse a
cabo utilizando reglas sintácticas, semánticas, o conocimiento estadístico.
Ejemplos en castellano de palabras ambiguas son: como (verbo y adverbio),
vino (verbo y nombre), sobre (nombre y preposición), ante (nombre y pre-
posición), viaje (verbo y nombre). A continuación se estudiará de manera
muy simplificada cómo es posible resolver con un gran grado de satisfacción
este problema utilizando Autómatas Finitos Probabilísticos.
2Existe otra restricción que no se estudiará aquí y que se puede consultar en cualquier
libro que explique cómo construir compiladores.
358 CAPÍTULO 6. APLICACIONES

Supóngase el siguiente conjunto de categorias gramaticales: determi-


nante, nombre, verbo, pronombre y preposición. La siguiente tabla muestra
las probabilidades de transición entre estas categorías, es decir, las proba-
bilidades de que las categorías sigan a otras en la oración.

determinante nombre verbo pronombre preposición


determinante 0.1 0.6 0.1 0.1 0.1
nombre 0.1 0.1 0.4 0.1 0.3
verbo 0.3 0.2 0.1 0.1 0.3
pronombre 0.1 0.1 0.4 0.1 0.3
preposición 0.2 0.3 0.2 0.2 0.1
Por ejemplo, la probabilidad de que, dada la categoría determinante, la
siguiente categoría en la oración sea un nombre es:

P(nombreldeterminante) = 0.6
Estas probabilidades definen un Modelo de Markov equivalente a un
Autómata Finito Probabilístico No Determinista, donde los estados del
autómata están representados por las categorías gramaticales.
También son necesarias las probabilidades de que las palabras tengan
una determinada categoría. Por ejemplo, la palabra "pregunta" puede ser
nombre o verbo y sus probabilidades extraídas de textos previamente ana-
lizados son:
P("pregunta"lnombre) = 0.4
P( "pregunta" lverbo) = 0.6
Y O para el resto de las categorías gramaticales.
Del mismo modo, se requiere también la probabilidad de que una de-
terminada categoría sea el comienzo de una oración. Por ejemplo, la pro-
babilidad de que la oración esté encabezada por un determinante es

P(determinante) = 0.4
La siguiente formula es una aproximación del Teorema de Bayes que
combina la información contextual de las categorías gramaticales (transi-
ción entre categorías) y la frecuencia de aparición de las palabras con deter-
minadas categorias. Si se tiene en la entrada una oración 7r = P1 P2 ... Pn ,
formada por las palabras Pi , se puede definir la probabilidad de encontrarse
ante la secuencia de categorías gramaticales dada esa oración de entrada,
como:
LENGUA J ES, GRAMÁTICAS y A UTÓMATAS: UN ENFOQUE PRÁ CTICO 359

donde E es la secuencia de categorías gramaticales que representa a la


oración, ei son las categorías gramaticales, y n es el número de palabras
de la oración. Para resolver el problema, hay que buscar la secuencia de
categorías que maximice la fórmula anterior. Este proceso se puede resolver
utilizando un esquema de programación dinámica.
A continuación se verá el proceso de desambiguación para la oración

"el profesor pregunta a una alumna"

dadas la probabilidades de transición de la tabla anterior así como las


siguientes probabilidades:

P ( "el" Ideterminante) = 1
P ( "profesor" Inombre) = 1
P ("pregunta" Inombre) =0.4
P ( "pregunta" Iver bo ) =0.6
P ( " a" Ipreposición) = 1
P ( "una" Ideterminante) =0 .6
P( "una" Ipronombre) =0.4
P( "alumna" Inombre)=l

P (determinante) =0.3
P(nombre)=0.2
P(verbo)=O.l
P (preposición) =0.2
P (pronombre) =0.2

La asignación de categorías a las palabras de la oración es:

el profesor pregunta a una alumna


determinante nombre nombre preposición determinante nombre
verbo pronombre

Debido a que las palabras "pregunta" y "una" son ambiguas, existen


cuatro posibles combinaciones de etiquetas. La secuencia más probable de
etiquetas para esta oración será la que maximice la formula anterior.

sd
360 CAPÍTULO 6. APLICACIONES

• Primera posibilidad.- Determinante nombre nombre preposición de-


terminante nombre

P(EIP) P(determinante) xP( "el" Ideterminante) x


x P (nombre Ideterminante) x P ( "profesor" Inombre) x
x P (nombre Inombre) x P ( "pregunta" Inombre) x
x P (preposición Inombre) xP( "a" Ipreposición) x
x P (determinante Ipreposición) x
x P ( "una" Ideterminante) x P (nombre Ideterminante) x
x P("alumna" Inombre) =
0.3 x 1 x 0.5 x 1 x 0.1 x 0.4 x 0.3 x 1 x 0.3 x
x 0.6 x 0.5 x 1=
0.000162

• Segunda posibilidad.- Determinante nombre verbo preposición deter-


minante nombre

P(EIP) P(determinante) xP("el" Ideterminante) x


x P (nombre Ideterminante) x P ( "profesor" Inombre) x
x P (ver bo Inombre) x P ( "pregunta" Iver bo ) x
x P(preposiciónlverbo) xP( "a" Ipreposición) x
x P(determinantelpreposición) x
x P ( "una" Ideterminante) x P (nombre Ideterminante) x
x P ("alumna" Inombre ) =
0.3 x 1 x 0.5 x 1 x 0.4 x 0.6 x 0.3 x 1 x 0.3 x
x 0.6 x 0.5 x 1=
0.000972
LENGUAJES, GRAMÁTICAS y AUTÓMATAS: UN ENFOQUE PRÁCTICO 361

• Tercera posibilidad.- Determinante nombre nombre preposición pro-


nombre nombre

P(EIP) P (determinante) x P ( "el" Ideterminante) x


x P (nombre Ideterminante) x P ( "profesor" Inombre) x
x P (nombre Inombre) x P ( "pregunta" Inombre) x
x P (preposiciónl nombre) x P ( "a" Ipreposición) x
x P (pronombre Ipreposición) x P ( "una" Ipronombre ) x
x P(nombrelpronombre) xP("alumna" Inombre) =
0.3 x 1 x 0.5 x 1 x 0.1 x 0.4 x 0.3 x 1 x 0.2 x
x 0.4 x 0.1 x 1=
0.0000144

• Cuarta posibilidad.- Determinante nombre verbo preposición pro-


nombre nombre

P(EIP) P (determinante) x P ( "el" Ideterminante) x


x P (nombre Ideterminante) x P ( "profesor" Inombre) x
x P(verbolnombre) xP( "pregunta" Iverbo) x
x P (preposición Iver bo ) x P ( "a" Ipreposición) x
x P (pronombre Ipreposición) x P ( "una" Ipronombre) x
x P (nombre Ipronombre) xP("alumna" Inombre)=
0.3 x 1 x 0.5 x 1 x 0.4 x 0.6 x 0.3 x 1 x 0.2 x
x 0.4 x 0.1 x 1=
0.0000864

De las cuatro posibilidades, es la segunda la que tiene la probabilidad


mayor (0.000972) luego esa es la combinación de etiquetas que se asigna a
la oración.
Otra de las aplicaciones más interesantes de los Autómatas Finitos al
tratamiento automático del lenguaje la constituyen los analizadores sintác-
ticos parciales utilizados en la extracción de información a partir de grandes
volúmenes de textos. Su importancia estriba en el hecho de que, en mu-
chos casos, es suficiente detectar determinados segmentos en el texto para
localizar información prometedora.
A continuación se expondrá un Autómata Finito capaz de reconocer
sintagmas nominales simples a partir de una secuencia de etiquetas o cate-
gorías morfológicas, similares a las utilizadas en el ejemplo anterior.
362 CAPÍTULO 6. APLICACIONES

Se denominará sintagma nominal simple a aquél que no incluye otro


tipo de sintagmas. Por ejemplo, "la niña" es un sintagma nominal simple
mientras que "la niña de la casa" es una sintama nominal que incluye un
sintagma preposicional. Sólo se tratarán en este ejercicio un subconjunto
de los sintagmas del primer tipo. Para simplificar el problema, no se tendrá
en cuenta la comprobación de la concordancia de género y número entre
los constituyentes de un sintagma.
El alfabeto de entrada del autómata lo forman las categorías: determi-
nante, nombre, posesivo, adjetivo, cuantificador _todo, cuantificador _prono-
minal, cuantificador _nopronominal, pronombre_personal, demostrativo y
ordinal. Algunas palabras correspondientes a estas categorías son:

determinante (la, los, las, el, un, una)


nombre (profesor, alumno, clase, ... )
posesivo (su, sus, tu, tus, mi, mis)
adjetivo (alto, bajo, grande, ... )
cuantificador _todo (todo, toda, todas, todos)
cuantificadoLpronominal (alguno, algunas, muchos, pocas, otros, ...)
cuantificador Jlopronominal (ciertas, distintas, poco, poca, varias, ... )
pronombre_personal (yo, tu, el, nosotros, ... )
demostrativo (este, esta, esa, ... )
ordinal (primer, tercer, ... )
cardinal (uno, dos, tres, ... )

Algunos ejemplos de secuencias que debe ser capaz de reconocer son:

pronombre_personal
determinante nombre
cuantificador Jlopronominal nombre
cuantificador _pronominal
cuantificadoLtodo posesivo nombre
nombre adjetivo
determinante nombre adjetivo
posesivo nombre
demostrativo ordinal nombre
demostrativo cardinal nombre

La siguiente Gramática Regular G = (~T, ~N, S, P) describe un sub-


conjunto de los sintagmas nominales simples, donde:
LENGUAJES, GRAMÁTICAS y AUTÓMATAS: UN ENFOQUE PRÁCTICO 363

~T = {determinante, nombre, posesivo, adjetivo, cuantificadoLtodo,


cuantificador _pronominal, cuantificador _nopronominal,
pronombre_personal, demostrativo, ordinal, cardinal}

~N = {S, A, B, C, D, F}
Y el conjunto de producciones P:

S··= demostrativoA I posesivoA I determinanteA I


cuantificador_todoB I nombreF I cuantificador_todo I
cuantificador_pronominal I cuantificador_nopronominalC
pronombre_personal
B··= posesivoA I determinanteA demostrativoA
demostrativoC I posesivoC determinanteC
A··= ordinalC I cardinalC
C··= adjetivoD I nombreF I nombre
D··= nombre
F··= adjetivo

El autómata finito equivalente se muestra en la figura 6.1


Por ejemplo, sintagmas reconocidos por el autómata anterior son:

todos los alumnos::::} cuantificadoLtodo determinante nombre


algunas casas bajas::::} cuantificadoLnopronomiI).al nombre adjetivo
las primeras personas ::::} determinante ordinal nombre
todas sus segundas opciones::::} cuantificadoLtodo posesivo ordinal nombre
aquellas clases interesantes ::::} demostrativo nombre adjetivo
nosotros ::::} pronombre_personal
varios pedidos voluminosos::::} cuantificadoLnopronominal nombre adjetivo
varios ::::} cuantificador _pronominal
unas grandes ideas::::} determinante adjetivo nombre
estas tres casas::::} demostrativo cardinal nombre

Continuando en la misma línea del ejemplo anterior, se trata ahora de


construir un autómata que reconozca sintagmas preposicionales simples.
Este tipo de sintagma está formado por una preposición más un sintagma
nominal. No hay que olvidar que en castellano existen las palabras "por-
manteaux" (al y del) que son contracción de las preposiciones "a" y "de"
con el artículo "el". Ahora se reutilizará el autómata de los sintagmas nomi-
nales, añadiendo tres símbolos terminales nuevos (preposición, palabra_al,
palabra_del) .
364 CAPÍTULO 6. APLICACIONES

determ~i..............""m!!'ostratlvo. posesIvo

determinante, demostrativo, posesivo

cuantificador_no_pronominal

nombre

pronombre_personal ,
cuantificadoctodo
cuantificador_pronomin

Figura 6.1: Autómata reconocedor de sintagmas nominales simples.

Palabras correspondientes a estas tres nuevas categorías son:

preposición (a, en, de, sobre, ante, cabo, para, sin, sobre, ... )
palabra_al (al)
palabra_del (del)

La gramática regular G=(L":T, L":N, S', P) que describe este tipo de


sintagmas es la siguiente.

L":T= {determinante, nombre, posesivo, adjetivo, cuantificadoLtodo,


cuantificador _pronominal, cuantificador ~opronominal ,
pronombre_personal, demostrativo, ordinal, cardinal, preposicion,
palabra_del, palabra_al}

L":N= {S', S, A, B, C, D, F}

y el conjunto de producciones P será:


LENGUAJES, GRAMÁTICAS y AUTÓMATAS: UN E NFOQUE PRÁCTICO 365

S'::= preposicionS I palabra_delA I palabra_delC


palabra_alA I palabra_alC
S"= demostrativoA I posesivoA I determinanteA I
cuantificador_todoB I nombreF I cuantificador_todo I
cuantificador_pronominal I cuantificador_nopronominalC
pronombre_personal
B"= posesivoA I determinanteA demostrativoA
demostrativoC I posesivoC determinanteC
A"= ordinalC I cardinalC
C"= adjetivoD I nombreF I nombre
D"= nombre
F"= adjetivo

El autómata que reconoce sintagmas de este tipo se muestra en la figu-


ra 6.2.

detenninante, demostrativo sesivo

determinante, demostrativo, posesivo

cuantificador_no_pronominal

nombre

pronombre_personal,
cuantificador_todo
cuantificadocprono

Figura 6.2: Autómata reconocedor de sintagmas preposicionales.

Por ejemplo, sintagmas reconocidos por el autómata anterior son:


366 CAPÍTULO 6. APLICACIONES

a todos los alumnos::::} preposicion cuantificadoLtodo determinante nombre


sobre algunas casas bajas::::} preposicion cuantificadorJlopronominal
nombre adjetivo
para las primeras personas ::::} preposicion determinante ordinal nombre
en todas sus segundas opciones ::::} preposicion cuantificador _todo
posesivo ordinal nombre
sin nosotros ::::} preposicion pronombre_personal
al profesor ::::} palabra_al nombre
del mundo exterior::::} palabra_del nombre adjetivo

Ya se han visto anteriormente los autómatas capaces de reconocer un


subconjunto de sintagmas nominales y preposicionales simples. Ahora se
verá cómo reconocer grupos verbales a partir de una secuencia de cate-
gorías verbales (verbo modal, auxiliar, léxico, etc.). Se llamará grupo verbal
a aquel segmento de una oración que contiene las formas verbales simples,
compuestas o perifrásticas. Ejemplos de grupos verbales de una oración son
los siguientes: pueden estar , hemos ido, se encuentra, están situadas, pue-
den estar compartidas, existe, se puede encontrar alquilado, tener, estando,
... En este caso, se utilizarán las siguientes categorías: modal, gerundio,
infinitivo, participio, auxiliar, se y léxico. El significado de estas categorías
es el siguiente:

• modal: verbos "poder" y "deber" en forma personal, (puede, debe,


deban, ... )

• gerundio: cualquier verbo en gerundio, (situando, comiendo, ... )

• infinitivo: cualquier verbo en infinitivo, (situar, comer, ... )

• participio: cualquier verbo en participio, (situado, comido, ... )

• auxiliar: verbos "haber" " "estar" "ser" en forma personal , (he , es,
estamos, ... )

• se: palabra "se"

• léxico: cualquier verbo en forma personal, (voy, comparte, ... )

Una gramática G = (~T, ~N , S" , P) que describe grupos verbales sim-


plificados se muestra a continuación.
LENGUAJES, GRAMÁTICAS y AUTÓMATAS: UN E NFO QUE PRÁCTICO 367

~T={ modal, gerundio, infinitivo, participio, auxiliar, se, léxico}


~N={S", H, 1, J, K, L, N}

y el conjunto de producciones Pes:

S" 0

00
0-

léxico L I modal H I gerundio H I auxiliar N I se J I gerundio I


infinitivo
H 00- infinitivo 1
1 00-
00 participio I lambda
J 00-
0 0 modal H I léxico K I auxiliar N
K 00- participio I lambda
L 00-

00 participio I infinitivo 1 I lambda


N 00- participio

Eliminando las reglas no generativas, las producciones resultantes son:

S" 00 - léxico L I modal H I gerundio H I auxiliar N I se J I gerundio I


infinitivo I léxico
H 00-
00 infinitivo 1 I infinitivo
1 00-

00 participio
J 00-

00 modal H I léxico K I auxiliar N I léxico


K 00-
0 0 participio
L 00-
00 participio I infinitivo 1 I infinitivo
N 0
0
0-
0 participio

El autómata equivalente a la gramática anterior se muestra en la figu-


ra 6 Algunas secuencias reconocidas por el autómata son:
0 3 0

pueden estar =} modal infinitivo


están situadas =} auxiliar participio
pueden estar compartidos =} modal infinitivo participio
se agrupan =} se léxico
tiene =} léxico
se encuentran divididas =} se léxico participio
interesa saber =} léxico infinitivo
368 CAPÍTULO 6. APLICACIONES

lexico

lexico
-------
infinitivo

se

lexico participio
lexic

auxiliar

gerundio, infinitivo

Figura 6.3: Autómata reconocedor de grupos verbales.

6.3 Aplicaciones de Control

Los Autómatas Finitos, y las Máquinas Secuenciales, tienen una gran va-
riedad de aplicaciones en el mundo industrial. Un gran número de sistemas
de control en el campo de la industria, tienen como modelo de diseño a un
Autómata Finito o a una Máquina Secuencial. Desde maquinaria indus-
trial en cadenas de montaje o fabricación, pasando por sistemas de robótica,
hasta sistemas de control de electrodomésticos, máquinas de video, etc... A
continuación, se va a plantear cómo podría diseñarse uno de estos sistemas
mediante una Máquina Secuencial, empleando los conceptos tratados en
este libro.
LENGUAJES, GRAMÁTICAS y AUTÓMATAS: UN ENFOQUE PRÁCTICO 369

Supóngase que se tiene una máquina tragaperras con tres botones, de


los cuales se sabe que: uno siempre da premio, otro nunca da premio y
el último da premio únicamente si la última vez no se consiguió premio.
Se desconoce el significado de cada uno de los botones en particular, pero
se conoce si la máquina dio o no premio la última vez que se pulsó algún
botón.
Cada tirada cuesta una cantidad de dinero y da la oportunidad de jugar
tres veces, al cabo de las cuales hay que depositar una nueva moneda y el
significado de los botones cambia de forma aleatoria y desconocida. Cuando
se acierta con el botón de premio la máquina da al jugador 100 pesetas.
U n empresario de este tipo de máquinas deseará diseñar un sistema que
obtenga beneficios a la larga. Por lo tanto, habrá que diseñar un sistema
para el funcionamiento de la máquina, y determinar la cantidad que debe
costar la tirada para obtener beneficios.
Lo primero que hay que hacer es determinar el modelo teórico de la
máquina tragaperras. Existe una entrada que viene dada por la tecla a
elegir, y, además, produce una salida que será si da o no premio. Por lo
tanto, se puede modelizar el sistema mediante una Máquina Secuencial. La
MS tendrá dos estados, el de dar premio y el de no dar premio, que coinciden
con las salidas. Por lo tanto, a cada estado le corresponde siempre la misma
salida. Esto quiere decir que la máquina será una Máquina Secuencial de
Moore.
Llamando G a la tecla de ganar, P a la de perder y C a la restante (la
que puede ser de ganar o de perder) ; qo al estado de perder y ql al estado de
ganar; y como salida O a la salida perdedora y 1 a la ganadora, la Máquina
de Moore correspondiente a la tragaperras sería:

MO = ({G, P, e}, {O, 1}, {qo, qI}, j, g)

donde j:

G P C

siendo g:

giS I
~
=:ilTI
370 CAPÍTULO 6. APLICACIONES

Ahora, se tienen que determinar los movimientos que habría que re-
alizar, en el mejor de los casos, para ganar la mayor cantidad de dinero
posible, y, de esta forma, suponiendo que todo el mundo puede realizar
estos movimientos, asignar un valor a la tirada que permita obtener bene-
ficios.
En primer lugar la MS puede partir del estado qo Ó qI.

En el caso de que se esté inicialmente en el estado qo , es decir que en


la última jugada se perdió, se elige una tecla, llamémosla TI' En este caso
pueden pasar dos cosas:

• Que no se obtenga premio al pulsar TI.


De la tabla f se puede deducir que esto sólo podrá pasar si TI = P,
en cuyo caso la siguiente vez se ha de elegir una tecla diferente T2 ,
ya que TI es la que siempre pierde. En esta segunda elección, sea
cual sea la tecla elegida, se ganará ya que si T 2 = G se gana, y si
T 2 = e también, puesto que esta tecla da premio si la vez anterior no
se obtuvo premio, que es precisamente el caso en que se encuentra.
Para la tercera opción no existe ninguna elección ganadora así que
habrá de hacerse al azar; es decir, la mitad de las veces elegir T 2 y la
otra mitad T3. Por lo tanto, como conclusión se puede afirmar que:

La manera más inteligente de jugar estando en el es-


tado qo y habiendo elegido una tecla al azar TI que ha
hecho no ganar será con la secuencia TI , T2, T 2 Ó la secuen-
cia TI, T2 , T3. En este caso, existe una probabilidad de 0,5
de ganar dos veces, y una probabilidad de 0,5 de ganar una
sola vez.

• Que se obtenga premio al pulsar TI


En este caso, lo único que se sabe es que TI f- P. Si se vuelve a elegir
TI, hay un 50% de probabilidades de que la máquina dé premio y otro
50% de que no lo dé. Si al elegir TI y TI se obtiene:

Premio.- Será porque TI = G y, por tanto, lo mejor es volver a


elegir TI. En este caso, se habrá ganado las tres veces.
LENGUAJES, GRAMÁTICAS y AUTÓMATAS: UN ENFOQUE PRÁCTICO 371

No premio.- Será porque TI = e


y, en este caso, al volver a elegir
TI se obtendría premio de nuevo. En este caso se habría ganado
dos veces.

Así pues:

La manera más inteligente de jugar estando en el estado


qo y habiendo elegido una tecla al azar TI que ha hecho ga-
nar, será con la secuencia TI, TI, TI. En este caso, existirá
una probabilidad de 0,5 de ganar dos veces, y una proba-
bilidad de 0,5 de ganar las tres veces.

En caso de estar inicialmente en el estado ql, es decir que la última


jugada realizada fuera perdedora, se elige una tecla al azar, TI , por ejemplo.
En este caso pueden pasar dos cosas:

• Que se obtenga premio al pulsar TI.


En este caso, se puede afirmar que TI = G, en cuyo caso para ganar
siempre hay que elegir la secuencia TI, TI , TI.

• Que no se obtenga premio al pulsar TI.


En este caso, se puede afirmar que TI no es la tecla de ganar. Por
lo tanto, la siguiente vez hay que elegir otra diferente T2, con lo cual
puede pasar:

Que se obtenga premio.- En este caso no se puede deducir nada,


ya que T2 puede ser igual a e ó aG. En cuyo caso, tanto si se
vuelve a elegir T 2 , como otra T 3 , existen las mismas posibilidades
de ganar. Y se habrá ganado una o dos veces.
Que no se obtenga premio.- En este caso, es seguro que TI = e y
que T2 = P. Por lo tanto, eligiendo tanto TI, como T3 se vuelve
a ganar, y en este caso se habrá ganado una vez.

Así pues:
372 CAPÍTULO 6. APLICACIONES

La manera más inteligente de jugar estando en el estado


qi y habiendo elegido una tecla al azar Ti que ha hecho
no ganar, será con la secuencia Ti, T 2 , T 3 . En este caso,
existe una probabilidad de 0,25 de ganar dos veces, y una
probabilidad de 0,75 de ganar tan solo una vez.

Si se parte de la suposición de que existe la misma probabilidad de estar


en el estado qo que en el qi, la esperanza matemática del número de premios
ganados en cada jugada será:

~ + ~ + ~ +! +3+ ~ +i = 2 0625
4 '
Para que la máquina sea rentable, el valor de la tirada deberá ser mayor que
el valor del premio multiplicado por el resultado anterior de la esperanza
matemática:
Precio> 2,0625 * 100 = 206,25
Es decir, el precio de la tirada deberá ser superior a las 206,25 pesetas.

6.4 Más aplicaciones


Otras aplicaciones de la teoría de lenguajes, gramáticas y autómatas son
las siguientes:
• Sistemas Operativos. Los Lenguajes Regulares suelen utilizarse a
menudo para especificar argumentos a comandos de sistemas opera-
tivos o funciones de otras aplicaciones para describir, por ejemplo,
qué se está buscando, por qué se debe reemplazar, comodines en la
especificación de ficheros , etc. Así, si existiera un comando busca
que buscara todas las apariciones de una determinada cadena en un
fichero, 3 se podrían describir las expresiones a buscar y los nombres
de los ficheros con sendas expresiones regulares. Por ejemplo,
busca "[a - t][O - 8] " * I[ABC] - 3" i*.tex
podría decir que se quieren encontrar las apariciones de o bien una
palabra que comienza por una letra entre la a y la t, seguida de cual-
quier secuencia de dígitos entre el O y el 8, o bien de una palabra que
comienza por la A, la B, ó la C, seguida de un guión, y terminada por
un 3. Estas apariciones deben buscarse en los ficheros cuyo nombre
comience por una i y que tengan extensión tex .
3En Unix, por ejemplo, equivalente al comando gr ep.
LENGUAJES , GRAMÁTICAS y AUTÓMATAS: UN ENFOQUE PRÁCTICO 373

• Lenguajes de Programación. Debido a que las Expresiones Regu-


lares, son formas concisas de describir Lenguajes Regulares, se suelen
utilizar mucho sus variantes para describir lenguajes de programación,
como, por ejemplo, la notación denominada BNF (de, en inglés, Ba-
chus Normal Form). Esta notación permite representar cómodamente
las expresiones válidas de cualquier lenguaje de programación. Así,
por ejemplo, para describir los identificadores en los lenguajes más
comunes, se podría utilizar la notación:

[a - zA - Z][a - zA - ZO - 9 \ - \ _]*

donde se acepta como identificador válido aquél que comienza por una
letra, seguida por ninguna, una o varias apariciones de letras, dígitos,
guiones o subrayados. Para representar la sintaxis de las funciones en
PASCAL, se podría utilizar la expresión:

function((id: tipo)*) : tipo ;

• Reconocimiento de Voz. Donde una persona dice algo a un mi-


crófono y el sistema computacional genera como salida la secuencia
de palabras dichas por la persona, se han utilizado comúnmente va-
riaciones de los Autómatas Probabilísticos, denominadas cadenas de
Markov. Por ejemplo, si después de una e hay, entre otras probabi-
lidades, un 10% de probabilidad de que aparezca una m , un 15% de
que aparezca una f y un 12% de que sea una l, se puede construir
un Autómata Probabilístico de forma que desde el estado al que se
haya llegado después de oir una e, se transite con esas probabilidades
a estados en los que se ha oido esas otras letras.

• Robótica. Cuando se da la orden a un robot de que avance en alguna


dirección, o que perciba lo que le rodea, debido a que se pueden
producir errores por el rozamiento de las ruedas con el suelo o por
los sensores, es posible que el robot no pueda resolver todas la tareas
satisfactoriamente. Una forma de llevar a cabo las tareas, pese al no
determinismo asociado a tales errores, consiste en utilizar Autómatas
Probabilísticos para modelar las transiciones entre un estado y otro
al aplicar una determinada acción, modificando las probabilidades
a medida que va observando las consecuencias de las acciones en el
entorno.
374 CAPÍTULO 6. APLICACIONES

Supóngase, por ejemplo, que un pequeño robot puede realizar dos ac-
ciones: avanzar, que le permite recorrer lOcm; y girar, que le permite
cambiar la orientación en 45° a la izquierda. Este robot se mueve en
un entorno formado por un espacio de un metro por un metro, que
se puede subdividir en parcelas de 10 centímetros por 10 centímetros,
de forma que, cada vez que avanza, se mueve de una parcela a otra.
Se puede construir un AFP que modele su comportamiento, teniendo
la siguiente forma:

AFP = (~,Q,M,P(O),F)

donde

~ es el conjunto de las posibles entradas que puede tener. Como


tiene dos posibles acciones, se puede hacer ~ = {A, G}, donde
A representa el hecho de avanzar y G el hecho de girar.

Q es el conjunto de posibles estados, para los que hay que tener


en cuenta, por una parte, la fila y la columna de la parcela en
la que está situado, y, por otra, la orientación que tiene. Como
hay 10 filas, 10 columnas y ocho orientaciones posibles, habría
10 x 10 x 8 = 800 estados. Se podrían numerar con qi,j,k, donde
i es la fila, j es la columna, y k es la orientación.
LENGUAJ ES, GRAMÁTI CAS y AUTÓMATAS: UN ENFOQUE PRÁCTICO 375

- M es el conjunto de las matrices de probabilidad de transición


entre los estados. Al principio, se puede hacer que todas las tran-
siciones sean equiprobables, asignando un valor de = 860 arbr
todas las posiciones de todas las matrices (una por cada una de
las entradas). Conforme el robot se va moviendo y actuando
en este espacio, se pueden ir modificando las probabilidades que
aparecen en las matrices, debido a que, como se ha dicho antes,
si dado el mismo estado (situación y orientación) ejecuta la mis-
ma acción, no tiene por qué llegar al mismo estado. Esto puede
suceder bien porque tenga errores al moverse y llegue a diferentes
parcelas, bien porque los sensores le den mediciones erróneas y le
digan que está en diferentes parcelas, cuando realmente está en
la misma. Así, por ejemplo, si estando en la parcela de posición
(i,j) y orientación k, efectua la acción de avanzar, y percibe que
se encuentra en la parcela de posición (i' , j') y orientación k' , el
sistema de control debería incrementar el valor de la posición de
la matriz M(ijk,i1j1kl) (A) en una pequeña cantidad e, decremen-
tando proporcionalmente en la cantidad IQf- l = 7~9 todos los
valores de las posiciones de la fila ijk de la matriz M(A). Este
decremento es necesario para que la suma de los valores de las
posiciones en la fila, siga sumando 1. De esta forma , el robot
irá modificando paulatinamente sus predicciones respecto a qué
situaciones resultarán de ejecutar determinadas acciones en el
entorno.

P(O) será un vector de IQI = 800 componentes, que inicialmente


puede tener un 1 en la posición donde esté inicialmente el robot,
que normalmente se conoce con exactitud, y un O en las demás
posiciones.

F será el conjunto de las posiciones a las que se desee que el


robot vaya. Si, por ejemplo, se desea que llegue a la posición
(10, 10) , sin importar la orientación, se haría:

F = {qlO,lO ,O, qlO ,10,45, ... , qlO ,10 ,315}

y tendría tantos estados como posibles orientaciones haya.


376 CAPÍTULO 6. APLICACIONES

El problema con esta solución es que el número de estados puede lle-


gar a ser muy elevado, por lo que puede llegar a ser ineficiente con
niveles de detalle más elevados (parcelas de lcm u orientaciones de
10°) ° entornos más grandes (espacios de 30x30 metros cuadrados).
Una solución consiste en una variante de este tipo de autómatas, en
los que no se supone conectividad completa (no se puede transitar
de cualquier estado a cualquier otro), sino que, por cada estado, se
guarda la lista de los estados a los que se ha llegado alguna vez, junto
a las probabilidades de transición. En este caso, hay que realizar mo-
dificaciones al cálculo de las "probabilidades", ya que, normalmente,
se pierde el concepto de probabilidad por conceptos menos estrictos.
Bibliografía

[ARO AND ULLMAN, 1973] A. V. Aho and J. D. Ullman. The Theory of


Parsing, Translation, and Computing, volume I: Parsing and volume II:
Compiling. Prentice-Hall, 1973.

[ARO AND ULLMAN, 1977] A. V. Aho and J. D. Ullman. Principles of


Compiler Design. Addison-Wesley, Reading, Mass., 1977.

[ARo et al., 1990] A. V. Aho, R Sethi, and J. D. Ullman. Compiladores:


Principios, Técnicas y Herramientas. Addison-Wesley Iberoamericana,
1990.

[ALFONSECA et al., 1997] M. Alfonseca, J. Sancho, and M. Martínez. Te-


oría de Lenguajes, Gramáticas y Autómatas. Publicaciones RA.E.C.,
1997.

[ALLEN , 1987] J. Allen. Natural Language Understanding. Benjamin Cum-


mings series in Computer Science, Menlo Park, California, 1987.

[BROOKSREAR, 1993] J. G. Brookshear. Teoría de la Computación.


Addison-Wesley Iberoamericana, Wilmington, Delaware, E.U.A, 1993.

[CROMSKY, 1956] N. Chomsky. Three models for the description of lan-


guage. lEE Transactions on Information Theory, 2(3):113-124, 1956.

[CROMSKY, 1959] N. Chomsky. On certain formal properties of grammars.


Information and Control, 2(2):137-167, 1959.

[DENNING et al., 1978] P. J. Denning, J. B. Dennis, and J. E. Qualitz.


Machines, Languages and Computation. Prentice-Hall, 1978.

[FERNÁNDEZ AND SÁEZ, 1995] G. Fernández and F. Sáez. Fundamentos


de Informática: Lógica, Autómatas, Algoritmos y lenguajes. Anaya Mul-
timedia, 1995.
[HOPCROFT AND ULLMAN, 1979] J. E. Hopcroft and J. D. Ullman. In-
troduction to automata th eory, languag es and computation. Addison-
Wesley, Reading, Massachusetts, 1979.

[HOPCROFT, 1984] J. E. Hopcroft. Máquinas de turing. Inv estigación y


Ciencia, pages 8- 19, Julio 1984.

[KELLEY , 1995] D. Kelley. Teoría de Autómatas y Lenguajes Formales.


Prentice Hall International, UK Ltd. , 1995.

[KLEENE, 1956] S. C. Kleene. Automata Studi es, chapter Representation


of Events in Nerve Nets and Finite Automata. Princeton University
Press, Princeton, NJ , 1956.

[LEMONE , 1992] K. A. Lemone. Fundam entals 01 Compilers: An Intra-


du ction to Computer Language Translation . CRC Press , 1992.

[MARTIN , 1991] J. C. Martin. Intraduction to languages and the th eory 01


computation. McGraw-Hill, New York, 1991.

[MCCULLOCH AND PITTS, 1943] W. S. McCulloch and W. Pitts. A 10-


gical calculus of the ideas immanent in nervous activity. Bulletin 01
Math ematical Biophysics, 5:115- 133, 1943.

[MEALY , 1955] G. H. Mealy. A method for synthetising sequential circuits .


B ell Systems Technology Journal, 34:1045- 1079, 1955.

[MOORE , 1964] E. F. Moore. Sequential Machin es: S elected Papers.


Addison-Wesley, Reading, MA , 1964.

[PITTMAN AND PETERS, 1992] T . Pittman and J. Peters. Th e art 01 com-


piler design: theory and practice. Prentice-Hall, Englewood Cliffs, New
Jersey, 1992.

[SANCHIS AND GALÁN, 1986] F. J . Sanchis and C. Galán. Compiladores:


T eoría y Construcción. Paraninfo, 1986.

[SHANNON, 1949] C . E. Shannon. The synthesis oftwo terminal switching


circuits. B ell Systems Technology Journal, 28:59- 98, 1949.

[TURING , 1936] A. Thring. On computable numbers with an applica-


tion to the entscheidungsproblem. Prac. London Math ematical Society,
2(42):230- 265, 1936. corrección en 2:43, pp 544-546.