Professional Documents
Culture Documents
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
|=
|=
| = |
| ( | ) = ( | ) |
| =|
.=
. ( . ) = ( . ) .
. =|=
. ( | ) = ( . )|( . )
( | ) = ( . ) |( . )
- 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
Ejercicio 1
1.
2.
(a | ) (ba+)*
(ba | a)*
(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.
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:
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:
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
-----
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.
---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)}
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
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}
--
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
---
12
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
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.
q1
..
a
a
q0
q2
b
.
q3
q2
..
q0
b
q3
fig.5
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
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}
-----
A1
-----
{q0, q3,q7}=A2
A2
-----
A3
-----
b
a
fig.8
b
a
fig.9
(qi, b) {ql}
(qj, b) {ql}
a
a
q1
q3
q0
b
.
q2
q0
a,b
q1
q2
a
fig. 10
(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}
- 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 ;
- 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
a
G0
G0
G0
G1 = {q0, q2 }
b
G1
G1
G0
(* particin cero *)
G1
q0
q2
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
17
a,b
b
AFD mnimo obtenido
a
b
a
fig.13
P0 => G0 = {q1, q3 }
G0
q1
q3
a
-----
G1 = {q0, q2 }
b
G1
G1
a
G0
G0
b
-----
b
a
fig. 15
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
18
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
q0
q1
La ER a es equivalente al AF siguiente
q0
q1
q1
AF()(
)
q2
q0
q5
q3
AF()(
)
q4
q0
AF()(
)
q1
q2
AF()(
)
q3
q1
q0
AF()(
)
q2
q3
20
q1
AF()(
)
q2
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
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
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