Autómatas de Estados Finitos Prof. Hilda

Anuncio
Asignatura: Teoría de la Computación
Unidad 1: Lenguajes Regulares
Tema 1: Autómatas de Estados Finitos
Autómatas de Estados Finitos
Definición de Autómatas de estados finitos:
Tipo
Lenguaje
Máquina
Gramática G = (V,T,P,S)
Gramática Regular
3
Lenguaje Regular
Autómata finito
A è aB, A è a
(A,B en V y a en T)
Autómata de Estados Finitos (AF): Describen, reconocen y definen a los Lenguajes Regulares.
Modelo Matemático de un sistema con estados y salidas discretas.
Tipos de Autómatas Finitos:
- Autómata Finito Determinista (AFD). No pueden estar en más de un estado
simultáneamente.
-
Autómata Finito No Determinista (AFN). Puede estar en varios estados al mismo tiempo.
Definición de Autómatas de estados Finitos Deterministas (AFD):
Un AFD es una quíntupla A = (Q , Σ, δ, q0 , F)
Siendo:
Q = conjunto finito de estados.
Σ = conjunto finito de símbolos del alfabeto.
q0 = es el estado inicial (denotado con flecha ) a inicio
F = conjunto de estados finales (o estados de aceptación). F
δ = La función de transición entre estados
δ: Q x Σ  Q
Por ejemplo: si p y q estan en Q y a en Σ,
Se define la transición δ(q,a) = p.
En la figura se observa como hay una transición de q a p
dado a. Es decir, existe un arco etiqueta a entre q u p.
Q
Los estados de aceptación se denotan gráficamente con un doble círculo y en la
tabla de transición con asterisco al lado del estado. Por ejemplo si r esta en F debe
ser denotado con doble circulo como se observa en la figura.
Nota: En los AFD debe cumplirse que: Para toda a que esta en Σ existe exactamente una
transición de salida de cada estado.
Prof. Hilda Contreras
Teoría de la Computación - Pregrado
1
Notación para la Función de Transición: Se tiene tres formas para presentar la función de
transición cualquiera de ellas es suficiente para completar el diseño del AFD. Estas son:
a) Diagrama de Transición
b) Función de transición
c) Tabla de Transiciones: Representación Tabular
Ejemplo: Dado el lenguaje L = { x | x en {0,1} y x comienza con 0 }, es decir todas las cadenas
binarias que comienzan con 0. El AFD que lo reconoce es el siguiente:
M = (Q ,Σ, δ , q0 , F)
Σ= {0,1}, F = {q1}, Q={q0,q1,q2}
δ
0
1
--> q0
q1
q2
*q1
q1
q1
q2
q2
q2
Función de transición δ
δ(q0,0) = q1
δ(q0,1) = q2
δ(q1,0) = q1
δ(q1,1) = q1
δ(q2,0) = q2
δ(q2,1) = q2
Las tres representaciones de la función de transición son equivalentes, y cada suficiente para
dar el AF. Puede escoger una representación pero comprendiendo la relación entre ellas.
Prof. Hilda Contreras
Teoría de la Computación - Pregrado
2
Ejecución de un Autómatas de estados finitos determinista AFD:
Para la ejecución formal de un AFD se utiliza la definición de la función de transición extendida
sobre cadenas δˆ
δˆ = Q x Σ*  Q
1) δˆ(q,ε) = q
2) Para todo w en Σ* y a en Σ δˆ(q,wa) = δ (δˆ(q,w),a)
Por ejemplo: Dado el AFD anterior que reconoce el lenguaje L = { x | x en {0,1} y x comienza
con 0 } , pruebe si las cadenas w1 = 010 y w2 = 101 están en el lenguaje L
δˆ(q0,010) = δ (δˆ(q0,01),0) = δ (δ (δˆ(q0,0),1),0) = δ (δ (δ (δˆ(q0,ε),0),1),0)
 δ (δ (δ (q0,0),1),0)  δ (δ (q1,1),0)  δ (q1,0) = q1  Acepto al terminar de procesar la
cadena y quedar en un estado de aceptación (esta en F)
δˆ(q0,101) = δ (δˆ(q0,10),1) = δ (δ (δˆ(q0,1),0),1) = δ (δ (δ (δˆ(q0,ε),1),0),1)
 δ (δ (δ (q0,1),0),1)  δ (δ (q2,1),0)  δ (q2,0) = q2  No acepto al terminar de procesar la
cadena y quedar en un estado que no es de aceptación.
Lenguaje aceptado por un AFD.
Dado M = (Q ,Σ, δ , q0 , F) un AFD, el lenguaje L aceptado por M está definido por:
L(M)= { w | w en Σ* y δˆ(q0,w) pertenece a F }
Nota: el lenguaje de M, es un conjunto de cadenas w que llevan al autómata M desde q0 a un
estado de aceptación. Si L es un L(M) para algún AFD M, entonces decimos que L es un
“Lenguaje Regular”.
Nota importante: Para poder verificar si la cadena w esta (es aceptada) o no (no es
aceptada) en L se debe terminar de procesarse la cadena w.
Ejemplo: Dado el lenguaje L = { w | w tiene un número par de ceros y unos }
L = { 00, 11, 1100, 0011, 0101, 1010, 001010, … }
M = (Q, Σ, δ, q0, F)
Σ = {0,1} , Q = {q0,q1,q2,q3}
F = { q3 }
Para la cadena 0101 probar el AFD
δˆ(q0,0101) = δ (δˆ(q0,010),1) = δ (δ
(δˆ(q0,01),0),1) = δ (δ (δ (δˆ(q0,0),1),0),1) =
δ (δ (δ (δ (δˆ(q0,ε),0),1),0),1)
 δ (δ (δ (δ (q0,0),1),0),1)  δ (δ (δ (δ (q1,1),0),1)  δ (δ (q3,0),1)  δ (q2,1) = q0,  Acepto al
terminar de procesar la cadena y quedar en un estado de aceptación q0 (q0 esta en F es
verdadero)
Ejercicios AFD:
Para Σ = {0,1} construya un AFD que acepte los siguientes lenguajes:
Prof. Hilda Contreras
Teoría de la Computación - Pregrado
3
a) El conjunto de cadenas que tiene 011 como subcadena.
b) El conjunto de todas las cadenas cuyo tercer elemento desde el extremo izquierdo sea
un 1.
c) El conjunto de cadenas en las que el número de ceros es divisible por 3.
d) El conjunto de cadenas que terminan con 01.
e) El conjunto vacío.
f) El conjunto de la cadena vacía.
g) Elabore un algoritmo para implementar el funcionamiento de un AFD en un
computador (debe reflejar el estado, la función de transición y simular el
funcionamiento y definición del AFD). Nota: El compilador de un lenguaje de
programación implementa AFD.
Autómata Finito No Determinista AFND.
Son autómatas de estados finitos que tienen la capacidad de estar en más de un estado
simultáneamente. Ventaja: son más compactos, flexibles y fáciles de diseñar que los AFD
permiten cero, una o más transiciones de salida de un estado para el mismo símbolo. No hay
que considerar todos los casos en cada estado.
Q
La diferencia con AFD es la función δ: Q x Σ  2
En la figura δ(q,a) = {p, r}
A=(Q ,Σ, δ, q0, F)
δ: Q x Σ  Q*
δ(q,a) = R , R Q , δ(q,a) = {p, r}
ó también δ: Q x Σ  Q*
Función de Transición Extendida:
δˆ = Q x Σ*  Q*
1) δˆ(q,ε) = {q}
2) δˆ(q,xa) = { r | para algún p en δˆ(q,x), δˆ(p,a) = r }
Sea w de la forma w = xa donde a es el símbolo final (sufijo de longitud 1) de w y x el resto de
w.
Entonces:
.
.
.
Extensión para Q* x Σ
Prof. Hilda Contreras
Teoría de la Computación - Pregrado
4
1) δ(P,w) =
Lenguaje aceptado por un AFN.
Dado M = (Q, Σ, δ, q0 , F) un AFN, el lenguaje L aceptado por M está definido por:
L(M)= { w | w en Σ* y δˆ(q0,w)
F≠}
Es el conjunto de cadenas pertenecientes a Σ* tal que ejecutar el AFN desde el estado inicial
q0 con la cadena w, la función de transición extendida δˆ(q0,w) contiene al menos un estado
de aceptación (es diferente del vacío la intersección con F).
Ejemplo:
Dado el lenguaje L= { x | x en {0,1} y termina en 01}, hallar el AFN que lo reconozca
L={ 01, 0001, 101, 1001, 10101, … }
A = (Q, Σ, δ, q0, F)
Q = { q0, q1, q2 }
Σ = { 0,1 }
F = {q2}
1
0
1
0
1
Para las cadenas w1 = 01 y w2 = 10101 se muestra la ejecución formal a partir de la función de
transición extendida:
δˆ(q0,01) = δ (δˆ(q0,0),1) = δ (δ (δˆ(q0,ε), 0),1)  δ (δ(q0, 0),1)  δ ({q0, q1},1) = δ (q0,1) U δ(q1,1) =
{q0} U {q2} = {q0,q2} ,  Acepto porque {q0,q2} {q2} ≠ , es decir al menos uno de los
estados del autómata, luego de procesar la cadena, es de aceptación
δˆ(q0,10101) = δ (δˆ(q0,1010),1) = δ(δ(δ(δ(δ(δˆ(q0,ε),1),0),1),0),1) 
δ(δ(δ(δ(δ(q0,1),0),1),0),1)  δ(δ(δ(δ({q0},0),1),0),1)  δ(δ(δ({q0,q1},1),0),1)
δ({q0,q1},1) = δ (q0,1) U δ(q1,1) = {q0} U {q2} = {q0,q2}
 δ(δ({q0,q2},0),1)
δ({q0,q2},0) = δ (q0,0) U δ(q2,0) = {q0,q1} U  = {q0,q1}
 δ({q0,q1},1) = δ (q0,1) U δ(q1,1) = {q0} U {q2} = {q0,q2}, acepto porque {q0,q2}
{q2} ≠ , es
decir al menos uno de los estados es de aceptación de F
Ejercicios AFN:
Prof. Hilda Contreras
Teoría de la Computación - Pregrado
5
Construya un AFN que acepte los siguientes lenguajes:
a) Conjunto de cadenas basadas en Σ={a,b,c} cuyo último símbolo no haya aparecido
antes en la misma entrada.
b) Conjunto de 0 y 1 que contenga 2 ceros separados por un número de posiciones
múltiplo de 3. Nótese que 0 es un múltiplo de 3 valido.
Equivalencia entre AFD y AFN:
-
Todo Lenguaje Regular puede describirse con ambos AFN y AFD.
-
Generalmente un AFN es más fácil de capturar, y un AFD es mas fácil de implementar.
-
Tienen casi el mismo número de estados. El AFD más grande puede tener 2n estados y el
AFN mas pequeño solo tiene n estados.
Teorema: Si L es aceptado por un AFN entonces existe un AFD que acepta L (es decir, ambos
aceptan la misma clase de lenguaje).
Algoritmo para la Construcción de Subconjuntos:
Este algoritmo permite a partir de un AFN obtener un AFD equivalente que reconoce el mismo
lenguaje. Su nombre se debe a que se intenta construir todos los subconjuntos del conjunto de
estados del AFN.
AFN
N = (QN ,Σ, δN, q0 , FN)
AFD
D = (QD ,Σ, δD, {q0} , FD)
Tal que L(N) = L(D) (el lenguaje reconocido por el autómata N sea el mismo que el lenguaje
reconocido por el autómata D, por tanto sean equivalentes)
Algoritmo:
- Σ son iguales de N y D.
*
-
QD es el conjunto de los subconjuntos de QN, (QD ) conjunto potencia. No todos los
estados de QD son accesibles desde q0, esos son eliminados.
-
FD es el conjunto de subconjuntos S de QN (S
QN) tal que S
FN ≠ . Es decir
FD contiene todos los conjuntos de estados de N que incluyen al menos un estado de
aceptación de N.
-
Para todo S
QN y a en Σ , entonces δD(S,a) =
Ejemplo: Dado N = (QN ,Σ, δN, q0 , FN) un AFN, Σ={0,1} y QN = {q0,q1,q2}, FN = {q2}
δN
q0
q1
q3
Prof. Hilda Contreras
Teoría de la Computación - Pregrado
0
{q0,q1}


1
{q0}
{q1}

6
Obtener D un AFD tal que L(N) = L(D) a través del algoritmo de construcción de subconjuntos
D = (QD ,Σ, δD, {q0} , FD)
QD = ( , {q0}, {q1}, {q2}, {q0,q1}, {q0,q2}, {q1,q2}, {q0,q1,q2}}
FD = ({q2}, {q0,q2}, {q1,q2}, {q0,q1,q2}}
δD({q0},0) = δN(q0,0) = {q0,q1}
δD({q0},1) = δN(q0,1) = {q0}
δD({q0,q1},0) = δN(q0,0) U δN(q1,0) =
δD({q0,q1},1) = δN(q0,1) U δN(q1,1) =
δD({q0,q1},1) = δN(q0,1) U δN(q1,1) =
δD({q0,q2},0) = δN(q0,0) U δN(q2,0) =
δD({q0,q2},1) = δN(q0,1) U δN(q2,1) =
{q0,q1} U  = {q0,q1}
{q0} U {q2} = {q0,q2}
{q0} U {q2} = {q0,q2}
{q0,q1} U  = {q0,q1}
{q0} U  = {q0}
Para w= 10101 en Σ*
δDˆ({q0},10101) = δD (δDˆ({q0},1010),1) = δD (δD (δD (δD (δD (δDˆ({q0},ε),1),0),1),0),1) 
δD (δD (δD (δD (δD ({q0},1),0),1),0),1) = δD (δD (δD (δD (δD ({q0},1),0),1),0),1) = δD (δD (δD
(δD({q0},0),1),0),1) = δD (δD (δD ({q0,q1},1),0),1) = δD (δD ({q0,q2},0),1) = δD ({q0,q1},1) = {q0,q2}
Acepto porque {q0,q2} esta en FD
La demostración de este algoritmo esta en el libro [1]: Se demuestra por inducción sobre el
tamaño de w, donde el caso base δNˆ(q0, ε) = δDˆ({q0}, ε) y para el caso inductivo δNˆ(q0, w) =
δDˆ({q0}, w)
Automatas Finitos con Transiciones espontáneas (AFN-ε)
Es un AFN que permite transiciones para ε. Antes los AF no se movían con la cadena vacía, es
decir δNˆ(q, ε) = {q} y δDˆ(q, ε) = q, los AF se quedaban en el mismo estado. Ahora con AFN-ε se
tienen transición espontáneas sin recibir o procesar ningún símbolo de la entrada. Se aplica si ε
no pertenece al conjunto de símbolos Σ.
Utilidad:
- Facilidad de Programación.
-
Relación directa con las expresiones regulares (equivalencia demostrada formalmente)
Un AFN-ε es una quíntupla: A=(Q ,Σ, δ, q0, F)
Siendo:
Q = conjunto finito de estados.
Σ = conjunto finito de símbolos del alfabeto.
q0 = es el estado inicial (denotado con flecha ) a inicio
F = conjunto de estados finales (o estados de aceptación). F
δ = La función de transición entre estados δ: Q x Σ U {ε}  Q*
Prof. Hilda Contreras
Q
Teoría de la Computación - Pregrado
7
n m p
Ejemplo: Dado L = { 0 1 2 | n,m,p ≥ 0 }, el lenguaje de todas las cadenas de 0, 1 o más ceros
n
m
p
(0 ) seguidas de 0, 1 o más unos (1 ), y seguidas de 0, 1 o más dos (2 ).
Los siguientes autómatas reconocen a L:
AFN :
AFN-ε : Probando la cadena 002
1 0
Nota: en la tabla de transición puede o no
asumirse la transición espontánea de ε. Es decir,
δ(q,ε) = {q}. Por ejemplo en el estado q2, puede
ser  pero sin embargo también es  U {q2}
Ejecución de un AFN-ε:
Dada una cadena y un AFN-ε, para reconocer dicha cadena se debe aplicar la función
Extendida para cadena δ^: Q x Σ*  Q*
Donde δ^(q,w) es el conjunto de todos los estados pi tal que se puede ir de q a cada pi por un
camino etiquetado w que puede incluir arcos etiquetados ε. Para calcular este camino es
necesario definir el término ε-clausura de un estado.
ε-clausura (q) = es el conjunto de todos los estados a los cuales se puede llegar a partir de q
siguiendo un camino de arcos etiquetados con ε únicamente.
Definición recursiva de ε-clausura (q):
Base: ε-clausura(q) = q , es decir por definición δ(q,ε) = q, podemos imaginarnos un
bucle de un estado a si mismo etiquetado ε
Paso inductivo:
Si δ es la función de transición de AFN-ε y p está en la ε-clausura(q), es decir δ(q,ε)=p
entonces la ε-clausura(q) también contiene los estados δ(p,ε). Ver siguiente figura
Prof. Hilda Contreras
Teoría de la Computación - Pregrado
8
^
Definir δ :
1) δ^(q0,ε) = ε-clausura(q0)
2) Para todo w en Σ* y a en Σ δ^(q,wa) = ε-clausura(P), Donde:
ε-clausura(P) = { p | para algún r en δ^(q,w), p en δ(r,a) } Nota: aplicar ε-clausura a cada p.
R es subconjunto de Q:
3) δ(R,a) =
4)
^
Entonces δ (q,w) = δ^(q,x) = {r1,r2,...,rk} con w = xa .
Prof. Hilda Contreras
Teoría de la Computación - Pregrado
9
y
Ejemplo: Dada la cadena w= 02 determinar si pertenece o no al lenguaje reconocido por el
siguiente AFN-ε
ε-clausura(q0) = { q0,q1,q2}
ε-clausura(q1) = {q1,q2}
ε-clausura(q2) = {q2}
δ^(q0,02) = ε-clausura(δ(δ^(q0,0),2)) = ε-clausura(δ(ε-clausura(δ(δ^(q0,ε),0)),2))
= ε-clausura(δ(ε-clausura(δ({q0,q1,q2},0)),2))
 ya δ^(q0,ε) = ε-clausura(q0) = {q0,q1,q2}
= ε-clausura(δ(ε-clausura({q0}),2))
= ε-clausura(δ({q0,q1,q2},2))
= ε-clausura({q2})
 ya δ({q0,q1,q2},0) = {q0 } U  U  = {q0 }
 ya ε-clausura({q0}) = ε-clausura(q0 ) = {q0,q1,q2}
 ya δ({q0,q1,q2},2) =  U  U {q2} = {q2 }
= {q2 } Acepto la cadena w “02” ya que δ^(q0,02)
F≠
Lenguaje Aceptado por un AFN-ε :
Dado un AFN- ε E=(Q ,Σ, δ, q0 , F) el L(E) se define como:
L(E)= { w | δ^(q0,w)
F≠}
Equivalencia AFN- ε con AFD (construcción de subconjuntos de ε)
Teorema: Si L es aceptado por un AFN con ε transiciones entonces L es aceptado por un AFN
sin ε-transiciones.
(Equivalencia  Eliminación de ε-transiciones)
Teorema: Un lenguaje L es aceptado por un AFN- si y solo si es aceptado por un AFD.
Algoritmo para pasar de un AFD a un AFN-ε
E es AFN- y A es AFD  L(E) = L(A) es decir δE^(q0E,w) = δD^(q0D,w) para todo w en L
E (AFN-ε) = (QE,Σ,δE, q0E,FE)
D (AFD) = (QD,Σ,δD, q0D,FD)
•
•
•
•
q0D = ε-clausura(q0E)
QD = QE *, es decir el conjunto de
subconjuntos de QE
FD = { s | s en QD y S
FE ≠  }
δD (S,a) para todo a en Σ y S en QD =
Prof. Hilda Contreras
Teoría de la Computación - Pregrado
10
=
{
}=
Ejemplo: Dado el AFN-ε E halle un AFD equivalente.
E = (Q, Σ, δ, q0, F)
Q = {q0,q1,q2}
Σ = {0,1,2}
F = {q2}
D =(
,
,
,
(
(
)=
(
)=
)
)=
Prof. Hilda Contreras
Teoría de la Computación - Pregrado
11
AFD: Se ve cada estado como un Conjunto de etiqueta.
AFN: Se interpreta el contenido de la etiqueta de cada estado.
Hay dos formas de interpretar la construcción de subconjuntos- , una para crear un AFD y
otra AFN. La idea es llegar a un AF más fácil de implementar los cuales son AFD.
Ejercicios:
1. Obtenga un diagrama de transición de un AFN que acepte las cadenas de 0’s y 1’s que
tengan 2 ceros separados por una cadena cuya longitud es 3i para algún i 0.Usando
el algoritmo visto en clase, convierta este autómata en un AFD.
2. Obtenga un autómata finito (de cualquier tipo) para reconocer los siguientes lenguajes:
•
•
•
•
•
•
•
•
cadenas acabadas en 00
cadenas con dos unos consecutivos
cadenas que no contengan dos unos consecutivos
cadenas con dos ceros consecutivos o dos unos consecutivos
cadenas con dos ceros consecutivos y dos unos consecutivos
cadenas acabadas en 00 o 11
cadenas con un 1 en la antepenúltima posición
cadenas de longitud 4
1. El conjunto de enteros y números en punto flotante. Usando el Σ = { +, 0, 1, 2, 3, 4, 5, 6, 7,
8, 9, E, . }
2. Construir un AFD equivalente a los siguientes autómatas :
a) M1 = ({p,q,r,s}, {0,1}, δ, p, {s}) donde δ está dada por :
δ
p
q
r
*s
0
{p, q}
{r}
{s}
{s}
1
{p}
{r}
{}
{s}
b) M2 = ({p,q,r,s},{0,1}, δ, p,{q,s}) donde δ está dada por:
δ
p
*q
r
*s
0
{q, s}
{r}
{s}
{}
1
{q}
{q,r}
{p}
{p}
1. Dado el siguiente AFN-ε E, aplicando el procedimiento de construcción de subconjunto,
convertir a un AFD
E = (Q, Σ , δ, p, F)
Q = { p, q, r }
Σ = { a, b, c }
F={r}
δ
p
ε
Ф
a
{p}
Prof. Hilda Contreras
b
{q}
c
{r}
Teoría de la Computación - Pregrado
12
q
* r
{p}
{q}
{q}
{r}
{r}
Ф
Ф
{p}
2. Obtener a partir de los siguientes AFND-ε, un AFD equivalente.
a) M1 = ( {q0,q1,q2,q3,q4}, {a,b}, δ, q0, { q4 } ) donde δ está dada por:
δ
 q0
q1
q2
q3
q4
a
{q1,q2}
{}
{q4}
{}
{}
b
{q1,q3}
{}
{}
{q4}
{}
ε
{}
{q3}
{}
{}
{}
b) M2 = ( {q0,q1,q2,q3} , {a,b,c} , δ , q0 , {q3} ) donde δ está dada por :
δ
 q0
q1
q2
q3
a
{q0,q1}
{}
{}
{}
b
{}
{q1,q3}
{q2}
{}
c
{}
{}
{}
{q3}
ε
{q2}
{}
{q3}
{}
Preguntas
•
Determine las diferencias entre un AFD y un AFN.
•
¿Cuándo usar cada uno de estos autómatas?
•
¿Puede obtener un AFND algorítmicamente a partir de un AFD?, ¿por qué?
•
Piense en aplicaciones de la vida real que pueden ser vistos como AF.
Referencias
[1] John E. Hopcroft, Rajeev Motwani, Jeffrey D. Ullman. (2002), “Introducción a la Teoría de
Autómatas y Lenguajes Formales”. PrenticeHall.
Prof. Hilda Contreras
Teoría de la Computación - Pregrado
13
Descargar