Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Automata
Automata
LENGUAJES
GRAMTICAS
Y
AUTMATAS
Segunda edicin
BORRADOR, Noviembre 2001
TABLA DE CONTENIDOS
CAPTULO 1: INTRODUCCIN ............................................................................................. 1
CAPTULO 2: DEFINICIONES PREVIAS .............................................................................
2.1 Smbolo ....................................................................................................................................
2.1.1 Ejemplos ...........................................................................................................................
2.2 Vocabulario o alfabeto .............................................................................................................
Ejemplos 2.2.1 ...........................................................................................................................
2.3 Cadena .....................................................................................................................................
Ejemplos 2.3.1 ...........................................................................................................................
2.4 Longitud de cadena ..................................................................................................................
Ejemplos 2.4.1 ...........................................................................................................................
2.5 Cadena vaca ............................................................................................................................
2.6 Concatenacin de cadenas .......................................................................................................
2.7 Universo del discurso ...............................................................................................................
Ejemplo 2.7.1 .............................................................................................................................
2.8 Lenguaje ...................................................................................................................................
Ejemplo 2.8.1 .............................................................................................................................
2.9 Lenguaje vacio .........................................................................................................................
2.10 Gramtica ...............................................................................................................................
2.11 Autmata ................................................................................................................................
3
3
3
3
3
3
4
4
4
4
4
5
5
5
5
6
6
6
7
8
8
8
8
9
9
9
9
10
10
11
11
11
11
12
14
14
14
14
15
15
15
16
17
18
18
18
18
18
19
19
19
19
- IV -
19
20
20
20
21
21
22
22
22
22
23
23
23
24
24
24
24
28
28
29
30
30
30
31
31
31
31
32
32
32
32
33
33
33
33
34
35
35
35
36
37
39
40
40
40
43
44
44
45
45
47
48
48
48
53
53
53
53
54
56
58
59
59
60
60
60
60
61
63
64
65
65
66
67
67
68
68
70
73
74
76
77
77
77
77
78
78
78
79
79
79
80
81
81
83
86
86
86
87
88
88
90
93
93
93
93
93
93
93
94
94
94
94
Ejercicio 18.1
Ejercicio 18.2
Ejercicio 18.3
Ejercicio 18.4
Ejercicio 18.5
Ejercicio 18.6
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
95
95
95
95
95
95
BIBLIOGRAFA ......................................................................................................................... 96
- VII -
TABLA DE FIGURAS
Fig. 1 : Relacin de inclusin entre gramticas ............................................................................
Fig. 2 : Correspondencia entre gramticas y lenguajes .................................................................
Fig. 3 : Diagrama de Moore ...........................................................................................................
Fig. 4 : Ejemplo de diagrama de Moore ........................................................................................
Fig. 5 : Ejemplo de mquina de Moore .........................................................................................
Fig. 6 : Correpondencia entre gramticas, leng. y autmatas ........................................................
Fig. 7 : Esquema de mquina de Turing ........................................................................................
Fig. 8 : Esquema de autmata lineal acotado .................................................................................
Fig. 9 : Esquema de autmata de pila ............................................................................................
Fig. 10 : Transicin en un autmata de pila ...................................................................................
Fig. 11 : Transicin en un autmata de pila ...................................................................................
Fig. 12 : Esquema intuitivo de un autmata finito .........................................................................
Fig. 13 : Transicin entre dos estados ............................................................................................
Fig. 14 : Diagrama de Moore del ejemplo 15.2.4 ..........................................................................
Fig. 15 : Diagrama de Moore del ejemplo 15.2.5. .........................................................................
Fig. 16 : Diagrama de Moore del ejemplo 15.2.6. .........................................................................
Fig. 17 : Diagrama de Moore del ejemplo 15.2.7. .........................................................................
Fig. 18 : Diagrama de Moore del ejemplo 15.2.8. .........................................................................
Fig. 19 : Diagrama de Moore del ejemplo 15.3.1.1. ......................................................................
Fig. 20 : Diagrama de Moore del ejemplo 15.3.3.1. ......................................................................
Fig. 21 : Diagrama de Moore para f(A,a)=B .................................................................................
Fig. 22 : Diagrama de Moore para f(A,a)=qf .................................................................................
Fig. 23 : Diagrama de Moore del ejemplo 15.4.1 ..........................................................................
Fig. 24 : Diagrama de Moore AFD del ejemplo 15.4.1 .................................................................
Fig. 25 : Diagrama de Moore para la expresin regular vacia .......................................................
Fig. 26 : Diagrama de Moore para la expresin regular a .............................................................
Fig. 27 : Diagrama de Moore para la expresin regular a* ...........................................................
Fig. 28 : Diagrama de Moore para la expresin regular a+ ...........................................................
Fig. 29 : Diagrama de Moore para la expresin regular a|b ...........................................................
Fig. 30 : Diagrama de Moore para la expresin regular a|b ...........................................................
Fig. 31 : Diagrama de Moore para la expresin regular (a|b)* ......................................................
Fig. 32 : Diagrama de Moore para (ac|b)* .....................................................................................
Fig. 33 : Diagrama de Moore (acd|b)* ...........................................................................................
Fig. 34 : Construccin de Thompson para N(s|t) ...........................................................................
Fig. 35 : Construccin de Thompson para st .................................................................................
Fig. 36 : Construccin de Thompson para s* ................................................................................
Fig. 37 : Descomposicin sintactica de la expresin regular .........................................................
Fig. 38 : Construccin de Thompson para r7 .................................................................................
Fig. 39 : Construccin de Thompson para la expresin regular ....................................................
Fig. 40 : Solucin del ejercicio 16.2 ..............................................................................................
- VIII -
25
27
36
37
40
42
43
47
50
51
52
59
61
62
63
64
65
66
68
72
73
73
74
76
77
77
77
78
78
78
78
79
79
79
80
80
80
81
81
87
CAPTULO 1: INTRODUCCIN
El objetivo de este libro de texto es introducir los conceptos tericos necesarios sobre
Teora de Lenguajes Formales, Gramticas y Autmatas para un curso universitario de
Traductores, Procesadores, Compiladores e Intrpretes de lenguajes de programacin.
En este texto se presenta la Teora de Gramticas y Lenguajes Formales, como una
herramienta matemtica que permite abordar con rigor el diseo de lenguajes de programacin. Adems se desarrollan los conceptos necesarios para la construccin de Autmatas
para el reconocimiento de lenguajes de programacin.
La Teora de los Lenguajes Formales tiene su origen en un campo aparentemente
bastante alejado de la Informtica: la Lingistica.
Los lingistas de la llamada escuela estructuralista americana haban elaborado por
los aos 50 algunas ideas informales acerca de la gramtica universal. Se entiende por
gramtica universal, una gramtica que caracteriza las propiedades generales de cualquier
lenguaje humano.
El primer trabajo que desarroll teoras formales sobre gramticas y lenguajes fue
obra de Avram Noam Chomsky (1928-), quien es sin duda la figura ms destacada de la
lingistica moderna, tanto por desarrollar sus fundamentos matemticos, como por sus
teoras sobre el origen y la naturaleza de los lenguajes naturales, aunque stas ltimas son
ms discutidas (Chomsky, 1956; 1959; 1962; y 1963).
En el campo de la Informtica, poco despus de las primeras publicaciones de
Chomsky, el concepto de Gramtica Formal adquiri gran importancia para la especificacin de lenguajes de programacin; concretamente, se defini con sus teoras la sintaxis
del lenguaje ALGOL 60 (con ligeras modificaciones sobre su versin primitiva), usndose
una gramtica libre de contexto. Ello condujo rpidamente al diseo riguroso de algoritmos
de traduccin y compilacin.
Finalmente, y enlazando con el campo de la lingistica, la Teora de Lenguajes
Formales es de gran utilidad para el trabajo en otros campos de la Informtica por ejemplo
en Informtica Terica, Inteligencia Artificial, Procesamiento de lenguajes naturales
(comprensin, generacin, y traduccin) y Reconocimiento del Habla.
La Teora de los Lenguajes y Gramticas Formales tiene una relacin directa con la
Teora de Autmatas, siendo posible establecer entre ambas una correspondencia denominada en Algebra isomorfismo.
-1-
La Teora de los Autmatas proviene del campo de la Ingeniera Elctrica. El cientfico estadounidense Claude Elwood Shannon (1916-2001), public varios trabajos, donde
mostraba las bases para la aplicacin de la Lgica Matemtica a los circuitos combinatorios
y secuenciales. A lo largo de las dcadas siguientes, las ideas de Shannon se desarrollaron
considerablemente, dando lugar a la Teora de Autmatas (Shannon 1949; 1954 y 1956).
Los autmatas son sistemas que reciben informacin, la transforman y producen otra
informacin que se transmite al entorno.
La Teora de Autmatas tiene aplicacin en campos muy diversos :
- Lgica de los Circuitos Secuenciales
- Teora de Control de Sistemas
- Teora de la Comunicacin
- Arquitectura de Ordenadores
- Redes Conmutadoras y Codificadoras
- Teora de los Sistemas Evolutivos y Auto-reproductivos
- Reconocimiento de patrones
- Redes Neuronales
- Reconocimiento y procesado de lenguajes de programacin
- Traduccin de lenguajes
- Teora de Lenguajes Formales
En este texto la Teora de Autmatas se aplicar principalmente los tres ltimos
campos enumerados. Dentro del campo de los Traductores, Procesadores, Compiladores
e Intrpretes se aplicarn los lenguajes, gramticas y autmatas de tipo 3 para la construccin de analizadores lxicos, y los de tipo 2 para la construccin de analizadores
sintcticos.
-2-
DEFINICIONES PREVIAS
-3-
Ejemplos 2.3.1
Se utilizan los vocabularios de los ejemplos del epgrafe 2.2.1.
abcb es una cadena del alfabeto V2
a+2*b es una cadena del alfabeto V2
000111 es una cadena del alfabeto V3
if a>b then b=a; es una cadena del alfabeto V4
2.4 Longitud de cadena
La longitud de una cadena es el nmero de smbolos que contiene. La notacin
empleada es la que se indica en los siguientes ejemplos.
Ejemplos 2.4.1
Se utilizan las cadenas de los ejemplos del epgrafe 2.3.1.
| abcb | 4
| a + 2*b | 5
| 000111 | 6
| if a > b then a = b ; | 9
2.5 Cadena vaca
Existe una cadena denominada cadena vaca, que no tiene smbolos y se denota con
, entonces su longitud es :
| | 0
2.6 Concatenacin de cadenas
Sean y dos cadenas cualesquiera, se denomina concatenacin de y a una
nueva cadena constituida por los smbolos de la cadena seguidos por los de la cadena
.
El elemento neutro de la concatenacin es :
= =
-4-
DEFINICIONES PREVIAS
0
1
00
11
010
0110
000000
101101
111111
-5-
100001
001100
1101011
0010100
2.9 Lenguaje vacio
Existe un lenguaje denominado el lenguaje vaco, que es un conjunto vaco y que se
denota por {}. El lenguaje vaco no debe confundirse con un lenguaje que contenga una
sola cadena, y que sta sea la cadena vacia, es decir {}, ya que el nmero de elementos
(cardinalidad) de estos dos conjuntos es diferente.
Cardinal ({}) = 0
Cardinal ({}) = 1
2.10 Gramtica
La gramtica es un ente formal para especificar, de una manera finita, el conjunto de
cadenas de smbolos que constituyen un lenguaje.
2.11 Autmata
Un autmata es una construccin lgica que recibe una entrada y produce una salida
en funcin de todo lo recibido hasta ese instante.
En el caso de los Procesadores de Lenguaje un autmata es una construccin lgica
que recibe como entrada una cadena de smbolos y produce una salida indicando si dicha
cadena pertenece o no a un determinado lenguaje.
-6-
-7-
Las producciones P son las reglas que se aplican desde el smbolo inicial para obtener
las cadenas del lenguaje. El conjunto de producciones P se define por medio de la enumeracin de las distintas producciones, en forma de reglas o por medio de un metalenguaje
por ejemplo BNF (Backus Naur Form) o EBNF (Extended Backus Naur Form).
Ejemplo 3.1
Sea la gramtica : G = ( VT, VN, S, P) donde VT = {a, b}, VN = {S}, y el conjunto
de producciones es :
S ab
S aSb
Ejemplo 3.2
Sea la gramtica G = ( {a, b, c, d} , {S, A, B} , S, P) donde P son las producciones :
S ASB
A b
aaA aaBB
S d
A aA
B dcd
Ejemplo 3.3
Sea la gramtica G = (VN, VT, S, P) donde :
VN = { <nmero> , <dgito> }
VT = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }
S = <nmero>
Las reglas de produccin P son :
<nmero> ::= <dgito> <nmero>
<nmero> ::= <dgito>
<dgito> ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
Ejemplo 3.4
Sea la gramtica G = (VN, VT, S, P) donde :
-8-
- 10 -
- 11 -
1 2
2 3
3 4
...
(m 1) m
se escribir entonces:
1 m
dicindose que m deriva de 1 , o que 1 produce m .
Ejemplo 4.2.1
Sea la gramtica G = ({S, A, B}, {a, b, c, d}, S, P) donde P son las siguientes reglas
de produccin, que en este caso se numeran para su posterior identificacin cuando se
usen.
(1)
(2)
(3)
(4)
(5)
(6)
S ASB
A b
aaA aaBB
S d
A aA
B dcd
(5)
(2)
(4)
(6)
- 12 -
SENTENCIAS O INSTRUCCIONES
m VT
Ejemplo 5.1
Utilizando la relacin de derivacin directa del ejemplo 4.1.1, la derivacin da lugar
a la sentencia :
aabb
Ejemplo 5.2
Continuando con el ejemplo 4.2.1, la derivacin da lugar a la sentencia :
abddcd
- 13 -
- 14 -
Ejemplo 6.4
Sea la gramtica G4 = ({S}, {a,b}, S, P) donde P={(S aSb), (S ab)}. Determinar
el lenguaje que genera.
Solucin : Aplicando la primera produccin n-1 veces, seguida por la aplicacin de
la segunda produccin, se tiene que :
S aSb aaSbb a 3Sb 3 a (n 1)Sb (n 1) a n b n
El lenguaje generado :
L(G4)={an bn/n 1}
Ejemplo 6.5
Dada la gramtica G5 = ({S,A}, {a,b}, S, P) donde P={(S abAS), (abA baab),
(S a), (A b)}. Determinar el lenguaje que genera.
Solucin : Se generan sentencias del lenguaje aplicando las reglas hasta que se pueda
ver la forma general del lenguaje.
S abAS baabS baaba
S a
S abAS abbS abba
S abAS abAabAS (abA)n S (abb)n a
S abAS abAabAS (abA)n S (baab)n a
S abAS abAabAS abbbaaba
S abAS abAabAS baababba
S abAS abAabAS abAabAabAS baababbbaaba
L(G5) = {cadenas que contienen abb y baab intercambindose y reproducindose
cualquier nmero de veces, y terminando siempre con el smbolo a}
Se puede observar que la forma de expresar este lenguaje no es simple, y surge la
necesidad de tener una herramienta que permita describir los lenguajes de otra forma.
Ejemplo 6.6
Sea la gramtica G6 = ({S,A,B}, {a,b}, S, P) donde las producciones P son :
- 15 -
S aB
S bA
A a
A aS
A
B
B
B
bAA
b
bS
aBB
aB
bA
aB
bA
aB
ab
ba
abS abbA abba
bbAA bbaa
abS abaB ababS ababaB ababab
Se puede demostrar (Hopcroft y Ullman (1979), pp. 81-82) que el lenguaje generado
es :
L(G6) = {cadenas que tienen igual n de a que de b}
La demostracin no es inmediata.
Ejemplo 6.7
Sea la gramtica G7 = (VN, VT, S, P) donde :
VN = { <nmero> , <dgito> }
VT = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }
S = <nmero>
Las reglas de produccin P son :
<nmero> ::= <dgito> <nmero>
<nmero> ::= <dgito>
<dgito> ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
Determinar el lenguaje que genera.
Solucin : A continuacin se muestran algunas sentencias del lenguaje generado por
esta gramtica.
- 16 -
< nmero >< dgito >< nmero > 7 < nmero > 72
< nmero >< dgito > 7
< nmero >< dgito > 0
< nmero >< dgito >< nmero >< dgito >< dgito >< nmero > 235
L(G7) = {conjunto de los nmeros naturales en base diez}.
Ejemplo 6.8
Sea la gramtica G8 = ({A,S}, {a,b}, S, P) donde las reglas de produccin son :
S aS
S aA
A bA
A b
Determinar el lenguaje que genera esta gramtica.
Solucin : Se muestran algunas sentencias del lenguaje generado por la gramtica.
S aS aaA aab
S aA ab
S aS aaS aaaS a n S a n aA a n + 1b
S aA abA abbA abbbA ab n A ab n + 1
El lenguaje generado se puede definir con la siguiente expresin regular, cuya
definicin se estudiar en el captulo 9.
L(G8) = a a* b b*
- 17 -
siendo (VN VT)+ y (VN VT)*, es decir la nica restriccin es que no puede
haber reglas de la forma donde es la cadena vacia.
7.1.1 Ejemplos
Todas las gramticas mostradas en los ejemplos del captulo 6 son de tipo 0, pues en
ninguna de ellas existe la produccin siendo la cadena vacia.
7.2 Gramticas de tipo 1
Tambien llamadas gramticas sensibles al contexto (en ingls context sensitive). En
ellas las reglas de produccin son de la forma :
A
siendo A VN; , (VN VT)* y (VN VT)+ .
Estas gramticas se llaman sensibles al contexto, pues se puede reemplazar A por
siempre que estn en el contexto .
7.2.1 Ejemplos de gramticas de tipo 1
A continuacin se muestran varios ejemplos de gramticas de tipo 1, que se adaptan
a la definicin anterior.
- 18 -
Ejemplo 7.2.1.1
La gramtica G = ({S,A,B}, {a,b}, S, P) cuyas producciones P se muestran a continuacin es de tipo 1.
S aB
S bA
A a
A aS
A
B
B
B
bAA
b
bS
aBB
Ejemplo 7.2.1.2
La gramtica G = (VN, VT, S, P) donde VN = { <nmero> , <dgito> }; VT = { 0,
1, 2, 3, 4, 5, 6, 7, 8, 9 }; S = <nmero> y las reglas de produccin P que se muestran a
continuacin es de tipo 1.
<nmero> ::= <dgito> <nmero>
<nmero> ::= <dgito>
<dgito> ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
Ejemplo 7.2.1.3
La gramtica G = ({a,b}, {A,S}, S, P) donde P son las producciones que se muestran
a continuacin es de tipo 1.
S aS
S aA
A bA
A b
7.2.2 Ejemplos de gramticas que No son de tipo 1
A continuacin se muestran algunos ejemplos de gramticas que no son de tipo 1, y
que pueden ilustrar mejor la definicin de estas gramticas.
Ejemplo 7.2.2.1
La gramtica definida como G = ({S}, {a,b}, S, P) donde P son las siguientes
producciones :
- 19 -
S aaaaSbbbb
aSb ab
La produccin aSb ab no es del tipo 1, pues se sustituye S por vaco en el contexto
a...b.
Sin embargo si se esta produccin fuera S ab o aSb abb , entonces sera de tipo
1.
Ejemplo 7.2.2.2
La gramtica G = ({S,A}, {a,b}, S, P) con las producciones P siguientes :
S abAS
abA baab
S a
A b
No es del tipo 1, ya que la produccin abA baab no es sensible al contexto. Lo
sera si fuese abA abab .
7.2.3 Propiedades de las gramticas de tipo 1
A continuacin se presenta la propiedad de no decrecimiento de las gramticas de
tipo 1, que se presenta en forma directa e inversa, lo cual permite intercambiar dicha
propiedad con la definicin dada anteriormente.
7.2.3.1 Propiedad de no decrecimiento
Las cadenas que se obtienen en cualquier derivacin de una gramtica de tipo 1 son
de longitud no decreciente, es decir :
| || |
y que se puede enunciar como la longitud de la parte derecha de la produccin es mayor
o igual a la de la parte izquierda.
La demostracin es inmediata. Si se define una produccin de un lenguaje tipo 1
como :
A
- 20 -
siendo (VN VT)+, es decir nunca puede ser la cadena vacia, lo que implica que
| | 1 y como | A | como mnimo vale 1, queda demostrada la propiedad :
|A |
||
- 21 -
A
B
B
B
bAA
b
bS
aBB
Ejemplo 7.3.2
La gramtica G = (VN, VT, S, P) donde VN = { <nmero> , <dgito> }; VT = { 0,
1, 2, 3, 4, 5, 6, 7, 8, 9 }; S = <nmero> y las reglas de produccin P que se muestran a
continuacin es de tipo 2.
<nmero> ::= <dgito> <nmero>
<nmero> ::= <dgito>
<dgito> ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
Ejemplo 7.3.3
La gramtica G = ({a,b}, {A,S}, S, P) donde P son las producciones que se muestran
a continuacin es de tipo 2.
- 22 -
S aS
S aA
A bA
A b
7.4 Gramticas de tipo 3
Las gramticas de tipo 3 tambien denominadas regulares o gramticas lineales a la
derecha comienzan sus reglas de produccin por un smbolo terminal, que puede ser
seguido o no por un smbolo no terminal, es decir son de la forma :
A aB
A a
donde A,B VN y VT.
Ejemplo 7.4.1
La gramtica G = ({a,b}, {A,S}, S, P) donde P son las producciones que se muestran
a continuacin es de tipo 3.
S aS
S aA
A bA
A b
7.5 Lenguajes con la cadena vacia
Segn las definiciones anteriores la cadena vacia no puede aparecer en ningn lenguaje de tipo 1, 2 o 3. Supongamos que deseamos aadir la cadena vacia a un lenguaje.
Se pretende crear un nuevo lenguaje L, a partir del lenguaje L de tal forma que:
L = L {}
Bastar aadir de algn modo a la descripcin del lenguaje L.
Una forma de hacer esto es aadir la siguiente regla de produccin S a las reglas
de la gramtica que describe L. Pero se haba impuesto a las reglas de las gramticas de
- 23 -
- 24 -
TIPO 0
TIPO 1
TIPO 2
TIPO 3
- 25 -
- 26 -
CORRESPONDENCIA ENTRE
LOS LENGUAJES Y LAS GRAMATICAS
GRAMATICAS
TIPO 0
TIPO 1
TIPO 2
TIPO 3
TIPO 0
TIPO 1
TIPO 2
TIPO 3
LENGUAJES
- 27 -
- 28 -
EXPRESIONES REGULARES
= {} {}
d) Cierre positivo : Si es una expresin regular, entonces + es una expresin
regular que denota { }+. Es decir denota las cadenas :
- 29 -
9.3 Precedencia de las operaciones
Se permite el uso de parntesis para indicar la precedencia de las operaciones, pero
cuando no se utilizan parntesis para evaluar una expresin regular, hay que tener en cuenta
el siguiente orden de precedencia :
1.- Uso de parntesis
2.- Operacin cierre y cierre positivo
3.- Operacin concatenacin
4.- Alternativa
9.4 Teorema
Dos expresiones regulares son iguales, si designan al mismo conjunto regular.
9.5 Propiedades
A partir del teorema anterior se pueden enunciar las siguientes propiedades :
a) Asociatividad de la operacin concatenacin
()=()
b) Distributividad de la operacin alternativa respecto de la concatenacin
| = ( | )
c) es el elemento neutro de la concatenacin, es decir
= =
d) Propiedades de la operacin cierre
- 30 -
EXPRESIONES REGULARES
d.1) ( | )*
= (* | *)
= (**)
d.2) ( | )* = (* | ) = *
d.3) * | = *
d.4) * =
Ejemplo 9.6
Sea el vocabulario {a,b} y la expresin regular aa *bb * . Indicar el lenguaje que
denota, y algunas cadenas de dicho lenguaje.
Solucin : Algunas cadenas son:
ab
aab
aaaab
abbbb
abb
aaaab
El lenguaje que se describe es L={cadenas que comienzan por una a y continuan con
varias o ninguna a, y siguen con una b y continuan con varias o ninguna b}
Ejemplo 9.7
Sea el vocabulario {0,1}, la expresin regular 1(01)*denota el conjunto de cadenas
que empiezan por 1 y van seguidas por (01) cualquier n de veces o ninguna.
Ejemplo 9.8
Sea el vocabulario {0,1}, la expresin regular (0 | 1)+denota el conjunto de nmeros
en base 2.
Ejemplo 9.9
Sea el vocabulario {0, 1, 2}, la expresin regular (0 | 1 | 2)+denota el conjunto de
nmeros en base 3.
- 31 -
Ejemplo 9.10
Dada la expresin regular (a | b)* , el lenguaje que denota es el que se puede formar
con todas las cadenas compuestas por a y b incluida la cadena vacia. Algunos ejemplos
de sentencias de este lenguaje son :
aaa
bbb
aba
abaaa
abbaa
Ejemplo 9.11
Sea el vocabulario {1,2,3}, la expresin regular (1 | 2)* 3 indica el conjunto de todas
las cadenas formadas con los smbolos 1 y 2, sucedindose cualquier n de veces (y en
cualquier orden), y siempre terminando la cadena en el smbolo 3. Ejemplos de sentencias :
3
13
123
11113
221113
23
223
113
121211223
111212213
Ejemplo 9.12
Sea el vocabulario {a,b,c}, la expresin regular a | bc denota el lenguaje formado
por las sentencias a y bc.
Ejemplo 9.13
Sea el vocabulario {a,b}, la expresin regular ((a | b) (a | b))* denota el lenguaje
compuesto por todas las cadenas cuya longitud es cero o un n par, y estn compuestas
solamente por el smbolo a, el smbolo b, o por smbolos a y b.
- 32 -
EXPRESIONES REGULARES
Ejemplo 9.14
Sea el vocabulario {a,b}, la expresin regular (a | b)(a | b) denota el lenguaje compuesto por todas las cadenas de longitud dos formadas con los smbolos a y b. Se pueden
definir por enumeracin {aa, ab, ba, bb}.
Ejemplo 9.15
Dar una expresin regular para identificador:
<letra> (<letra> | <dgito>)*
Tambin se puede definir identificador como:
(a | b | c | | z) (a | b | c | d | | z | 0 | 1 | | 9)*
Ejemplo 9.16
Dar una expresin regular para los nmeros reales sin exponente del lenguaje Pascal
estndar.
Solucin :
( | + | ) (< dgito >< dgito >* < dgito >*< dgito >)
Ejemplo 9.17
La expresin regular a *b * denota el lenguaje {a m b n /m 0
- 33 -
n 0} .
AUTMATAS
cuando reciba a su entrada una determinada cadena de smbolos indica si dicha cadena
pertenece o no al lenguaje. Tambin se mostrar como existe un tipo de autmata para
reconocer cada uno de los tipos de lenguajes generados por las correspondientes gramticas.
10.1 Definicin formal de autmata
Un autmata es una quntupla A = ( E, S, Q, f, g ) donde :
E = {conjunto de entradas o vocabulario de entrada}
S = {conjunto de salidas o vocabulario de salida}
Q = {conjunto de estados}
f:EQQ
g:EQ S
E es un conjunto finito, y sus elementos se llaman entradas o smbolos de entrada.
S es un conjunto finito, y sus elementos se llaman salidas o smbolos de salida.
Q es el conjunto de estados posibles, puede ser finito o infinito.
f es la funcin de transicin o funcin del estado siguiente, y para un par del conjunto
E Q devuelve un estado perteneciente al conjunto Q. E Q es el conjunto producto
cartesiano de E por Q.
g es la funcin de salida, y para un par del conjunto E Q, devuelve un smbolo de
salida del conjunto S.
10.2 Representacin de autmatas
Los autmatas se pueden representar mediante :
- Tabla de transiciones
- Diagrama de Moore
10.2.1 Tabla de transiciones
Las funciones f y g pueden representarse mediante una tabla, con tantas filas como
estados y tantas columnas como entradas. As por ejemplo se puede representar el autmata
A = ( E, S, Q, f, g ) donde E = {a,b}, S = {0,1}, Q = {q1, q2, q3} y las funciones f y g se
pueden representar por :
- 35 -
q1
q1
q2
q1
q2
q3
q2
q2
q3
q3
q1
q3
As se tiene que f(a , q1) = q1 ; g(a, q1) = 0 ; o tambin f(a, q2) = q3 ; y g(a, q3) = 1 .
Ambas funciones tambin se pueden representar en una misma tabla de la siguiente
forma :
f/g
q1
q1/0
q2/1
q2
q3/0
q2/0
q3
q3/1
q1/0
- 36 -
AUTMATAS
a/0
q
1
b/0
b/1
a/0
a/1
b/0
- 37 -
que la salida slo depende del estado, y el autmata se llama mquina de Moore.
En una mquina de Mealy las salidas estn asociadas a las transiciones, mientras que
en una mquina de Moore las salidas estn asociadas a los estados, o, lo que es lo mismo,
todas las transiciones que conducen a un mismo estado tienen asociada la misma salida.
Tambin se puede decir que una mquina de Mealy, en el instante de efectuar una transicin
necesita conocer una entrada e E, ya que en general g( ,q) no est definida. Sin embargo
en las mquinas de Moore la entrada puede ser .
Puesto que por definicin toda mquina de Moore es una mquina de Mealy que
cumple la condicin de que a cada estado se le puede asociar una salida y slo una, parece
en principio que las mquinas de Moore son un subconjunto de las mquinasde Mealy.
Sin embargo, se va a demostrar que, dada una mquina de Mealy, siempre se puede
encontrar una mquina de Moore equivalente, normalmente, a costa de aumentar el nmero
de estados.
En efecto sea la mquina de Mealy A = (E, S, Q, f, g) siempre se puede definir un
nuevo autmata :
= (E,S,Q,
f, g )
A
se obtiene escindiendo q Q en tantos estados qs como salidas s pueden
en el que Q
asociarse a q, es decir
= {qs / (q Q
Q
g(e, q) = s }
AUTMATAS
q10
q10
q21
q20
q30
q20
q21
q30
q20
q30
q31
q10
q31
q31
q10
- 39 -
a
a
q1
3
q0
3
b
0
2
b
q
q1
2
0
1
- 40 -
- 41 -
GRAMATICAS
AUTOMATAS
TIPO 0
TIPO 1
TIPO 2
TIPO 0
TIPO 1
TIPO 2
TIPO 3
TIPO 0
TIPO 1
TIPO 2
TIPO 3
TIPO 3
LENGUAJES
- 42 -
MQUINAS DE TURING
CELDA
CINTA
1 1 0 0 0 0 1 1 1 1 1 1 0 1 1
MOVIMIENTO A IZQUIERDA
MOVIMIENTO A DERECHA
donde :
- 43 -
- Q = {conjunto de estados}
- = {conjunto de smbolos permitidos en la cinta}
- B es el smbolo blanco.
- es el subconjunto de smbolos de entrada no incluyendo el blanco.
- : Q Q {I, D, S} donde es la funcin del siguiente movimiento, I significa movimiento a izquierda, D significa movimiento a derecha,
y S parada (stop).
- q0 Q es el estado inicial.
- F Q es el subconjunto de estados finales
El lenguaje aceptado o reconocido por una mquina de Turing, que denotaremos por
L(MT), es el conjunto de palabras formadas con el alfabeto * , que hace que la mquina
de Turing se pare al alcanzar un estado final.
En un principio la cabeza de la mquina de Turing est situada a la izquierda de la
cadena a reconocer, y su estado es el estado inicial q0.
Formalmente, el lenguaje
MT = (Q, , , , q0, B, F) es :
L(MT) = {W/W *
aceptado
por
q0W 1p2
una
mquina
de
Turing
p F, 1,2 *}
- 44 -
MQUINAS DE TURING
12.3 Corolario
Existe una correspondencia entre gramticas, lenguajes y autmatas de tipo 0, tal y
como se mostr en el diagrama de la figura 6.
Ejemplo 12.4
Disear una mquina de Turing que acepte el lenguaje L = {0n 1n /n 1} .
Solucin : Inicialmente la cinta contendr 0n 1n , sequido por ambos lados por un
nmero infinito de blancos.
El algoritmo de reconocimiento es el siguiente : la cabeza de lectura/escritura se
coloca en el 0 ms a la izquierda y lo reemplaza por una X, se mueve a la derecha hasta
encontrar el 1 ms a la izquierda, reemplazndolo por una Y, despus se mueve a la
izquierda hasta encontrar la X ms a la derecha, entonces se mueve una celda a la derecha,
y repite el ciclo.
La mquina de Turing que reconoce el lenguaje L es MT = (Q, , , , q0, B, F) donde :
Q={q0, q1, q2, q3, q4}
={0,1}
={0,1,X,Y,B}
F={q4}
q0 es el estado inicial
La funcin viene dada por la tabla siguiente.
q0
q1,X,D
q3,Y,D
q1
q1,0,D
q2,Y,I
q1,Y,D
q2
q2,0,I
q0,X,D q2,Y,I
q3
q4
- 45 -
q3,Y,D q4,B,D
S
Los guiones (-) en la tabla significan estados imposibles. La mquina primero escribe,
luego cambia de estado y por ltimo se mueve. Utilizando la mquina anterior se puede
reconocer la cadena 0011 :
q00011 Xq1011 X0q111 Xq20Y1 q2X0Y1 Xq00Y1
XXq1Y1 XXYq11 XXq2YY Xq2XYY XXq0YY
XXYq3Y XXYYq3 XXYYBq4 S
- 46 -
CINTA
# 1 1 0 0 0 0 1 1 1
MOVIMIENTO A IZQUIERDA
0 1 1 $
MOVIMIENTO A DERECHA
- 47 -
Ntese que las marcas fin de cinta y comienzo de cinta no son consideradas como
parte de la sentencia a reconocer. Un autmata lineal acotado no puede moverse fuera de
la cadena de entrada.
13.1 Teorema
Para toda gramtica sensible al contexto G1 existe un autmata reconocedor lineal
acotado RALA, tal que el lenguaje generado por la gramtica L(G1), es reconocido por el
autmata RALA.
L(G1)=L(RALA)
13.2 Teorema
Si L(RALA) es el lenguaje reconocido por un autmata lineal acotado, existe una
gramtica sensible al contexto G1, tal que el lenguaje reconocido por el autmata es igual
al generado por la gramtica.
L(RALA)=L(G1)
13.3 Corolario
De los dos teoremas anteriores se deduce que existe una correspondencia entre las
gramticas de tipo 1, los lenguajes de tipo 1, y los autmatas lineales acotados.
- 48 -
AUTMATAS DE PILA
- 49 -
CINTA
MOVIMIENTO DE LA CINTA
1 1 0 0 0 0 1
Q
Z
CONTROL DE ESTADOS
PILA
AUTMATAS DE PILA
CINTA
MOVIMIENTO DE LA CINTA
q
Z
CONTROL DE ESTADOS
PILA
- 51 -
CINTA
a
CONTROL DE ESTADOS
PILA
(q0,W, Z0) (q f , , )}
(q0,W, Z0) (q , , )}
AUTMATAS DE PILA
14.1.1 Teorema
Para toda gramtica libre de contexto G2, existe un reconocedor constituido por un
autmata de pila RAP, tal que el lenguaje generado por la gramtica L(G2) es reconocido
por el autmata RAP.
L(G2)=L(RAP)
14.1.2 Teorema
Para todo reconocedor constituido por un autmata de pila RAP, existe una gramtica
libre de contexto G2, tal que el lenguaje reconocido por el autmata es igual al generado
por la gramtica.
L(RAP)=L(G2)
14.1.3 Corolario
De los dos teoremas anteriores se deduce que el conjunto de lenguajes reconocidos
por los autmatas de pila, son los lenguajes de tipo 2 y que todo lenguaje de tipo 2 se puede
reconocer por un autmata de pila. Tambin se puede deducir que existe una correspondencia entre las gramticas, los lenguajes y los autmatas de tipo 2.
Ejemplo 14.1.4
Construir un autmata de pila que reconozca el lenguaje L = {0n 1n /n 0} .
Solucin : Se puede definir un autmata de pila, P, de la forma:
P = ({q0, q1, q2}, {0,1}, {Z,0}, , q0, Z, {q0})
donde se define :
(q0, 0, Z) (q1, 0Z)
(q1, 0, 0) (q1, 0, 0)
(q1, 1, 0) (q2, )
(q2, 1, 0) (q2, )
- 53 -
(q2, , Z) (q0, )
(q0, , Z) (q0, )
El autmata va copiando todos los 0 de la cinta en la pila, y cuando va encontrando
los 1, va sacando los ceros de la pila. Puede observarse que la cadena vacia tambin
pertenece al lenguaje.
Tambin se puede definir por la tabla, donde los guiones (-) representan estados
imposibles.
q0,Z
q1,0Z
q0,
q1,0
q1,00
q2,
q2,0
q2,
q2,Z
q0,
Por ejemplo para reconocer la sentencia 0011 del lenguaje, se realizan las siguientes
transiciones :
(q0,0011,Z) (q1,011,0Z) (q1,11,00Z) (q2,1,0Z) (q2,,Z) (q0,,)
En el caso general de i1, las transiciones son las siguientes :
i
- 54 -
AUTMATAS DE PILA
- 55 -
Ejemplo 14.2.1
Sea la gramtica G=(VN,VT,S,P) que representa el manejo de expresiones aritmticas, siendo VN={E,T,F} donde E es la abreviatura de expresin, T la de trmino y F la
de factor. VT={a,+,*,(,)} donde a representa a los identificadores. El smbolo inicial S=E.
Las reglas de produccin son las siguientes:
E E +T |T
T T*F | F
F (E) | a
Construir un autmata de pila que reconozca el mismo lenguaje generado por la
gramtica G.
Solucin: AP=(Q,, , , q0, z0, F) donde
Q = {q}
= {a , +, *, (, )}
= {a, +, *, (, ), E, T, F}
q0 = q
z0 = E
F = {}
a) Smbolos terminales
(1)
(q , a, a) (q, )
(2)
(q, +, +) (q , )
(3)
(q, *, *) (q , )
(4)
(q, (, ( ) (q, )
(5)
(q , ), ) ) (q, )
b) Reglas de produccin
(6)
(q , , E) (q, T)
(7)
(q, , E) (q, E + T)
(8)
(q, , T) (q , F)
(9)
(q , , T) (q, T*F)
- 56 -
AUTMATAS DE PILA
(10)
(q , , F) (q, (E))
(11)
(q, , F) (q , a)
Se puede observar que si se desea reconocer una cadena por ejemplo a+a se producen
retrocesos, debido a que el autmata no es determinista. As se pone la cadena a reconocer
a+a en la cinta, el autmata en el estado inicial q, y la pila con su valor inicial E. Las reglas
de transicin entre configuraciones estn numeradas y el autmata aplica en primer lugar
la regla con nmero ms bajo.
(6)
(8)
(10)
(1)
(8)
(10)
(1)
(6)
(8)
(10)
(q , a + a , E) (q , a + a , E + T) (q , a + a , T + T) (q , a + a , F + T) (q , a + a , (E) + T)
(1)
(2)
(8)
(10)
(q , a + a , F + T) (q , a + a , a + T) (q , +a , +T) (q , a , T) (q , a , F) (q , a , (E))
(11)
(1)
(q , a , F) (q, a , a) (q, , )
La cadena a+a ha sido reconocida por el autmata.
Ejercicio 14.2.2
Sea la gramtica G=(VN,VT,S,P) que representa el manejo de expresiones tipo Lisp,
siendo VN={S,R} y VT={x,(,), , }. Las reglas de produccin son las siguientes:
S x
S (SR
R , SR
R )
Determinar el lenguaje que genera y construir el autmata que lo reconoce. Poner
un ejemplo de reconocimiento de una cadena del lenguaje.
- 58 -
AUTMATAS FINITOS
MOVIMIENTO A IZQUIERDA
CINTA
1 1 0 0 0 0 1 1 1 1 1 1 0 1 1
CONTROL DE ESTADOS
Fig. 12 : Esquema intuitivo de un autmata finito.
- 59 -
AUTMATAS FINITOS
La forma habitual de representar los autmatas finitos es mediante un grafo o diagrama de estados (fig. 13), donde los nodos son los estados y las ramas estn marcadas
con los smbolos del alfabeto de entrada. Las ramas se construyen segn la funcin de
transicin, as debe de cumplir f(q1, a) q2.
Los nodos que representan los estados finales, suelen marcarse con un doble crculo, y el
estado inicial tambin se marca con una flecha, encima de la cual se coloca la palabra
INICIO.
Ejemplo 15.2.4
Sea el autmata finito A1 = (E, Q, f, q1, F) donde E = {a, b} {} ; Q = {q1, q2, q3, q4}
y la funcin f viene dada por la tabla siguiente y el conjunto de estados finales es F={q3}
f
q1
q2
q4
q2
q2
q3
q3
q4
q3
q4
q4
q4
- 61 -
INICIO
q2
a,b
q
Fig. 14 : Diagrama de Moore del ejemplo 15.2.4
El lenguaje generado se obtiene partiendo del estado inicial y recorriendo todos los
caminos posibles para alcanzar el estado final. As se obtiene que este autmata reconoce
el lenguaje :
L(A1) = {ab , aab, , abbb, , aabb, }
L(A1) = {a n b m /n 1m 1}
La expresin regular que denota el lenguaje es a+b+ o tambin aa*bb*.
- 62 -
AUTMATAS FINITOS
Ejemplo 15.2.5
Sea el autmata finito A2 = (E, Q, f, q1, F) donde E = {0,1} , Q = {q1, q2, q3, q4} y f se
define por la tabla siguiente, y F={q2}.
f
q1
q4
q2
q2
q3
q4
q3
q4
q2
q4
q4
q4
0
INICIO
q
2
1
1
0
0
q
0,1
- 63 -
Ejemplo 15.2.6
Sea el autmata finito A3 = ( E, Q, f, q1, F) donde E = {a,b,c}, Q = {q1, q2, q3, q4, q5},
f se representa por la tabla siguiente y F={q2, q4}.
Representar el diagrama de Moore, determinar el lenguaje que reconoce, y denotarlo
con una expresin regular.
f
q1
q2
q3
q5
q2
q5
q5
q5
q3
q5
q5
q4
q4
q5
q5
q5
q5
q5
q5
q5
q2
a,b,c
a,b,c
INICIO
q
1
b
a,b
a,b,c
q
q4
- 64 -
AUTMATAS FINITOS
Ejemplo 15.2.7
Sea el autmata A4 = (E = {1,2,3}, Q = {q1, q2, q3}, f, q1, F = {q2}), donde f viene dada
por la tabla siguiente.
f
q1
q1
q1
q2
q2
q3
q3
q3
q3
q3
q3
q3
(n ) (n ) (n ) (n )
1,2
INICIO
q
1,2,3
q2
1,2,3
- 65 -
letra, dgito
INICIO
letra
<letra>
<dgito>
q0
q1
q1
q1
q1
q2
q2
- 66 -
AUTMATAS FINITOS
q1
{q2,q3}
q2
{q2,q4}
q3
q3
q4
q4
q4
2
b
a
b
INICIO
a
q4
1
b
a
q
3
a
AUTMATAS FINITOS
- 69 -
Ejemplo 15.3.3.1
Sea el autmata finito no determinista del ejemplo 15.3.1.1, determinar un autmata
finito determinista equivalente.
Solucin : Siguiendo la construccin del teorema 15.3.3, el AFD tendr en un
principio 24 estados, es decir Q conjunto de las partes de Q tiene en un principio 16 estados.
Tambin se define el estado inicial y el conjunto de estados finales F.
Q={,[q1],[q2],[q3],[q4],[q1q2],...,[q1q2q3q4]}
q1=[q1]
F={[q4],[q1q4],[q2q4],[q3q4],[q1q2q4],...,[q1q2q3q4]}
y f se construye a partir de f resultando la siguiente tabla :
f
[q1]
[q2q3]
[q2]
[q2q4]
[q3]
[q3]
[q4]
[q4]
[q4]
[q1q2]
[q2q3]
[q2q4]
[q1q3]
[q2q3]
[q4]
[q1q4]
[q2q3q4]
[q2q3]
[q3]
[q2q4]
[q2q4]
[q4]
[q2q4]
[q3q4]
[q3q4]
[q4]
[q1q2q3]
[q2q3]
[q2q4]
[q1q2q4]
[q2q3q4]
[q2q4]
[q1q3q4]
[q2q3q4]
[q4]
[q2q3q4]
[q3q4]
[q2q4]
[q1q2q3q4]
[q2q3q4]
[q2q4]
Ahora bien, en un AF los estados que no son accesibles desde el inicial pueden
eliminarse, as se eliminan los marcados en la tabla con flechas:
[q2], [q1q2], [q1q3], [q1q4], [q1q2q3], [q1q2q4], [q1q3q4], y [q1q2q3q4] por no aparecer
dentro de la tabla.
- 70 -
AUTMATAS FINITOS
[q1]
[q2q3]
[q3]
[q3]
[q4]
[q4]
[q4]
[q2q3]
[q3]
[q2q4]
[q2q4]
[q4]
[q2q4]
El estado vacio [] no puede eliminarse en este caso, pues es accesible desde [q1] y
[q4].
De los 16 estados posibles slo han quedado 6, con los que se construye el diagrama
de Moore de la figura 20.
- 71 -
[q q ]
2 3
a
a
b
INICIO
[q ]
1
[q q ]
2 4
[q ]
3
a
b
b
a
a,b
[q ]
4
- 72 -
AUTMATAS FINITOS
q1=S
F={qf}
La funcin de transicin f se determina a partir de la forma de las reglas de produccin
P, de la manera siguiente:
a) Para reglas de la forma A a B se obtiene f(A,a)=B siendo A y B los estados
correspondientes a los no terminales A y B.
a
- 73 -
Ejemplo 15.4.1
Sea la gramtica de tipo 3 siguiente :
G = (VN={A,S}, VT={a,b}, S, P)
donde P son las reglas :
S aS
S aA
A bA
A b
Obtener un AFND y otro AFD que reconozcan el mismo lenguaje que esta gramtica
genera.
Solucin : Se define el AFND a partir de la gramtica como AFND = (E, Q, f, q1, F) donde
E={a,b}, Q={A,S,X}, q1=S, F={X}, y f viene dada por la tabla siguiente :
f
{S,A}
{A,X}
INICIO
- 74 -
AUTMATAS FINITOS
[S]
[S,A]
[A]
[A,X]
[X]
[S,A]
[S,A]
[A,X]
[S,X]
[S,A]
[A,X]
[A,X]
[S,A,X]
[A,X]
[A,X]
- 75 -
[S,A]
b
a
INICIO
[S]
[A,X]
a,b
[S,A]
b
a
INICIO
[S]
[A,X]
a
Fig. 24 : Diagrama de Moore AFD del ejemplo 15.4.1
AUTMATAS FINITOS
INICIO
INICIO
INICIO
q
- 77 -
INICIO
q
a
INICIO
a ,b
INICIO
a,b
INICIO
q
- 78 -
AUTMATAS FINITOS
INICIO
INICIO
q1
qj
N(s)
qk
INICIO
q
qf
ql
N(t)
qm
b) Para la expresin regular st se construye el AFND N(st) que se muestra en la figura 35.
- 79 -
INICIO
q1
q2
N(s)
N(t)
q3
c) Para la expresin regular s* se construye el AFND N(s*) que se muestra en la figura 36.
INICIO
q2
q1
N(s)
qf
q3
r5
r6
r4
(
r1
0
r3
|
r16
r11
r7
r10
r15
r13
r14
*
0
r2
1
- 80 -
AUTMATAS FINITOS
2
INICIO
6
4
3
9
INICIO
0
1
4
0
10
14
15
16
17
13
18
5
12
11
- 81 -
- 82 -
AUTMATAS FINITOS
BEGIN
:=nueva;
GOTO 2; /* Volver al paso 2 */
END
4. Se escoge un estado en cada grupo de la particin final como representante de
este grupo.
Los representantes seran los estados reducidos Q de A. Sea un estado qi representante, y sea una entrada a que produce una transicin de qi a qj en A. Sea qk el
representante del grupo de qj (qk puede ser qj). Entonces A tiene una transicin desde qi
a qk con la entrada a. Sea el estado inicial q0 de A el representante del grupo que contiene
al estado inicial q0 de A, y sean los estados finales F de A los representantes que estn
en F. Se puede observar que cada grupo de final consta nicamente de estados en F o no
tiene ningn estado en F.
5. Se eliminan los estados pasivos qp de Q, es decir estados que no son finales, y
que tienen transiciones hacia ellos, pero no desde ellos hacia otros. Todas las transiciones
a qp desde otros estados se convierten en indefinidas. Tambin se eliminan los estados
inaccesibles de Q, es decir todos los estados que no se pueden alcanzar desde el estado
inicial. Se obtiene Q y la funcin f.
Ejemplo 15.6.2
Sea el autmata finito determinista A=(E,Q,f,q1,F),
Q={q1,q2,q3,q4,q5}, F={q5}, y f viene dada por la tabla :
f
q1
q2
q3
q2
q2
q4
q3
q2
q3
q4
q2
q5
q5
q2
q3
donde
E={a,b},
(1).La particin inicial consta de dos grupos : (q5) conjunto de estados finales, y
(q1q2q3q4) los estados no finales.
(2). Se aplica el procedimiento de particin a cada grupo. El grupo (q5) consta de un
slo estado, y no se puede dividir ms, se coloca directamente en nueva. El otro grupo
(q1q2q3q4), con la entrada a tiene una transicin a q2, as que todos podran permanecer en
un mismo grupo en lo que a la entrada a se refiere. Sin embargo, con la entrada b, q1, q2,
y q3 van a miembros del grupo (q1q2q3q4) de mientras que q4 va al grupo (q5). Por lo
tanto nueva, tiene tres grupos :(q1q2q3), (q4) y (q5).
(3). Como nueva no es igual a , se repite el paso (2) con :=nueva.
(2). Se aplica el procedimiento de particin a los grupos de que constan de ms de
un estado. Para una entrada a en el grupo (q1q2q3), no hay divisin, sin embargo para la
entrada b se produce una divisin en (q1q3) y (q2), puesto que (q1q3) tienen una transicin
a q3, mientras que q2 tiene una transicin a q4, que es miembro de un grupo distinto de
(q1q2q3). Por lo tanto nueva, tiene cuatro grupos :(q1q3), (q2), (q4) y (q5).
(3). Como nueva no es igual a , se repite el paso (2) con :=nueva.
(2). Se aplica el procedimiento de particin a los grupos de que constan de ms de
un estado. La nica posibilidad es intentar dividir (q1q3). Sin embargo, q1 y q3 van al mismo
estado q2 para la entrada a, y al mismo estado q3 para la entrada b. Por lo tanto nueva, tiene
cuatro grupos :(q1q3), (q2), (q4) y (q5).
(3). Como nueva es igual a , se va al paso (4) con final:=.
(4). Se escoge q1 como representante del grupo (q1q3), y q2, q4 y q5 como representantes
de los grupos de un slo estado.
(5). El automata con un nmero de estados mnimo A=(E,Q,f,q1,F), donde E={a,b},
Q={q1,q2,q4,q5}, F={q5}, y f viene dada por la tabla :
f
q1
q2
q1
q2
q2
q4
q4
q2
q5
q5
q2
q1
- 84 -
AUTMATAS FINITOS
- 85 -
- 86 -
EJERCICIOS RESUELTOS
+,-
<dgito>
1
<dgito>
INICIO
q
<dgito>
q4
.
<dgito>
<dgito>
Fig. 40 : Solucin del ejercicio 16.2
Ejercicio 16.3
Definir una gramtica que permita generar identificadores, es decir secuencias de
letras y dgitos que empiezan siempre por una letra.
Solucin : Sea la gramtica G=(VN={<identificador>,<letra>,<resto identificador>,
<dgito>, <vacio>}, VT={a,b,...,A,...,Z,0,1,...,9}, S=<identificador>, P), donde P son las
producciones :
<identificador> <letra><resto identificador>
<letra> a | b | c | ... | z | A | B | C | ... |Z
<resto identificador> <dgito> <resto identificador>
<resto identificador> <letra> <resto identificador>
<resto identificador> <letra>
<resto identificador> <dgito>
<resto identificador> <vacio>
<dgito > 0 | 1 | 2 | 3 | ... |9
<vacio>
- 87 -
Ejercicio 16.4
Escribir una gramtica que defina el lenguaje L = {ab n a/n 0} .
Solucin : Sea G=(VN={S,B}, VT={a,b}, S, P) y las producciones P de la gramtica
son :
S aB
B bB
Ba
Ejercicio 16.5
Escribir una gramtica libre de contexto para un nmero real del lenguaje C++, y
escribir las derivaciones, para las siguientes sentencias:
(a) 251.
(b) -61.
(c) -75.25
(d) 1.73
(e) 14.25E+02
(f) -25.2E-23
(g) .23E12
(h) .23
Solucin :
<Tipo REAL> <signo> <nmero> <exp>
<Tipo REAL> <signo> <nmero> <exponente>
<Tipo REAL> <signo> <fraccin> <exponente>
<Tipo REAL> <signo> <nmero> <fraccin> <exponente>
<signo> +|-|<vacio >
<nmero> <dgito><nmero>|<dgito>
<fraccin> .< nmero >
<exp> E <signo> <nmero>
<exponente> <exp> | <vacio>
<dgito> 0|1|2|3|4|5|6|7|8|9
<vacio>
b) -61.
< Tipo REAL > <signo> <num> . <exponente>
- < num > . < exponente >
- < dgito > < num > . < exponente >
- < dgito > < num >.
- 88 -
EJERCICIOS RESUELTOS
f) -25.2E-23
< Tipo REAL > < signo > < num > < fraccin > < exponente >
- < num > < fraccin > < exponente >
- < dgito > < num > < fraccin > < exponente >
-2 < num > < fraccin > < exponente >
-2 < dgito > < fraccin > < exponente >
-25 < fraccin > < exponente >
-25. < num > < exponente >
-25. < dgito > < exponente >
-25.2 < exponente >
-25.2 < exp >
-25.2E < signo > < num >
-25.2E- < num >
-25.2E- < dgito > < num >
-25.2E-2 < num >
-25.2E-2 < dgito >
-25.2E-23
Ejercicio 16.6
Escribir una gramtica libre de contexto para la sentencia de FORTRAN FORMAT.
Supongase que no se admiten constantes definidas con H (Hollerith). Dar las derivaciones
de las sentencias.
(a)
(b)
(c)
(d)
(e)
10
200
99015
40
50
Solucin :
< sentencia FORMAT > < etiqueta > < blanco > {< blanco >} FORMAT
{<blanco>} ({< blanco >} < argumento > {< blanco >})
< etiqueta > < dgito > < nmero1 >
< nmero1 > < dgito > < nmero2 > | < vacio >
< nmero2 > < dgito > < nmero3 > | < vacio >
- 90 -
EJERCICIOS RESUELTOS
< nmero3 > < dgito > < nmero4 > | < vacio >
< nmero4 > < dgito > | < vacio >
< dgito > 0 | 1 | 2 | .. | 9
< blanco > b
< argumentos > < especificacin > < resto argumentos >
< resto argumentos > , < especificacin > < resto argumentos >
< resto argumentos > <diagonal> <especificacin> <resto argumentos>
< resto argumentos > < vacio >
< diagonal > / < otra diagonal >
< otra diagonal > < diagonal >
< otra diagonal > < vacio >
< especificacin > < nmero > (< argumentos >)
< especificacin > < formato >
< formato > I < nmero real >
< formato > I < nmero >
< formato > Q
< formato > A < nmero >
< formato > A
< formato > R < nmero >
< formato > L < nmero >
< formato > K < nmero >
< formato > F < nmero real >
< formato > Z < nmero >
< formato > E < nmero real >
< formato > E < nmero real > E.
< formato > D < nmero real >
< formato > D < nmero real > E.
< formato > G < nmero real >
< formato > G < nmero real > E.
< formato > T < nmero >
< formato > TL < nmero >
< formato > TR < nmero >
< formato > < nmero > X
< formato > < nmero > P
< formato > S
- 91 -
- 92 -
EJERCICIOS PROPUESTOS
- 93 -
Ejercicio 17.7
Escribir un ejemplo de lenguaje, gramtica y autmata de tipo 2, pero que no sea de
tipo 3. No incluido en este texto.
Ejercicio 17.8
Escribir un ejemplo de lenguaje, gramtica y autmata de tipo 3. No incluido en este
texto.
Ejercicio 17.9
Escribir un autmata que reconozca si un nmero es un real vlido en Pascal estndar
o no.
Ejercicio 17.10
Disear una gramtica que genere el lenguaje formado por las expresiones con o sin
parntesis, debiendo estar siempre los parntesis emparejados. Los smbolos terminales
son VT={(,e,)}. Ejemplos de instrucciones del lenguaje : e, ee, (e)(e), (((e))), ((e)(e)), y
(eee). Construir un autmata que reconozca dicho lenguaje.
- 94 -
EJERCICIOS DE PROGRAMACIN
BIBLIOGRAFA
(1)
Aho A.V. y Ullman J.D. (1973b). The Theory of Parsing, Translation and Compiling. Vol I: Parsing. Prentice-Hall.
(2)
Aho A.V. y Ullman J.D. (1973a). The Theory of Parsing, Translation and Compiling. Vol II: Compiling. Prentice-Hall.
(3)
Aho A.V., Sethi R. y Ullman J.D (1986). Compilers : Principles, Techniques, and
Tools. Addison-Wesley. Edicin en Castellano (1990) Compiladores : Principios,
Tcnicas y Herramientas. Addison-Wesley Iberoamericana.
(4)
(5)
Alvarez-Ura Alvarez, E. (1974). Algoritmos de Markov y lenguajes de programacin. Dto. de Matemticas. Escuela Tcnica Superior de Ingenieros de Minas.
Universidad de Oviedo.
(6)
Barber F., Botti V.J. y Prez T.A. (1986). Introduccin a los traductores, compiladores e intrpretes. Dto. de Sistemas Informticos y Computacin.
Universidad Politcnica de Valencia.
(7)
Chomsky N. (1956). Three models for the description of language. IRE Trans. on
Information Theory 2:3, pp 113-124.
(8)
(9)
(10)
(11)
Chomsky N, y Miller G.A. (1958). Finite state languages. Information and Control
1:2, pp 91-112.
(12)
Chomsky N., y M.P. Schutzenberger (1963). The algebraic theory of context free
languages. Computer Programming and Formal Systems, pp. 118-161, North
Holland.
- 96 -
BIBLIOGRAFA
(13)
Conde Snchez C. (1969). Mquinas de Turing y computabilidad. Discurso inagural del ao acadmico 1969-70 en la Universidad de Oviedo. Dto. de
Matemticas. Escuela Tcnica Superior de Ingenieros de Minas. Universidad de
Oviedo.
(14)
(15)
(16)
(17)
(18)
(19)
(20)
Minsky M.L. (1967). Computation: Finite and Infinite Machines. Prentice Hall,
Englewood Cliffs.
(21)
(22)
(23)
Shannon C.E. (1949). The synthesis of two-terminal switching circuits. Bell System
Tech. J., vol. 28, pp. 59-98.
(24)
Shannon C.E. (1954). A symbolic analysis of relay and switching circuits. Van
Nostrand.
(25)
Shannon C.E. (1956). A universal Turing machine with two internal states.
Automata Studies, pp. 129-153, Princeton Univ. Press.
(26)
- 97 -
ndice
AFD
autmata finito determinista, 66
transformacin AFND en AFD, 68
AFND, 67
autmata finito no determinista, 67, 79
Alfabeto, 3
Autmata, 6, 34
Configuracin, 34
de pila, 49
Estado, 34
finito, 59
lineal acotado, 47
Reconocedor de lenguaje, 34
tipo 0, 43
tipo 1, 47
tipo 2, 49
tipo 3, 59
Transicin, 34
BNF, 8
C++, 88
Cadena, 3, 10
concatenacin, 4
vacia, 4
Chomsky, 1, 18
Construccin de Thompson, 79, 80
Derivacin
relacin de, 11
Diagrama de Moore, 62
EBNF, 8
Expresin regular
construccin de Thompson, 79
transformacin en AFND, 76
Expresiones regulares, 28
Operadores, 29
tipo 3, 23
Instruccin, 13
Lenguaje, 5, 14
vacio, 6
lex, 79
Mquina de Mealy, 37
Mquina de Moore, 39
Mquina de Turing, 43
Metalenguaje, 28
Minimizacin de estados
AF en forma mnima, 81
Moore
diagrama, 62
Palndromos, 5
Procesadores de lenguaje, 6
Producciones, 8
Sentencia, 13
Shannon, 2
Smbolo, 3
inicial, 7
Thompson
construccin de Thompson, 79
Turing, 43
Universo del discurso, 5
Vocabulario, 3, 7
no terminal, 7, 9
terminal, 7, 9
Gramtica, 6, 7
transformacin gramticas tipo 3 en
AFND, 73
Gramticas
con estructura de frase, 18
contexto libre, 22
lineales a la derecha, 23
no restringidas, 18
regulares, 23
sensibles al contexto, 18
tipo 0, 18
tipo 1, 18
tipo 2, 22
- 98 -