Estructuras Discretas II
Lenguajes
y
Autómatas
Dra. Norka Bedregal Alpaca
L
E
N
G
U
A
JE
S
Y
A
U
T
Ó
M
A
T
A
S
Lenguaje Natural:
o Aquel que ha evolucionado con el tiempo para fines de la
comunicación humana
o Continúan su evolución sin tomar en cuenta reglas
gramaticales formales
o Cualquier regla es posterior y trata de explicar la
estructura del lenguaje
Lenguaje Formal:
o Está definido por reglas preestablecidas y se ajusta
rigurosamente a ellas
o Por ejemplo: lenguajes de programación de computadoras,
lenguajes matemáticos (álgebra, lógica proposicional..)
3
L
E
N
G
U
A
JE
S
Y
A
U
T
Ó
M
A
T
A
Se sabe que una cadena de un conjunto X es una secuencia finita de elementos de X.
Las cadenas son objetos fundamentales usados en la definición
de lenguajes.
El conjunto de elementos de donde las cadenas son producidas
se llama alfabeto del lenguaje.
Un alfabeto consiste de un conjunto finito de objetos no
divisibles.
Ejemplo:
Sea ={a,b,c}, las siguientes son cadenas de ese alfabeto:
abc cb cab aaaabbbccc
L
E
N
G
U
A
JE
S
Y
A
U
T
Ó
M
A
T
A
Definiciones.
Alfabeto
Palabra, cadena o frase
Palabra vacía
Longitud de una palabra
0 si x =
| x | =
| y | + 1 si x = ya (con a , y palabra sobre ∑ )
Ej. ∑ = {a, b}
Ej. x = abbab
∑n: conjunto de todas las palabras de longitud n sobre ∑
0 *
i
i
5
L
E
N
G
U
A
JE
S
Y
A
U
T
Ó
M
A
T
A
Concatenación de cadenas:
Sean x = a1a2...am e y = b1b2...bn se define
xy = a1a2...amb1b2...bn
Ejemplo:
Sean u=ab v=ca w=bb
Entonces
uv=abca vw=cabb
(uv)w=abcabb u(vw)=abcabb
Propiedades. 1. Asociativa
2. Elemento neutro ()
Lenguaje: cualquier subconjunto de ∑* .
Concatenación de Cadenas
Concatenación de Cadenas
L
E
N
G
U
A
JE
S
Y
A
U
T
Ó
M
A
T
A
Longitud de una cadena
También llamada tamaño de una cadena w es el número de
elementos que contiene la cadena.
Ejemplo:
La cadena abcdef tiene una longitud de 6.
Subcadena
Dada la cadena v, si existen las cadenas x y y de tal forma que
v = xuy.
entonces se dice que u es una subcadena de v
Esto quiere decir Que u “ocurre dentro de” v.
Un prefijo de v es una subcadena u en donde x es la cadena vacía
en la descomposición de v. Eso quiere decir que v=uy.
Similarmente, u es un sufijo de v si v=xu.
7
Cadenas o Palabras
Cadenas o Palabras
L
E
N
G
U
A
JE
S
Y
A
U
T
Ó
M
A
T
A
Ejemplo:
ab es un prefijo de la cadena abcdef y ef es un sufijo de la misma
cadena.
Representación finita del lenguaje
Un lenguaje consiste de un grupo de cadenas de un alfabeto. Usualmente ciertas restricciones se aplican a las cadenas del lenguaje.
Ejemplo:
El lenguaje Español consiste de todas las cadenas de palabras con sentido, también llamadas oraciones.
No todas las combinaciones de palabras forman oraciones.
De allí que un lenguaje consiste de un subconjunto de el conjunto de todas las posibles cadenas que se pueden formar de el alfabeto.
Lenguajes
Lenguajes
L
E
N
G
U
A
JE
S
Y
A
U
T
Ó
M
A
T
A
Ejemplo:
Sea A = {Juan, Luis, come, fruta, camina, y, queso, rápidamente} Luego A* contiene
Oraciones o cadenas con sentido
o Juan Luis come fruta y queso
o Luis camina y come
o Juan come rápidamente
Oraciones o cadenas sin sentido
o fruta camina y queso
o y come camina
o Juan queso
Ejemplo:
Sea el lenguaje L de cadenas de el alfabeto {a,b} en donde cada
cadena comienza con una a y tiene longitud par.
Las cadenas aa, ab, aaaa, abbb, abab, abbbaaba forman parte
de ese lenguaje. 9
Lenguajes
Lenguajes
L
E
N
G
U
A
JE
S
Y
A
U
T
Ó
M
A
T
A
El lenguaje anterior se puede definir recursivamente como:
i) Base: aa, ab son miembros de L.
ii) Paso recursivo: Si u es miembro de L, entonces
uaa, uab, uba, ubb
son miembros de L.
iii) Cierre (Closure): Una cadena u es miembro de L solo si
puede obtenerse de los elementos base por un número finito de aplicaciones del paso recursivo.
Lenguajes
Lenguajes
L
E
N
G
U
A
JE
S
Y
A
U
T
Ó
M
A
T
A
M
A
Q
U
IN
A
S
D
E
E
S
T
A
D
O
F
IN
IT
O
Ejemplo:
El lenguaje L consiste de cadenas del alfabeto {a,b} en donde cada ocurrencia de b es inmediatamente precedida por una a.
Por ejemplo, , a, abaab están en L y bb, bab, abb no están en L.
i) Base: es miembro de L.
ii) Paso recursivo: Si u es miembro de L, Entonces
ua, uab son miembros de L.
iii) Cierre (Closure): Una cadena u es miembro de L solo si puede
obtenerse de los elementos base por un número finito de aplicaciones del paso recursivo.
Definiciones recursivas como la anterior son una herramienta para definir las cadenas de un lenguaje.
Lenguajes
Lenguajes
M
A
Q
U
IN
A
S
D
E
E
S
T
A
D
O
F
IN
IT
O
Otra técnica para construir lenguajes es usar operaciones de conjuntos (sets) para construir, desde conjuntos mas simples hasta conjuntos complejos de cadenas.
Por ejemplo, la concatenación de los lenguajes X y Y, denotada XY, es el lenguaje
XY = {uv | u es miembro de X y v es miembro de Y}
La concatenación de X consigo mismo n veces se denota como Xn.
X0 se define como {}.
Lenguajes
M
A
Q
U
IN
A
S
D
E
E
S
T
A
D
O
F
IN
IT
O
Ejemplo:
Sea X = {a,b,c} y Y = {abb, ba}. Entonces
XY = {aabb,babb,cabb,aba,bba,cba} X0 = {}
X1 = X = {a,b,c}
X2 = XX = {aa,ab,ac,ba,bb,bc,ca,cb,cc}
X3 = X2X = {aaa,aab,aac,aba,abb,abc,aca,acb,acc,
baa,bab,bac,bba,bbb,bbc,bca,bcb,bcc, caa,cab,cac,cba,cbb,cbc,cca,ccb,ccc}
Lenguajes
Lenguajes
M
A
Q
U
IN
A
S
D
E
E
S
T
A
D
O
F
IN
IT
O
Ejemplo:
El lenguaje L = {a,b}*{bb}{a,b}* consiste de las cadenas del alfabeto
{a,b} que contiene la subcadena bb.
La concatenación de el conjunto {bb} asegura la presencia de
bb en cualquier cadena en L.
Los conjuntos {a,b}* permiten cualquier número de a’s y b’s, en cualquier orden, y que preceden y siguen la ocurrencia de bb.
Las cadenas bb, abba, ababbbabab, bbaaaa, aaaabb son ejemplos de cadenas de el lenguaje L.
Lenguajes
Operaciones con lenguajes
Operaciones con lenguajes
M
A
Q
U
IN
A
S
D
E
E
S
T
A
D
O
F
IN
IT
O
-Booleanas.
Unión
L1L2 ={x ∑ * : x L
1 x L2}
Intersección
L1L2 ={x ∑ * : x L
1 x L2}
Complementación
Lc= {x ∑ * : x L}
Diferencia
L1 - L2 = L1 Lc
2
Diferencia simétrica
M
A
Q
U
IN
A
S
D
E
E
S
T
A
D
O
F
IN
IT
O
Concatenación de lenguajes.
L1L2 = {x y ∑ * : x L
1 y L2}
-No conmutativa L1L2 L2L1
-Asociativa L1(L2 L3)= (L1 L2)L3
-Anulador L1 =
-Distributiva respecto de la unión
L1(L2 L3)= L1L2 L1L3
-No distributiva respecto de la intersección
L (L L ) L L L L
Propiedades.
Operaciones con lenguajes
17
L
E
N
G
U
A
JE
S
Y
A
U
T
Ó
M
A
T
A
S
Los autómatas de estado finito son un tipo especial de Máquinas de Estados Finitos.
Los Autómatas se caracterizan por:
o tener un estado inicial
o recibir una cadena de símbolos
o cambiar de estado por cada elemento leído o poder
permanecer en el mismo estado
o tener un conjunto de Estados Finales o Aceptables que
indican si una cadena o palabra pertenece al lenguaje al final de una lectura.
L
E
N
G
U
A
JE
S
Y
A
U
T
Ó
M
A
T
A
Definición:
Un autómata de estado finito, A = (I, O, S, f, g, σ)
es una máquina de estado finito en la que el conjunto de símbolos de salida es
O = {0, 1}
y donde el estado actual determina la última salida.
Aquellos estados para los cuales la última salida es 1, reciben el nombre de estados de aceptación.
Los Autómatas se clasifican en 2 tipos:
Autómata Finito Determinista.
Autómata Finito no Determinista.
19
Definición
Definición
L
E
N
G
U
A
JE
S
Y
A
U
T
Ó
M
A
T
A
Ejemplo:
Dibuje el diagrama de transición de la máquina de estado finito definida por la tabla
S f g
a b a b
σ0 σ1 σ0 1 0 σ1 σ2 σ0 1 0 σ2 σ2 σ0 1 0
σ0 σ1 σ2
b/0
b/0
b/0 a/1
a/1
a/1
A
U
T
O
M
A
T
A
S
Determine si la máquina graficada es o no un autómata de estado finito
σ0 σ1 σ2
b/0
b/0
b/0 a/1
a/1
a/1
Se debe cumplir:
el conjunto de símbolos de salida debe ser {0, 1}
para cada estado σ todos los arcos que llegan a σ tienen la
misma etiqueta de salida
los estados σ que tienen como única etiqueta de salida el 1, son
los estados de aceptación
Luego, la máquina propuesta es un autómata de estado finito. 21
Ejemplo
Ejemplo
L
E
N
G
U
A
JE
S
Y
A
U
T
Ó
M
A
T
A
Diagrama de Transición de un Autómata
• En un diagrama de transición existe un vértice por cada estado
de S.
• Los estados finales están encerrados en un círculo doble.
• El estado inicial es apuntado por una flecha que no proviene de
ningún otro estado.
• Para cada estado σi y un símbolo de entrada ak , hay
exactamente una y solo una flecha que inicia en σi y termina en
σv, la flecha se etiqueta como ak.
En el ejemplo anterior:
σ0 σ1 σ2
b
b a
a
a
Autómatas de Estado Finito
Autómatas de Estado Finito
L
E
N
G
U
A
JE
S
Y
A
U
T
Ó
M
A
T
A
Existe una definición alternativa para un autómata de estado finito
Definición:
Una autómata de estado es una estructura descrita por la quíntupla
A = (I, S, f, A, σ) donde:
I, alfabeto de entrada, es un conjunto finito de símbolos.
S, conjunto de estados, es un conjunto finito
f: S x I S Función de estado siguiente
A: subconjunto de S, integrado por los estados de
aceptación
σ: estado inicial, pertenece a S 23
Otra Definición
Otra Definición
L
E
N
G
U
A
JE
S
Y
A
U
T
Ó
M
A
T
A
Para describir por completo una función de transición o función de estado siguiente, se utiliza una Tabla de Transición.
Las columnas se etiquetan con los símbolos de entrada, la filas son etiquetadas con los estados y en las intersecciones se colocan los nuevos estados.
Ejemplo:
Dibujar el diagrama de transición del autómata definido por A = (I, S, f, A, σ)
Donde: I = {a,b} S = {σ0, σ1, σ2} A ={σ2} σ = {σ0} y f está definida
por
S f
a b
σ0 σ0 σ1 σ σ σ
Tabla de Transición
Tabla de Transición
L
E
N
G
U
A
JE
S
Y
A
U
T
Ó
M
A
T
A
El diagrama pedido es:
σ0 σ1 σ2
a
a
a b
b
b
25
Tabla de Transición
Tabla de Transición
L
E
N
G
U
A
JE
S
Y
A
U
T
Ó
M
A
T
A
Sea A = (I, S, f, A, σ) un autómata de estado finito Dada una cadena de entrada sobre I
k
k I
x x
x x
x 1, 2, 3,..,
Si existe una secuencia de estados:
n
1,
2,
3,..,
tales que:
σ0 = σ
f(σi-1, xi) = σi
el estado final σn es un estado de aceptación
Entonces, se dice que la cadena es aceptada por A
x
Cadenas Aceptadas por un Autómata
Cadenas Aceptadas por un Autómata
L
E
N
G
U
A
JE
S
Y
A
U
T
Ó
M
A
T
A
Se denota por Ac(A) al conjunto de cadenas aceptadas por el autómata A y se dice que A acepta Ac(A)
Ejemplo:
Diseñar un autómata que acepte exactamente aquellas cadenas sobre {a, b} que no tengan letras “a”
σ0 σ1
b
a b a
donde :
σ0: no se encontró “a”
σ1 : se encontró “a”
27
Cadenas Aceptadas por un Autómata
Cadenas Aceptadas por un Autómata
L
E
N
G
U
A
JE
S
Y
A
U
T
Ó
M
A
T
A
donde :
P: se encontró un número par de letras “a”
I: se encontró un número impar de letras “a”
Ejemplo:
Diseñar un autómata que acepte exactamente aquellas cadenas sobre {a, b} que contengan un número impar de letras “a”
P I
b
a a
b
Observación:
Un autómata de estado finito es la representación de un algoritmo que sirve para decidir si una cadena es aceptada o no
Cadenas Aceptadas por un Autómata
Cadenas Aceptadas por un Autómata
L
E
N
G
U
A
JE
S
Y
A
U
T
Ó
M
A
T
A
Ejemplo:
Construir un autómata de estado finito que no acepte cadenas que contengan la subcadena “aa” y donde I={a,b}.
q0 q1 q2
a,b
a b
a
b
29
Cadenas Aceptadas por un Autómata
Cadenas Aceptadas por un Autómata
L
E
N
G
U
A
JE
S
Y
A
U
T
Ó
M
A
T
A
Ejemplo:
Diseñar un AFD que reconozca cadenas que contienen la
subcadena 001
Por ejemplo debe reconocer cadenas como 0010, 1001,
11111110011111, pero no como 11, 0000, 1100, 10101.
q q0 q00 q001
1
1
0 0
0 0
1
1
Cadenas Aceptadas por un Autómata
Cadenas Aceptadas por un Autómata
L
E
N
G
U
A
JE
S
Y
A
U
T
Ó
M
A
T
A
Autómatas y Lenguajes
Autómatas y Lenguajes
Lenguaje aceptado por autómata
Se define el lenguaje aceptado por un Autómata finito determinista como:
L(M) = {w * | w es aceptada por M}
Por tanto, L(M) es el conjunto de las cadenas que hacen que M pase del estado inicial a un estado de aceptación.
31
L
E
N
G
U
A
JE
S
Y
A
U
T
Ó
M
A
T
A
Ejemplo:
Sea el AFD, A = (I, S, f, A, σ) donde
S = {q0, q1, q2, q3}
I = {a, b} σ = q0
A = {q0, q1, q2}
f definida por la tabla
a b
q0 q0 q1 q1 q0 q2 q2 q0 q3 q3 q3 q3
Dibuje su diagrama de transición y determine que lenguaje acepta
L
E
N
G
U
A
JE
S
Y
A
U
T
Ó
M
A
T
A
acepta el lenguaje
L(M) = {w {a, b}* | w no contiene tres b consecutivas}
σ0 σ1 σ2 σ3
a
a
b b
a
b
b a
33
L
E
N
G
U
A
JE
S
Y
A
U
T
Ó
M
A
T
A
Se puede aplicar recursivamente una serie de caracteres de una cadena dada al AFD.
Por ejemplo, la aplicación de la cadena bbab en el caso anterior dará f( f( f( f(σ 0,b),b),a),b) = σ1.
Esto puede abreviarse como f(q0,bbab).
Se dice que dos AFD M1 y M2 son equivalentes si L(M1) = L(M2).
σ0 σ1 σ2 σ3
a
a
b b
a
b
b a
Autómatas y Lenguajes
Autómatas y Lenguajes
L
E
N
G
U
A
JE
S
Y
A
U
T
Ó
M
A
T
A
Ejemplos:
El siguiente autómata acepta cadenas de la forma akb.
Mientras que el siguiente autómata acepta el lenguaje A = {(ab)i | i 1}.
35
Autómatas y Lenguajes
Autómatas y Lenguajes
L
E
N
G
U
A
JE
S
Y
A
U
T
Ó
M
A
T
A
Ejercicio:
Compruebe que el autómata de la figura acepta cadenas de la forma (ab)*.
Autómatas y Lenguajes
Autómatas y Lenguajes
L
E
N
G
U
A
JE
S
Y
A
U
T
Ó
M
A
T
A
Ejercicio:
Construya un autómata que genere el lenguaje a*b ab*
37