You are on page 1of 22

TEMA 3 MECANISMOS REGULARES.

LEXICOGRAFA
3.1.- Lenguaje regular
Un lenguaje regular es un lenguaje formal que puede ser definido por medio de un mecanismo
regular, son mecanismos regulares: las expresiones regulares, las gramticas regulares (de tipo 3) y
los autmata finitos (o regulares).
El lxico de un lenguaje de programacin es un lenguaje regular y como tal se puede definir por
medio de un mecanismo regular.
Los lenguajes regulares son interesantes ya sea desde un punto de vista terico como prctico.
Terico - los lenguajes regulares forman el menor conjunto de lenguajes formales que es cerrado con
respecto de los operadores (*, . , |)
Prctico los lenguajes regulares pueden ser especificados por mecanismos regulares que permiten
simplificar y facilitar la construccin de analizadores lxicos (AL); programas que analizan un texto
y extraen los lexemas de que consta
3.2 Expresiones regulares.
Una expresin regular es una notacin (descripcin), que permite de manera precisa y finita
especificar los lenguajes regulares.
Tambin puede definirse como un metalenguaje para especificar lenguajes regulares.
- Descripcin de las expresiones regulares bsicas:
l smbolo es una expresin regular que describe el lenguaje {}, lenguaje vaco
l smbolo es una expresin regular que describe el lenguaje { }, lenguaje formado por la palabra
vaca
Para todo smbolo a , a es una expresin regular que describe el lenguaje { a }, lenguaje formado
por la palabra a.
Al ser los lenguajes regulares el menor conjunto que es cerrado con respecto de los operadores (*,
. , |) y, sabiendo que las expresiones regulares bsicas son: , , a a podemos afirmar que
la construccin de las expresiones regulares se pueden realizar a partir de la relacin entre los
operadores anteriores y los operandos que forman las expresiones regulares bsicas.
- Operaciones con expresiones regulares
Sean , dos expresiones regulares:
| es una nueva expresin regular, que denota el lenguaje L (|) = L() | L()
a| es una expresin regular, que denota el lenguaje L (a|) = L(a) | L() = {a}|{}={a,}
. es una nueva expresin regular, que denota el lenguaje L (.) = L() . L()
a. es una expresin regular, que denota el lenguaje L (a. ) = L(a).L( ) = {a}.{}={a}
* es una nueva expresin regular, que denota el lenguaje L (*) = (L () )*
a* es una nueva expresin regular, que denota el lenguaje L (a*) = (L (a) )* = {a}* = {, a, ..}
Los anteriores operadores tienen el siguiente orden de precedencia en su ejecucin, de mayor a
menor: `*, `. y `| , siendo (`., `| ) binarios mientras que (`*) es unario que precede al operando.
Esta precedencia puede ser modificada con el uso de los parntesis (), teniendo mayor precedencia
desde el interior hacia el exterior.
- Lenguaje denotado o descrito por una expresin regular:
Toda expresin regular est definida sobre un alfabeto , y denota o describe un lenguaje
L() *
L (a.b|c*) = L (a.b) | L(c*) = L ( (a).(b)) | (L(c))* = {a}.{b}|{, c, cc,} = {ab, , c, cc,}

L (a.(b|c*)) = L(a) L(b|c*) = L(a).L( (b) | (L(c)*) = {a}.({b} | (L(c))*) = {a}.({b} | {, c, cc,})
= { ab,a, ac, acc,}
Dos expresiones regulares se dice que son equivalentes, si describen el mismo lenguaje. Las
siguientes expresiones regulares se dice que son equivalentes, puesto que describe el mismo lenguaje.
ab|c*ab|c.c*|
- Propiedades de los operadores que pueden formar parte de una ER
Existen una serie de propiedades asociadas a los operadores que pueden intervenir en una ER.
Estas propiedades permiten la transformacin de una ER hasta encontrar otra equivalente.
Propiedades que cumple el operador (|) unin de ER :
Sean , , ER, se cumplen las siguientes propiedades:
Operacin cerrada
P. idempotente
P. conmutativa
P. asociativa
E. neutro

|=
|=
| = |
| ( | ) = ( | ) |
| =|

Propiedades que cumple el operador (.) concatenacin de ER :


Sean , , ER, se cumplen las siguientes propiedades :
Operacin cerrada
P. asociativa
E. neutro
P distributiva

.=
. ( . ) = ( . ) .
. =|=
. ( | ) = ( . )|( . )
( | ) = ( . ) |( . )

Propiedades de la operacin estrella (*)


*= ; *= ; . * = *. ; *. *= * ; (*)*= * ; (| )*= *
( | )* = (*| *)* ; ( | )* = ( *. *)*= ( *. )* * ; ( )*= ( . )*
- Expresiones regulares extendidasCon el fin de simplificar la representacin de las expresiones regulares se pueden utilizar otros
operadores, entre los que podemos destacar: +, ?, y []
+ es una nueva expresin regular, que denota el lenguaje L(+) = (L())+
a+ es una expresin regular, que denota el lenguaje L(a+) = (L(a))+ = {a}+ = {a,aa,}
? es una nueva expresin regular, que denota el lenguaje L(?) = (L())? = L() | {}
a? es una expresin regular, que denota el lenguaje L(a? ) = (L(a))? = L{a}|{} = {a | }
[] es una nueva expresin regular, que denota el lenguaje L([] ) = (L([] )) = {1, 2,..}
[a-z] es una nueva expresin regular, que denota el lenguaje L([a-z] ) = (L[a,b,..]) ={a,b,c..}
Otras propiedades
+= | += * *. = + +?= * ; *?= * ; *| += * (* +)= +
(+)* = * (*)+ = * ?= ( | )
*= 0| 1| 2| n| n+1 = 0| (0| 1| 2| n ) = 0| *
*= | *
Regla de inferencia importante para conocer el concepto de ecuacin caracterstica o fundamental.
= *. == |
= ( | *). = | * = |

- Definiciones regulares
Es una forma de denominar una expresin regular. A veces es conveniente darle un nombre
significativo a una expresin o subexpresiones y poder utilizar dichos nombres como si fueran
smbolos (expresin regular) para hacerla ms legible
Sea el alfabeto de las palabras del lenguaje que se quiere describir con la expresin regular.
Una definicin regular defi es una secuencia de definiciones de la forma:
def1 exp1
def2 exp12
.
defn expn
las expi estn definidas sobre { def1 def2. defn}
Describir con palabras qu lenguaje representan las siguientes expresiones regulares:
Identificador (letra | numero) (letra | numero| _)*
letra a| b| ........z| A|.......| Z
numero 0| 1.....| 9
Expresiones regulares y gramticas regulares
Las expresiones regulares y las gramticas regulares son dos mecanismos regulares equivalentes, que
especifican lenguajes regulares. Por lo tanto, todo lenguaje regular puede ser definido (descrito) por
una expresin regular o definido (generado) por una gramtica regular equivalente.
Ejemplos de lenguajes formales regulares definidos sobre el alfabetos = {a, b}:
L1 = {}= , es un lenguaje regular , puede ser definido por una ER = una G tipo3 SA
L2 = { }, es un lenguaje regular , puede ser definido por una ER= una G tipo3 S
L3 = {a, b}, es un lenguaje regular , puede ser definido por una ER= a | b una G tipo3 Sa |b
L4 = {a, ab, }, es un lenguaje regular, puede ser definido por una ER= a|ab| una G tipo3
Sa |ab|
L5 = {an, n 0}, es un lenguaje regular, puede ser definido por una ER= a* una G tipo3 SaS|
L6 ={an bm | n, m 0}={a0b0, a0b1, .}= {, a, b }={ ,a, b,} es un lenguaje regular , puede
ser definido por una ER= a*b* una G tipo3 P: S aA| bB | , A Aa | |bB , B Bb |
L7 ={palabras formadas por un nmero impar de aes}={ a, ba, ab, bab, aaba,} , es un lenguaje
regular , puede ser definido por una ER = a b*(ab* ab*)* una G tipo3
*= {lenguaje universal} ER= (a|b)*, es un lenguaje regular , puede ser definido por una G tipo3 S
aS| bS |
L9 ={an bn | n 0}={a0b0, a1b1, .}= {, ab, aabb }={ , ab, b,} no es un lenguje regular, no
hay una ER que lo denote o gramtica de tipo 3 equivalente que lo genere
3.3 Aplicacin de las ER
Las expresiones regulares son utilizadas en la gran mayora de las aplicaciones informticas, entre
otras tenemos las siguientes:
- Sistemas de recuperacin de textos en lenguajes de consulta de base de datos
- Bsqueda dentro de un contexto- comandos grep, egrep y fgrep del sistema UNIX, que a travs de la
descripcin de una ER se puede buscar una determinada informacin
-Construccin de analizadores lxicos, a partir de la especificacin de ER, facilitando la
implementacin de la primera fase de un compilador.
- Comparacin de archivos dentro de un repositorio
- Bsqueda de patrones

Ejemplos simples de expresiones regulares


- Lenguajes que denotan las siguientes expresiones regulares:
0*

- Cadenas de ceros de cualquier longitud

(0|1)*- Cadenas binarias de 0 y 1 de cualquier longitud


(10)* - Cadenas binarias donde cada 1 va seguido de un 0, es
(0|1)*1(1|0)* - Cadenas binarias con al menos un 1
(1|10)* - Cadenas binarias que no tienen 2 ceros consecutivos, es
1(0|1)*1 - Cadenas binarias que empiezan y terminan en 1
1*01*01* - Cadenas binarias que tienen dos ceros
(0|1)*00(1|0)* - Cadenas binarias que tienen la subsecuencia 00
- Dada la descripcin de los siguientes lenguajes definidos sobre el alfabeto ={0, 1}),
encontrar las expresiones regulares que los denotan.
Cadenas binarias que acaben en 0 - (1|0)*0
Cadenas con slo un 0 - 1*01*
Cadenas binarias que no contienen "000" - ((1*|0)(1*|0)1)*
Cadenas que si tienen un 1 va precedido y seguido de un 0 - (0+1)*0+
Cadenas que tienen un nmero impar de 1s - 0*1(0*10*1)*0*
- Un conjunto C es cerrado con respecto a la operacin # si: x, y C, x#yC

Ejercicio 1
1.

2.

Razonar si son equivalentes o no las siguientes dos expresiones regulares:

(a | ) (ba+)*

(ba | a)*

Razonar si son equivalentes o no las siguientes expresiones regulares:

(aa*)*b

(aa*)((aa*)*b) | b

- Para demostrar que no son equivalentes habr que obtener al menos una palabra que quede denotada
en una y no en la otra.
- Para demostrar que son equivalentes habr que hacerlo obligatoriamente mediante las propiedades
de las expresiones regulares. De forma que partiendo de ambas y realizando los pasos segn dichas
propiedades, se alcance la misma expresin regular.
Ejercicio 2
1.

Simplificar, detallando todos los pasos, la siguiente expresin regular:


(( a* | )+ aa ) | ( ( aa+a))

2. Justificar de forma razonada si cada uno de los pasos que se realizan a continuacin para
simplificar la expresin regular a ( a* | a )* son correctos o no.
a ( a* | a )* = ( a+ | aa )* = ( a+ ) * = a+
Ejercicio 3
Representar una expresin regular para cada uno de los siguientes lenguajes.
= {a, b, _ }. Palabras que como mximo pueden tener dos smbolos de subrayado consecutivos.
= {a, b, _ }. Palabras que no finalizan en la subpalabra a_
= {a, b, c }. Palabras en las que el nmero de smbolos b ms el nmero de smbolos c es 3.
= {a, b}. El lenguaje universal menos dos palabras: y a.
= {a, b}. Palabras que finalizan por el smbolo b y tienen un nmero par de smbolos b en total.
= {a, b}. Palabras que no contienen la subpalabra aa ni bb.
Ejercicio 4
Crear una ER que denote los siguientes lenguajes:

a) Los comentarios en el lenguaje de programacin Pascal se escriben de la siguiente manera:


Comienzan por los smbolos (* y terminan por *).
Si llamamos smbolo a cualquier carcter ASCII menos * y ), en el interior del comentario
se puede escribir cualquier cantidad de smbolos, incluyendo ninguno. Pero adems, dentro
del comentario se pueden usar los caracteres * y ) siempre y cuando no haya un * seguido
de un ), en cuyo caso se interpretara como el final del comentario. Por ejemplo, son vlidos
los siguientes comentarios:
(**)
(* hola *)
(*ho** la, que *hay *)
(* ho)la )***)
b) Comentarios de java: Comentario de lnea, Comentario de varias lneas y comentario de
documentacin

Ejercicio 5
Sea el alfabeto = {a, _} . Obtener una expresin regular que denote el lenguaje de todas las
palabras que cumplen las siguientes dos condiciones:
1. El nmero de smbolos a es par (posiblemente 0).
2. No pueden tener dos o ms smbolos _ de forma consecutiva.
Palabras vlidas: , aa , _ , _a_a , aaa_a_aa_
Palabras no vlidas: a , __ , a__a , a_aa
Ejercicio 6
Dado el alfabeto = {a, b}, sean los siguientes lenguajes:
L1 = {an | n >= 0} y L2 = {bm | m > 0 }
Se pide:
Encontrar una expresin regular lo ms simplificada posible que defina los siguientes lenguajes:

L+1 L*2 , L1 , * L1 , L 2 L1 , ( L1 L 2 ) * {wb | w {a, b}* }


Ejercicio 7
Sea el lenguaje L1 definido sobre un alfabeto ={a,b} y formado por las palabras que no contienen la
subpalabra ab y un lenguaje L2 definido sobre igual alfabeto y formado por las palabras que no
contienen ni aa ni ab.
Se pide:
Determinar las expresiones regulares simplificadas que denoten cada uno de los siguientes lenguajes:
L1, L2, L1 L2, L1- L2
Ejercicio 8
Con ={a,b}, sea L1 el lenguaje formado por las palabras que no finalizan en ab y L2 el de las
palabras que no acaban en ba.
Ejemplos L1: , b, a, bba, abb, aaaaabb
Ejemplos L2: , aa, b, bab, bbbbb
Se pide:
Indicar las expresiones regulares, lo ms simplificadas posible, para los siguientes lenguajes:
a) L1, L1 | L2, L1 - L2, L1 L2, *- L1
Sea L1 un lenguaje definido sobre un alfabeto ={a,b} formado por las palabras que tienen un nmero
impar de smbolos a y como mximo dos smbolos b consecutivos.
Ejemplos vlidos: a, aaba, aaabbaba, babbabbab
Ejemplos no vlidos: , aabbba, bb, abbabbaba
Sea L2 un lenguaje definido sobre un alfabeto ={a,b} formado por las palabras que tienen un nmero
par de smbolos a (el 0 se considera un nmero par) y como mximo dos smbolos b consecutivos.
Ejemplos vlidos: , aa, aaaba, aaabbaaba, baabbabbab, bb
Ejemplos no vlidos: a, aabbbaa, aabbabbaba
Se pide
1. Encontrar una expresin regular que denote el lenguaje L1.
2. Justificar si se cumplen o no las siguientes igualdades:
a) L1 | L2=*
b) L1.L2=L2.L1
c) L1*=*
d) L1=L2 complementario

3.3 Autmatas
Los autmatas tratan de simular cualquier proceso de nuestra vida cotidiana, en este caso van simular
el proceso de la informacin, proceso de las palabras de un lenguaje.
En el campo de los Procesadores de Lenguajes, los lenguajes tratados estn formados por palabras
definidas sobre un alfabeto, palabras que no son otra cosa que una secuenciacin de smbolos.
En el caso de los Procesadores de Lenguajes, los autmatas hacen de reconocedores de lenguajes,
reciben en su entrada una cadena de smbolos y decide a la salida si dicha palabra pertenece al
lenguaje
Un autmata es una mquina abstracta reconocedora de lenguajes formales, que acepta o reconoce
las palabras que componen un lenguaje formal
El autmata recibe la secuencia de smbolos de la entrada los procesa y va produciendo una salida. En
este proceso es importante saber la situacin en que se encuentra y los posibles estados por los que
pasa el autmata en momento determinado, y as, poder decidir sobre la salida.
Definicin conceptual
Conceptualmente un autmata es un modelo que simula una relacin de tres componentes:
- Una entrada, sobre la que se representa y simula la palabra a reconocer
- Una memoria, que permite y posibilita el reconocimiento de palabras con estructuras complejas
- Un control, mecanismo que determina como evoluciona el autmata en funcin: del smbolo
ledo de la entrada, el smbolo obtenido de la memoria auxiliar y el estado donde est situado
<---------- entrada ------------- >
|<-----x --->|
-----

a a

---Control de estados

Estado

Estado(s
Funcin de transicin

------

A A

-----

<---------memoria ----------- >


El diseo del control crea lo que denominamos
evoluciona el estado (situacin) del autmata

funcin de transicin, que determina como

Situaciones en un autmata
Situacin de un autmata - Estado en el que se encuentra un autmata en un momento dado
(estado actual, subpalabra que falta por reconocer, situacin memoria); (qactual , b.., B.. )
Situacin inicial - Estado inicial o de partida de un autmata (estado inicial, palabra a reconocer,
situacin inicial memoria); (qinicial , x=aab., #)
Situacin de aceptacin (o de reconocimiento) - Estado de aceptacin (o de reconocimiento) de un
autmata (estado de aceptacin, palabra reconocida, situacin final memoria); (qfinal, , )
Movimiento en un autmata - es el paso de una situacin a otra. O lo que es lo mismo la aplicacin
de una transicin a una situacin del autmata.
Situacin actual del autmata - (qm, x=abb$, A#),
Transicin posible - (qm, a, A)(qn, B)
Aplicando la transicin a la anterior situacin, queda (qn, bb$, B#) nueva situacin se ha
pasado al estado qn, se ha ledo a de la entrada y se ha sustituido B por A en la memoria.

Lenguaje reconocido por un autmata


Conjunto de palabras que partiendo del un situacin inicial se llega a una situacin final en cero o
ms movimientos .
(qi , x. #) - representa una situacin de inicio ( x palabra a reconocer, # inicio memoria )
(qf, , ) - representa una situacin de reconocimiento ( se ha ledo la palabra)
(qi, x=aab, #) ( ). (qf, , ), x es una palabra reconocida
Lenguaje reconocido por un autmata es el conjunto de palabras que partiendo de una situacin
inicial se llega a una situacin de aceptacin en cero o ms movimientos.
L (A)={x* | (qi. x. #) * (qf, , ) , x es una palabra reconocida}
Tipos de Autmatas, atendiendo a los movimientos que se pueden dar en una situacin:
Deterministas: para cualquier situacin existe como mximo un movimiento. En decir en una
situacin slo puede darse como mximo una transicin, siguiente ejemplo.
(qi, a, A ) (qj, B) a ; qi, qj Q ; A, B (alfabeto de la memoria)
(qi, aab, A.. ) (qj, ab, B ),
No deterministas: existe alguna situacin que tiene ms de un movimiento. Es decir existen
situaciones en las cuales se pueden dar ms de una transicin, siguiente ejemplo:
(qi, a, A ) { (qj, AA.. ) (qk, AB..)}
La situacin (qi, aab, A ) (qj, ab, AA ), tiene ms de un movimiento
(qi, aab, A ) (qj, ab, AA ), la anterior situacin tiene ms de un movimiento
(qi, aab, A ) (qk, ab, AB )
Tipos de autmatas, atendiendo al lenguaje que reconocen:
- Autmata finito (regular) reconocen los lenguajes regulares (lenguajes de tipo 3)
- Autmata de pila reconocen los lenguajes independientes del contexto (tipo 2)
- Autmata acotados linealmente reconocen los lenguajes dependientes del contexto (tipo 1)
- Mquinas de Turng reconocedor universal (tipo 0)

3.4 Autmatas Finitos (AF)


Es un modelo que simula una mquina abstracta que acepta (o reconoce) las palabras de un lenguaje
regular.
En el caso de los AF el mecanismo de control de evolucin no necesita de memoria (los estados del
propio autmata hacen de memoria) debido a la simplicidad de la estructura de las palabras de los
lenguajes regulares a reconocer
<---------- entrada ------------- >
|<-----x --->|
-----

---Control de estados

Estado

estados
Funcin de transicin

Las palabras de este tipo de lenguajes no tienen una estructura equilibrada, es decir la historia de una
parte de la palabra no afecta a la otra parte.
Solo es necesario el par relacionado (estado, entrada), donde el estado se relaciona con una entrada,
en la cual slo se permite leer y avanzar smbolo a smbolo.

Situacin de un AF: es un par ordenado de la forma (qi, ax) donde: qi es el estado actual del
AF, a es el smbolo sealado para leer y, x es la cadena que resta por leer en ese momento
Situacin inicial: ( q0, ax); q0 estado inicial, a es el smbolo sealado para leer y, x es la
cadena que resta por leer en ese momento, ax es cadena de entrada a reconocer por el AF
Situacin final o de aceptacin: ( qf, ) ; qf es el estado final, la cadena ha sido aceptada,
se ha llegado a leer toda la palabra y terminamos en un estado de aceptacin
Movimiento: es el paso de un estado a otro, (qi, x) (qj, y) (qi, a) (qj)
Sea x=ay , a (qi, x=aab) (qj, ab)
Tipos de AF atendiendo a los movimientos que se pueden dar en una situacin:
AF determinista Cualquier situacin tiene como mximo un movimiento
(qi, a) (qj) , a qi, qjQ (qi, abb) (qj, bb)
AF no determinista Existe alguna situacin que tiene ms de un movimiento, dos casos:
- Sin transiciones vacas AFND
(qi, a) {qj, qk,}, a , qi, qj, qk Q
(qi, abb) (qj , bb)
(qi, abb) (qk, bb)
- Con transiciones vacas AFND_
(qi, ) (qj), a , qi, qj Q
(qi, abb) {(qj, abb), (qj, abb)}

3.4.1.- Definicin formal AFD


Es aquel que ante una determinada entrada slo se puede transitar a un estado
Un AFD se define mediante una quntupla AF=(, Q, , q0, F), donde:
- : alfabeto de las palabras a reconocer por el autmata
- Q: conjunto de estados, es un conjunto finito no vaco
- : Q x Q, funcin de transicin, que transforma el par ordenado (qi, a) qj
- q0 Q, estado inicial (estado de partida)
- F Q: conjunto no vaco de estados finales o de aceptacin
Dado el siguiente lenguaje L = {anbm | n, m>0}, especificar un AFD que lo reconozca:
AF= (={a, b}, Q={ q0, q1, q2}, , q0, F={ q2}),
: (q0, a) {q1}
(q1, b) {q2}
(q1, a) {q1}
(q2, b) {q2}
Representacin grfica de los AF
Para mejorar la legibilidad y visibilidad de los autmatas se pueden utilizar dos tipos de
representaciones grficas: los diagramas de transicin o las tablas de transicin:
Diagramas de transicin
La representacin por medio diagrama de transiciones, es un grafo dirigido, en el que:
- Los nodos que se representan por un circulo, que se etiquetan con los estados qQ
- Habr arcos etiquetados con a desde el nodo qi al qj, si existe la funcin (qi,a)qj
- El estado inicial tiene un arco entrante no etiquetado
- Los estados finales qf F se sealan por doble circulo
Ejemplo de un AFD representado por un diagrama de transicin, que reconoce el lenguaje :
L = {anbm | n,m>0}
a
q0

b
q1

fig1

Tablas de transicin
Representacin tabular que relaciona dos componentes: entradas y estados
- Cada fila corresponde a un estado qQ
- Cada columna corresponde a un smbolo de entrada a
- La fila asociada al estado inicial tiene una
- Las filas asociadas a los estados finales tienen el smbolo *
En la posicin (q, a), q Q y a est el estado que determine la funcin (q, a)
AFD representado por una tabla de transicin que reconoce el lenguaje L = {anbm | n,m>0}
entradas
estados

q0
q1
*q2

q1
q1
--

-q2
q2

- Lenguaje reconocido por un autmata finito determinista


Conjunto de palabras que partiendo del una situacin inicial, se llega a un estado final en cero o ms
movimientos.
Movimiento en un AFD: es el paso de un estado a otro.
(qi, x) (qj, y) (qi,a) (qj) ; x=ay , a
Ejemplo fig 1: (q0, abb)(q1,bb).(q2,)

(qi, x=aab) (qj, ab)

Lenguaje={ x |x *, (qi , x)*(qf,), qf F } AFD

3.4.2.- Definicin formal AFND


Los AFND es una extensin de los AFD que tiene la capacidad de transitar a ms de un estado para
una misma entrada.
Un AFND se define mediante una quntupla AF=( , Q, , q0, F), donde:
- : alfabeto de las palabras de lenguaje a reconocer
- Q : conjunto de estados, es un conjunto finito no vaco,
- : Q x P(Q), representa subconjunto de estados de Q.
Funcin de transicin, que transforma el par ordenado (qi, a){qj,..}
- q0 Q, estado inicial
- F Q: conjunto no vaco de estados finales o de aceptacin
Dado el siguiente lenguaje L = {anbm | n,m>0}, especificar un AF que lo reconozca:
AF=(={a,b}, Q={ q0, q1, q2}, , q0, F={ q2}),
: (q0, a) {q0}
(q1, b) {q1}

(q0, a) {q1} (q0, a) {q0, q1}


(q1, b) {q2} (q1, b) { q1,q2}

Diagramas de transicin
- Los nodos que se representan por un crculo, que se etiquetan con los estados qQ
- Habr arcos etiquetados con a desde el nodo qi a los nodos qj, qk,.. si existe
(qi, a)qj, (qi, a)qk, (qi,a){qj, qk,..}
- El estado inicial tiene un arco entrante no etiquetado
- Los estados finales qfF se sealan por doble circulo
AFND representado por un diagrama de transicin que reconoce el lenguaje L = {anbm | n,m>0}
a

b
q0

q1

q
fig2

10

Tablas de transicin
- Cada fila corresponde a un estado qQ
- Cada columna corresponde a un smbolo de entrada a
- La fila asociada al estado inicial tiene una
- Las filas asociadas a los estados finales tienen el smbolo *
- En la posicin (q,a) qQ y a estn los estados que determine (q,a)
AFND representado por una tabla de transicin que reconoce el lenguaje L = {anbm | n,m>0}
Entradas
estados

q0
q1
*q2

{q0, q1}
q1
--

-{q2 q1}
--

- Lenguaje reconocido por un autmata finito no determinista


Conjunto de palabras que partiendo del una situacin inicial, se llega a un estado final en cero o ms
movimientos.
Un AFND acepta una cadena x si es posible elegir una secuencia de opciones de estados partiendo de
uno inicial y finalizar por uno de aceptacin
Movimiento: es el paso de un estado a otro.
(qi, x) { (qj, y), (qk, y) } (qi, a) {qj, qk} x=ay , a
(qi, x=aab) (qj, ab)
(qk, ab)
Ejemplo fig 2:

(q0, abb)(q0, bb).(q2, )


(q1, bb).(q2, )

Lenguaje={x | x *, (qi , x)*(qf, ) F} AFND


Otra representacin del lenguaje generado por un AFND
L(A)={ x | x *, *(qi , x) F} *(qi. x) contiene al menos un estado de aceptacin

3.4.3. - Definicin formal AFND-


Una extensin de los AF que permite transiciones vacas. Las transiciones vacas hacen que se pueda
realizar un movimiento sin lectura de la entrada.
Un AFND_ se definen mediante una quntupla AF=( , Q, , q0, F), donde:
- : alfabeto de las palabras a reconocer
- Q : conjunto de estados, es un conjunto finito no vaco,
- : Q x { } P(Q) funcin de transicin, que transforma el par (qi,){qj,..}
P(Q), representa subconjunto de estados de Q, funcin de transicin
- q0 Q, estado inicial
- F Q: conjunto de estados finales o de aceptacin
Dado el siguiente lenguaje L = {anbm | n,m>0}, especificar un AFND- que lo reconozca:
AFND- = (={a,b}, Q={ q0, q1, q2, q3}, , q0, F={ q3})
: (q0, a) {q1}
(q2, b) {q3}
(q1, a) {q1}
(q3, b) {q3}
(q1, ) {q2}
Diagramas de transicin
- Los nodos se etiquetan con los estados qQ
- Habr arcos etiquetados con desde el nodo qi al qj, qk,.. si existe (qi,)qj qk..
- El estado inicial tiene un arco entrante no etiquetado
- Los estados finales qfF se sealan por doble crculo

11

AFND- representado por un diagrama de transicin que acepta el lenguaje L= {an bm | n, m>0}
a
q0

q1

b
q2

q
fig3

Tablas de transicin
- Cada fila corresponde a un estado q Q
- Cada columna corresponde a un smbolo de entrada a
- La fila asociada al estado inicial tiene una
- Las filas asociadas a los estados finales tienen el smbolo *
- En la posicin (q, a) qQ y a est el estado(s) que determine (q, a) o (q, )
AFND- representado por una tabla de transicin que reconoce el lenguaje L = {anbm | n, m>0}
Entradas
estados
q0
q1
q2
*q3

q1
q1
---

--q2
q3

-q1,q2
---

- Lenguaje reconocido por un autmata finito no determinista con transiciones vacas


Conjunto de palabras que partiendo del una situacin inicial, se llega a un estado final en cero o ms
movimientos.
Movimiento: es el paso de una situacin a otra.
(qi, x) (qj, x) (qi, ) (qj) x =a y , a { }
(qi, x=aab)) (qj, aab)
(qj, aab)
Ejemplo fig3:

(q0, aabb)(q1, abb) q1, bb) .(q2,)


(q2, abb)..

Lenguaje={ x |x *, (qi.x)*(qf, ) F} AFND-


Otra representacin del lenguaje generado por un AFND-
Lenguaje={ x |x *, *(qi. x) F}
Los AFND- facilitan la programacin del AFND, estn estrechamente relacionados con ER

3.5 Autmatas equivalentes


Dos o ms autmatas A1, A2,.., son equivalentes A1 A2 .. si aceptan el mismo lenguaje, es decir
L(A1)=L(A2)=los autmatas vistos en los apartados anteriores de la figura (1,2,3) son equivalentes.
Los AF ya sean deterministas o no deterministas tienen la misma potencia de reconocimiento de
lenguajes, en el sentido que cualquier lenguaje regular puede se reconocido por un AF ya sea
determinista o no determinista con o sin transiciones vacas.
Desde el punto de vista prctico, es conveniente que el autmata sea determinista el proceso es
directo ms simple de implantar y ms rpido, pero desde el punto de vista terico son interesante los
no deterministas porque permiten modelizar el algoritmo de bsqueda y retroceso, tambin son
importantes y de gran utilidad los AFND con transiciones vacas sobre la teora de lenguajes formales

12

3.6 Autmatas completos


Se dice que un autmata finito es completo cuando para todos los estados se dan todas las
transiciones.
a , qi, qj Q (qi, a) (qj) | (qi, abb) (qj, bb)
Cualquier autmata finito no completo puede hacerse completo, poniendo un estado de error o estado
trampa, al cual transitan todas las transiciones no permitidas en el reconocimiento del lenguaje
Dado el siguiente lenguaje L = {anbm | n, m>0}, especificar un AFD completo que lo reconozca:
AF=(={a,b}, Q={ q0, q1, q2}, , q0, F={ q2}),
(q0, a) {q1}
(q0, b) {qerror}
(q1, b) {q2}
(q1, a) {q1}
(q2, a) {qerror}
(q2, b) {q2}
a
q0

b
q1

q
a

qer

a,b

fig 4
Los autmatas finitos completos son interesantes desde el punto de vista, de la obtencin de su
complementario, basta con cambiar estados finales por no finales y viceversa, para obtener el AF que
reconoce su lenguaje complementario. El siguiente AFD reconoce el lenguaje complementario al
lenguaje que reconoce el anterior autmata.

a
q

b
q

q2
a

qe

a,b

fig 5

3.7 Autmata conexo


Un autmata finito es conexo cuando desde el estado inicial en cero o ms movimientos se llega a
todos los estados.
qi (estado inicial) (qi, x) * (qj) qj Q todos los AF visto hasta hora son conexos
Convertir un AF dado en otro equivalente que sea conexo, consiste en quitarle los estados
inaccesibles
a
q0

b
q

a
q

a
q0

a
qe

b
qe

a,b

fig 6

a,b

13

3. 8 Simulacin de un AFD
El fin de un AF es el del reconocimiento de un lenguaje. A continuacin se describen dos formas de
simular la implementacin de los autmatas finitos
- simulacin por medio del diagrama de transiciones
Posicionarse en el estado inicial qi
Leer el primer carcter de la entrada a
Mientras ( no sea fin de la entrada) hacer
Moverse a un estado dependiendo de la entrada y estado actual qi,a qj
Leer el siguiente carcter b
Si el estado es final entonces palabra reconocida qiF
Sino error la palabra no es reconocida. error
- situacin por medio de la tabla de transiciones
Posicionarse en el estado inicial qi
Repetir
Leer el primer carcter de la entrada a
Obtener siguiente estado [ estado actual, entrada leda] [qi,a]=qj
Hasta estado final o error
La representacin en forma de tabla tiene la ventaja de un rpido acceso, su desventajas son que
necesitan bastante memoria cuando el alfabeto de entrada es grande y, existen muchas transiciones
vacas, tambin tiene una estructura esttica para cualquier modificacin es ms costosa.
Las representaciones mediante listas es mas compacta pero es ms lenta en su proceso.
Implementar la funcin como un segmento de cdigo con estructuras CASE dentro del programa que
simula el proceso de reconocimiento de las palabras es ms eficiente.

3.9 Equivalencia entre AFN y AFD


Transformacin de AFND en AFD
Un lenguaje L que puede ser reconocido por un AFND, puede encontrarse un AFD equivalente que
reconozca el mismo lenguaje.
Un AFD es un caso particular de un AFND, puesto que (qi, a) |(qj)| =1, a , |qj|Q
En un AFND (qi, a) |(qj, qk,)| 1, a, qi, qj, qkQ
Para evitar el no determinismo hay que unir todos los estados a los que se llega con una misma
entrada (qi, a) {qj, qk,}, los estados (qj, qk,), se llega con la entrada a, que formarn un estado
del AFD
Mueve(qi, a)={qj, qk,..}=Ai los estados que forman Ai mantiene las relaciones de transicin con el
resto de los estados.
Ai
a

q1

..
a

a
q0

q2
b

.
q3

q2

..

q0
b

q3

fig.5

Mueve(qo, a)={q1, q2,..}=Ai

Transformacin de AFND- en AFD


Dado un AFND puede considerarse un caso restringido de un AFND-, (qi, ) = qiQ .
Un lenguaje reconocido por un AFND puede ser reconocido por un AFND- equivalente.

14

(qi, ) = {qj, qk,..}, estados {qi, qj, qk,..} se puede llegar sin leer nada de la entrada, es decir
se pueden agrupar en un estado del AFD para evitar el no determinismo
Se utiliza la operacin cierre, para agrupar todos los estados. Cierre- (q) estados alcanzables desde el
estado q, a travs de transiciones vacas.
Cierre- (q)= { p | (q, ) * (p, ) , qQ }

a
q0

q1

q2

q0,

q2

q3

a
q3

fig.6

Cualquier lenguaje regular (tipo 3) puede ser reconocido por un autmata finito. Sin embargo un
AFD puede dar lugar a reconocedores ms rpidos y ms fcil de realizar debido a que solo existe un
camino; mientras que en los AFN hay que realizar un backtracking buscando todos los posibles
caminos.
Transformacin de AFN en AFD- mtodo de los subconjuntos
Se trata de agrupar estados del AFN para evitar el no determinismo producido por las condiciones
vista anteriormente
Un AFN se caracteriza por cumplir algunas de las siguientes condiciones:
- Existen estados que ante una determinada entrada a van a ms de un estado{qi, qj }, estados
que se pueden agrupar (AFND)
(qi, a) {qi, qj }=Ai
- Existen transiciones vacas, todos los estados unidos por transiciones vacas se pueden agrupar

(AFND- )
(qi, ) (qi, qj ); (qj, ) (qk, ql ) => { qi, qj ,qk, ql}=Ai
Ejemplo de AFN:
b
a

q1

q3

q5

q0

q2

q4

q7

q6

b
fig.7

Obtencin del AFD, aplicando las condiciones anteriores, por medio de agrupaciones de estados:
- Estado inicial ser el conjunto de estados alcanzables a travs de transiciones vacas del estado
inicial del AFND
Cierre_ (q0)={q0,}=A0

A0 es un estado no tratado del AFD

Un estado Ai es no tratado cuando no se han comprobado las entradas para los estados del AFND que
lo componen.
- Mientras que existan estados no tratados hacer:
Elegir un estado no tratado Ai y a hacer:
Mov (Ai,a)={}=Aj {estados alcanzables desde los estados del AFND que forman Ai y la
entrada a}

15

Cierre_ (Aj)= Ak {estados que se pueden sumar a los anteriores al estar unidos por
transiciones vacas}
Se obtiene un estado Ak, que de no estar tratado lo incluiremos en el conjunto de los no
tratados
Clculo del ejemplo anterior:
entradas
Estados AFD

A0

{q0}

{q1, q2 ,q4, q6}=A1

-----

A1

{q1, q2 ,q4,q q6}

-----

{q0, q3,q7}=A2

A2

{ q0, q3, q7}

{q1, q2 ,q4, q6, q5}=A3

-----

A3

{q1, q2 ,q4, q6, q5}

-----

{ q0, q3, q7}=A2

Construccin del AFD buscado:


- El estado inicial del AFD ser aquel que contenga el estado inicial del AFND
- Todos los estados Ai del AFD mantienen las entradas que tienen los estados del AFND
- Los estados finales del AFD sern aquellos que contengan algn estado final del AFND
a

b
a

fig.8

El AFD obtenido no es mnimo, mnimo sera el siguiente:


A

b
a

fig.9

Tanto el autmata de la figura 7, como el de la figura 8 y 9 son equivalentes, reconocen el lenguaje


denotado por la ER => (ab)*
Transformacin de AFD a AFD mnimo creando clases de equivalencia:
Se trata de agrupar estados que tienen el mismo comportamiento. (estados que tienen las mismas
funciones)
Dos o ms estados {qi, qj,.. }tienen el mismo comportamiento, cuando esos estados para las mismas
entradas a transitan a los mismos estados
(qi, a) {qk}
(qj, a) {qk}

(qi, b) {ql}
(qj, b) {ql}

{qi, qj} tienen el mismo comportamiento

a
a

q1
q3

q0
b

.
q2

q0

a,b

q1

q2

a
fig. 10

(q1, a) {q3} ; (q2, a) {q3}

(q12, a) {q3}

Los estados finales y no finales tienen distinto comportamiento, unos por ser reconocedores y los
otros no.
a

q1

a
q3

q0
b

.
q2

q0

a,b

q1

q2

a
fig 11

16

(q12, a) {q3}

(q1final, a) {q3} ; (q2no final, a) {q3}


Obtencin del AFD mnimo:

- Se crea una particin inicial del conjunto de estados en dos grupos: finales y no finales
P0 : G0={estados no finales} G1={estados finales}
- Por cada grupo de comportamiento de una particin hacer:
Dos o ms estados pertenecientes al mismo grupo, seguirn en el mismo grupo si tienen el
mismo comportamiento
(Gi, a)Gn ;
(Gi, b)Gm ; Gi se mantiene como un grupo
En otro caso el grupo se divide en tantos subgrupos como comportamiento distintos existan
(Gi, a)Gn, Gm Gi=Gi1, Gi2 ;

Gi se divide en dos subgrupos

- El proceso anterior se repetir hasta que no se creen ms subgrupos en las particiones que se van
obteniendo
Construccin del AFD buscado:
- El estado inicial del AFD mnimo ser aquel grupo que contenga el estado inicial del AFD
- Todos los grupos obtenidos en la ltima particin sern estados del AFD mnimo, estados que
mantienen las entradas de los estados del AFD de partida
- Los estados finales del AFD mnimo sern aquellos grupos formados por estados finales del AFD
de partida
a) Haciendo el AFD completo:
a,b
qe

b
q0

b
b

q1

a
q2

b
a

fig. 12

q3

El estado de error qe forma parte del grupo de los no finales


P0 => G0 = {q1, q3, qe}
G0
q1
q3
qe

a
G0
G0
G0

G1 = {q0, q2 }

b
G1
G1
G0

(* particin cero *)
G1
q0
q2

P1 => G0 = {q1, q3], G1 = {qe}, G2 = {q0, q2 }


G0
q1
q3

a
G1
G1

b
G2
G2

G2
q0
q2

a
G0
G0

a
G0
G0

b
G0
G0

(* particin uno *)
b
G1
G1

G1
qe

a
G1

b
G1

Construccin del AFD buscado:


- El estado inicial del AFD mnimo ser aquel grupo que contenga el estado inicial del AFD
- Todos los grupos obtenidos en la ltima particin sern estados del AFD mnimo, estados que
mantienen las entradas de los estados del AFD de partida
- Los estados finales del AFD mnimo sern aquellos grupos formados por estados finales del AFD
de partida

17

a,b

b
AFD mnimo obtenido

a
b
a

fig.13

b) AFD no completo obtencin del AFD mnimo a travs de un AFD no completo


b
a
b
q
1
q0
q3
q2
a
fig. 14

P0 => G0 = {q1, q3 }
G0
q1
q3

a
-----

G1 = {q0, q2 }

b
G1
G1

---` representa un grupo no definido


G1
q0
q2
G

AFD mnimo obtenido

a
G0
G0

b
-----

b
a

fig. 15

- Equivalencia entre AF y gramticas de tipo 3


Por tratarse de dos mecanismos regulares que permiten especificar lenguajes regulares, se puede
establecer una transformacin de uno al otro, nada mas que cambiando de forma de representacin.
- Se trata de adaptar la representacin del AF a la gramtica de Tipo 3 de la siguiente forma:
A=(, Q, , q0, F) => G=(, N, S, P)
- A cada estado del AF se le hace corresponder un elemento no terminal de la gramtica
- Al estado inicial le corresponde el smbolo inicial
- Las transiciones se transforman en producciones de la siguiente forma:
(qi, a) {qj}

AiaAj

Ai,AjN

qiAi ; qjAj

qf F
(qi, ) {qj}

Af
AiAj

AfN
Ai,AjN

qfAf
qiAi ; qjAj

AiAj es una produccin que no corresponde a las gramticas de tipo 3, para evitarla sustituimos a
Aj por las partes derechas de producciones donde Aj figure como parte izquierda

q0

b
q1

q2

a
fig.16

Ejemplo : A=( ={a, b},Q={q0, q1, q2}, , q0, F={q2})


: (q0, a) {q1} , (q1, ) {q2} , (q1, b) {q1} , (q2, a) {q2} , (q2, b) {q1}
G = (={a,b},N={A0,A1,A2}, A0,P)
P : A0aA1 , A1A2|bA1 , A2bA1|aA2|
A0aA1 , A1 bA1|aA2| , A2bA1|aA2|
Equivalencia entre gramticas de tipo 3 en AF
Proceso es inverso al apartado anterior en donde ahora conocemos la representacin de la
gramtica y hay que obtener la del AF

18

G=(, N, S, P) => A=(, Q, , q0,F)


- A cada elemento no terminal de la gramtica se le hace corresponder un estado del AF
- Al smbolo inicial le corresponde el estado inicial
- Las producciones se transforman en transiciones de la siguiente forma:
AiaAj (qi, a) {qj} Ai, AjN qiAi ; qjAj
Para las producciones Aia se crea un nico estado final qf al que se llega desde el estado
qi y la entrada a
Aia (qi, a) {qf} qf F
Para cada una de las producciones Ai se pone el estado qi asociado a Ai como final
Ai qiF qiAi
Ejemplo :
G= (={a, b}, N={ A0, A1, A2 }, A0, P)
P : { A0aA1 , A1 bA1| aA2| b| , A2bA1| aA2| a | }
A= ( ={a,b}, Q={ q0, q1, q2, qf}, , q0, F={q1, q2, qf })
: (q0, a) {q1} , (q1, a) {q2} , (q1, b) {q1} , (q1, b) {qf} ,
(q2, a) {q2} , (q2, b) {q1}, (q2, a) {qf}
qt

b
a

q0

q1

a
a

q2

fig.18

b
Equivalencia entre AFD y ER
Para conocer este tipo de equivalencias hay que plantear el AFD como un sistema de ecuaciones.
La forma de plantear el sistema de ecuaciones es similar al propuesto de pasar de AF a gramtica de
tipo 3, con las siguientes diferencias en su representacin:
- La flecha separadora de las producciones se sustituye por el smbolo =
- La barra de alternativa | se sustituye por un +
- Los elementos no terminales se renombran por x para adecuarlo a la representacin de un sistema
de ecuaciones
a
q0

Ejemplo:

fig.19
AFD => G A0aA0 | => x0 = ax0 +

x0= ax0 + ; x0 representa una expresin regular (ER) que denota el lenguaje a reconocer desde q0
o a generar desde A0
Aplicando la regla de inferencia de ER = * = | o lo que denominamos ecuacin
caracterstica (o fundamental) x = A* B = Ax + B
x0=ax0+ => aplicando e.c. a*.=a*
b
Ejemplo:
q0

q1

a
b

q2

fig.20

A0 aA1
A1 bA1 | a A2
A2 bA1 | aA2 |

19

Plantendolo como un sistema de ecuaciones:


x0 = ax1
x1 = ax2+bx1
x2 = ax2+bx1+ aplicando e.c. x2 = a*.( bx1+ ) y sustituyendo en la 2 ecuacin:
x1 = a (a*.(bx1+) )+bx1 = a (a*bx1+a*) + bx1= a+bx1+a++bx1 = (a+b+b)x1+ a += (a+b+b)*.a+
sustituyendo el valor de x1 en la 1 ecuacin
x0=a ( (a+b+b)*. a+) = a ( (a+b|b)*. a+ )= a ( a+b |b )*.a+ a ( a |b )*. a
Las ER obtenidas por medio de sta transformacin no estn simplicadas.
Transformacin de ER en AFND mtodo de thompson
- Es una transformacin dirigida por la sintaxis, de forma que usa la estructura sintctica de la ER
para guiar y representar el proceso de construccin del AFN. Se basa en las siguientes reglas :
La ER es equivalente al AF siguiente

q0

q1

La ER a es equivalente al AF siguiente
q0

q1

La ER | es equivalente al AF que reconoce el lenguaje denotado por la ER alternativa con el


AF que reconoce el lenguaje denotado por la ER . En definitiva ambos mecanismos definen el
lenguaje L() |L()

q1

AF()(
)

q2

q0

q5
q3

AF()(
)

q4

La ER . es equivalente al AF que reconoce el lenguaje denotado por la ER concatenado con


el AF que reconoce el lenguaje denotado por la ER : En definitiva ambos mecanismos definen el
lenguaje L() . L()

q0

AF()(
)

q1

q2

AF()(
)

q3

La ER es equivalente al AF que reconoce L()*. En definitiva ambos mecanismos definen el


lenguajeL()*

q1

q0

AF()(
)

q2

q3

La ER + es equivalente al AF que reconoce L()+. En definitiva ambos mecanismos definen el


lenguaje L()+

20

q1

AF()(
)

q2

Ejemplo - transformacin de la ER a.(b|c*)* en el AFN siguiente :


a

AF(b|c*)
AF (b|c*)*

AF(b|c*)
AF (b|c*)

AF (b)

AF (c*)

Ejercicios
1- Construir un AFD para cada uno de los siguientes lenguajes formales:
a) Dado el alfabeto ={1,2,3}, sea el lenguaje L={w{1,2,3}+ | la suma de las cifras de w es mltiplo
de 4 }. Por ejemplo, seran vlidas 13, 31, 2222, etc.
b) Sea el lenguaje L= {w{0, 1}* | en w, la subcadena 00 aparece como mucho dos veces }. Por
ejemplo, la palabra 000 pertenece al lenguaje por tener dos subcadenas 00, pero no la palabra
0000, ya que contiene tres subcadenas 00. Otros ejemplos de palabras vlidas son: 01001001,
01000, 1011. Ejemplos de palabras NO correctas: 0100100100, 01000100, 010000.
c) Dado el alfabeto = {0, 1}, sea el lenguaje de todas las palabras que, tienen un nmero impar de
smbolos 1, y adems contienen la subcadena 01. Por ejemplo, seran vlidas las subcadenas 01,
010101, 110111. Pero no lo seran 1, , 011 0101.
d) ={a,b,c,d}. Las palabras que pertenecen a este lenguaje cumplen las condiciones de que si
aparece la subpalabra db siempre est seguida por el smbolo c, y si aparece la subpalabra ba
siempre est seguida por el smbolo d. Por ejemplo, las siguientes palabras: a, dbcb,
aabccbadc.
e) ={a, b, c}. Pertenecen a este lenguaje las palabras que tienen un nmero par de veces
(posiblemente ninguna) la subcadena bc.
f) ={a, b}. Las palabras tienen un nmero par de smbolos a y no contienen la subpalabra bbb (se
considera que el 0 es un nmero par).

21

2) Los comentarios en el lenguaje de programacin Pascal se escriben de la siguiente manera:

Comienzan por los smbolos (* y terminan por *).

Si llamamos smbolo a cualquier carcter ASCII menos * y ), en el interior del


comentario se puede escribir cualquier cantidad de smbolos, incluyendo ninguno. Pero
adems, dentro del comentario se pueden usar los caracteres * y ) siempre y cuando no
haya un * seguido de un ), en cuyo caso se interpretara como el final del comentario.
Por ejemplo, son vlidos los siguientes comentarios:
(**) , (* hola *), (*ho** la, que *hay *), (* ho)la )***)

Se pide:
Construir un AFD que reconozca los comentarios de Pascal.En dicho AFD se utilizar smbolo
para representar a cualquier carcter menos * y )
3) Sea el alfabeto = {a, _} . Obtener un AFD mnimo que reconozca el lenguaje de todas las
palabras que cumplen las siguientes dos condiciones:
El nmero de smbolos a es par (posiblemente 0).
No pueden tener dos o ms smbolos _ de forma consecutiva.
Palabras vlidas: , aa , _ , _a_a , aaa_a_aa_
Palabras no vlidas: a , __ , a__a , a_aa
5- Dado el siguiente AFD definido sobre el alfabeto ={a,b} que reconoce el lenguaje L, formado por
las palabras que contienen al menos una vez la subpalabra aa:

q0

b
a
b

a, b
q1

q2

Modificarlo, obteniendo un AFD que reconozca el lenguaje L {a}.

6 - Dado el alfabeto = {a,b} y, sean los lenguajes L1 y L2 definidos respectivamente mediante los
siguientes AFD

L1

L2

q0

b
a
b

b
a
a

q0

q1

q1

Se pide:
a) Una ER para el complementario de L1
b) Un AFD para L1 {b}
c) Una ER para L2
d) Un AFD para L22.
e) Una ER para *- L1*
6- El autmata siguiente reconoce el lenguaje L.
q1

1
0

q0

q2

1
Se pide:
a) Expresin regular simplificada que reconozca L.
b) Expresin regular simplificada que reconozca el lenguaje complementario de L.
c) Encontrar un autmata finito determinista mnimo que reconozca L*.

22

You might also like