Upload
dwonga
View
2.180
Download
0
Embed Size (px)
DESCRIPTION
Diapositivas con ejercicio sobre máquinas de estado finito y automátas finitos deterministas con proceso de resolución.
Citation preview
Autómatas finitos no deterministas y deterministas
Semana 3Teoría de la Computación
Teoría de la computación - UPNORTE
David Wong Aitken
Ejercicio
Dado Σ={0, 1}, dibuje el AF que reconozca todas las palabras tal que tengan cantidad par de ceros o ningún cero y cantidad par de unos o ningún uno. Los ceros y los unos no son necesariamente contiguos.
Teoría de la computación - UPNORTE
David Wong Aitken
Tipos de autómatas finitos
Son dos: Autómatas Finitos No-Deterministas
(AFND) Autómatas Finitos Deterministas
(AFD)
Teoría de la computación - UPNORTE
David Wong Aitken
Autómata finito no determinista
aq1
a
q0
q2
b ¿la palabra “ba” se reconoce o no se reconoce?
q3
>
Podemos solucionar este dilema si tomamos como acuerdo que el autómata seguirá todo posible camino hasta llegar a un estado de aceptación, luego del cual lo aceptará. Esto se llama NO DETERMINISMO.
Teoría de la computación - UPNORTE
David Wong Aitken
Condición de no-determinismo
aq1
a
q0
q2
b
q3
pero ¿cuándo se produce el no determinismo en un
autómata?>
Teoría de la computación - UPNORTE
David Wong Aitken
Condición de no-determinismo
Se produce cuando para un estado cualquiera del autómata se tiene dos o mas estados siguientes para un mismo carácter de entrada.
En este caso, para q1 y la letra a tenemos que podemos ir a q2 o q3.
aq1
a
q0
q2
b
q3
>
pero ¿cuándo se produce el no determinismo en un
autómata?
Teoría de la computación - UPNORTE
David Wong Aitken
Autómata finito determinista y no determinista
Un autómata será NO DETERMINISTA si uno o mas de sus estados cumple con la condición de no-determinismo.
De lo contrario se le llama Autómata Finito Determinista (AFD).
En otras palabras, será AFD si para todo será AFD si para todo estado actual y un carácter de entrada estado actual y un carácter de entrada cualquiera, cualquiera, no hayno hay dos o mas estados dos o mas estados siguientes posible.siguientes posible.
Teoría de la computación - UPNORTE
David Wong Aitken
Notacion de los automatas
Diagrama de estados Expresión regular Formalización y tabla de estados
Teoría de la computación - UPNORTE
David Wong Aitken
Diagrama de estados
Son los gráficos que hemos estado haciendo hasta ahora para representar a los autómatas.
Tiene un estado inicial, estados intermedios y estados finales y ciertos arcos (o aristas) que los unen.
Matemáticamente, es un grafo orientado y etiquetado.
aq0 q2q3>
E. Inicial E. Intermedio
E. FinalArista o
arco etiquetado
Teoría de la computación - UPNORTE
David Wong Aitken
Expresión Regular
Es una notación compacta para el autómata. Implica colocar como una línea qué es lo que el autómata reconoce. Ejemplo:
(010)*|(101)* El conjunto de todas las palabras formadas por 010 repetido cero o n veces o 101 repetido cero o n veces.
(aa)+bb(a|b)*
El conjunto de palabras que inician con pares de a’s, luego un par de b’s y luego puede terminar con n (o ninguna) veces a’s o b’s
Teoría de la computación - UPNORTE
David Wong Aitken
Expresión regular
() Agrupa elementos a* cero o más veces a a+ una o más veces a ab a luego sigue b a|b a ó b
Teoría de la computación - UPNORTE
David Wong Aitken
Ejercicio
Pasar a expresión regular el sgte AF:
q3
q1
q2
q0
b
a
a
>b
b
a
Teoría de la computación - UPNORTE
David Wong Aitken
Ejercicio
Hacer la ER del siguiente autómata
Teoría de la computación - UPNORTE
David Wong Aitken
Formalización de un autómata finito determinista
Formalmente, un AF puede ser descrito como una 5-tupla:
Donde:
Σ es un alfabeto Q un conjunto de estados δ es la función de transición q0 es el estado inicial, q0 ∈ Q.
F es un conjunto de estados de aceptación o finales, (F ⊆ Q).
L = (Σ, Q, δ, q0, F)
Teoría de la computación - UPNORTE
David Wong Aitken
Función transición
La función de transición es el par ordenado formado entre un estado y una letra del alfabeto, el cual lleva a otro estado (en AFD) o a un conjunto de otros estados (en AFND).
Se define con una función definida por partes o con una tabla de transición de estados.
δ(qn,a) = qn+1
estadoactual
Letra delalfabeto
Estado siguiente
Teoría de la computación - UPNORTE
David Wong Aitken
Formalización
Formalizar el siguiente autómata
L = (Σ, Q, δ, q0, F)
Donde:
Σ = {0, 1}
Q = {q0, q1}
F = {q0}
Función de transición:
δ(q,a)
q0, si q=q0 y a=1
q1, si q=q0 y a=0
q1, si q=q1 y a=1
q0, si q=q1 y a=0
(definida por partes)
Teoría de la computación - UPNORTE
David Wong Aitken
Ejercicio
Formalizar el siguiente autómata
L = (Σ, Q, δ, q0, F) q3
q1
q2
q0
b
a
a
>b
a
b
Teoría de la computación - UPNORTE
David Wong Aitken
Función transición por tabla de transición
Una forma mucho mas conveniente para definir la función transición para autómatas grandes es construyendo una tabla de transición.
Consiste en hacer una tabla en donde las filas serán los estados y las columnas serán todas las letras del alfabeto Σ. Se coloca el estado (si es AFD) o el conjunto de los estados siguientes (si es AFND) en la intersección del estado (que será el estado actual) y la letra.
q0
q1
…
a b …δq1
…
Teoría de la computación - UPNORTE
David Wong Aitken
Ejercicio
Usando una tabla, construir la función transición δ para: q3
q1
q2
q0
b
a
a
>b
a
b
Teoría de la computación - UPNORTE
David Wong Aitken
Diferencia formal entre AFD y AFND
La mayor diferencia está en el rango de la función transición, mientras que para el AFD es:
Para un AFND es:
δ: QxΣ Q
δ: QxΣ P(Q)
Teoría de la computación - UPNORTE
David Wong Aitken
Ejercicio
Formalizar el siguiente autómata, usando tabla de transición:
q1
q3
1
q0
q2
>
0
0
0
1
Teoría de la computación - UPNORTE
David Wong Aitken
Proceso computacional
Es el proceso que se lleva a cabo cuando a un autómata se le entrega una palabra.
Sirve para llegar a un estado de aceptación o de rechazo.
Para que una palabra sea aceptada debe de ocurrir dos cosas:
Cond1) La palabra debe de terminarse o “agotarse” (esto es, que no quede ninguna letra sin procesar).
Cond2) El estado que queda al finalizar debe ser estado de aceptación.
Teoría de la computación - UPNORTE
David Wong Aitken
Ejemplo: Reconocer 10101
(definida por tabla)
Proceso computacional para 10101
w = 10101
δ 0 1
q0 q1 q0
q1 q0 q1
L = {{0,1}, {q0, q1}, d, q0, {q0}}
Formalizado:
Función de transición del AFD:
Teoría de la computación - UPNORTE
David Wong Aitken
Ejemplo: Reconocer 10101
(definida por tabla)
Proceso computacional para 10101
w = 10101
Revisamos la definición del AF, buscando el estado inicial.
δ 0 1
q0 q1 q0
q1 q0 q1
L = {{0,1}, {q0, q1}, d, q0, {q0}}
Formalizado:
Función de transición del AFD:
Teoría de la computación - UPNORTE
David Wong Aitken
Ejemplo: Reconocer 10101
(definida por tabla)
Proceso computacional para 10101
w = 10101
Estado inicial: q0. Lo pondremos como estado actual.
δ 0 1
q0 q1 q0
q1 q0 q1
L = {{0,1}, {q0, q1}, d, q0, {q0}}
Formalizado:Estado actual: q0 Letra actual:
Función de transición del AFD:
Teoría de la computación - UPNORTE
David Wong Aitken
Ejemplo: Reconocer 10101
(definida por tabla)
Proceso computacional para 10101
w = 10101
Ahora pondremos la primera letra como la letra actual
δ 0 1
q0 q1 q0
q1 q0 q1
L = {{0,1}, {q0, q1}, d, q0, {q0}}
Formalizado:Estado actual: q0 Letra actual: 1
Función de transición del AFD:
Teoría de la computación - UPNORTE
David Wong Aitken
Ejemplo: Reconocer 10101
(definida por tabla)
Proceso computacional para 10101
w = 10101
Inicia el proceso. Buscamos en la tabla el estado siguiente para el estado y la letra
actual.
δ 0 1
q0 q1 q0
q1 q0 q1
L = {{0,1}, {q0, q1}, d, q0, {q0}}
Formalizado:Estado actual: q0 Letra actual: 1
δ(q0, 1) = q0Función de transición del AFD:
Teoría de la computación - UPNORTE
David Wong Aitken
Ejemplo: Reconocer 10101
(definida por tabla)
Proceso computacional para 10101
w = 10101
Ponemos el nuevo estado encontrado como estado actual.
δ 0 1
q0 q1 q0
q1 q0 q1
L = {{0,1}, {q0, q1}, d, q0, {q0}}
Formalizado:Estado actual: q0 Letra actual: 1
δ(q0, 1) = q0Función de transición del AFD:
Teoría de la computación - UPNORTE
David Wong Aitken
Ejemplo: Reconocer 10101
(definida por tabla)
Proceso computacional para 10101
w = 10101
Avanzamos una letra de la palabra y la colocamos como letra actual
δ 0 1
q0 q1 q0
q1 q0 q1
L = {{0,1}, {q0, q1}, d, q0, {q0}}
Formalizado:Estado actual: q0 Letra actual: 0
δ(q0, 1) = q0Función de transición del AFD:
Teoría de la computación - UPNORTE
David Wong Aitken
Ejemplo: Reconocer 10101
(definida por tabla)
Proceso computacional para 10101
w = 10101
Ahora buscamos el nuevo estado siguiente para el nuevo estado y letra actual.
δ 0 1
q0 q1 q0
q1 q0 q1
L = {{0,1}, {q0, q1}, d, q0, {q0}}
Formalizado:Estado actual: q0 Letra actual: 0
δ(q0, 1) = q0
δ(q0, 0) = q1
Función de transición del AFD:
Teoría de la computación - UPNORTE
David Wong Aitken
Ejemplo: Reconocer 10101
(definida por tabla)
Proceso computacional para 10101
w = 10101
Colocamos el nuevo estado como actual y avanzamos una letra
δ 0 1
q0 q1 q0
q1 q0 q1
L = {{0,1}, {q0, q1}, d, q0, {q0}}
Formalizado:Estado actual: q1 Letra actual: 1
δ(q0, 1) = q0
δ(q0, 0) = q1
Función de transición del AFD:
Teoría de la computación - UPNORTE
David Wong Aitken
Ejemplo: Reconocer 10101
(definida por tabla)
Proceso computacional para 10101
w = 10101
Busquemos ahora un estado siguiente para la combinación de estado/letra actual
δ 0 1
q0 q1 q0
q1 q0 q1
L = {{0,1}, {q0, q1}, d, q0, {q0}}
Formalizado:Estado actual: q1 Letra actual: 1
δ(q0, 1) = q0
δ(q0, 0) = q1
δ(q1, 1) = q1
Función de transición del AFD:
Teoría de la computación - UPNORTE
David Wong Aitken
Ejemplo: Reconocer 10101
(definida por tabla)
Proceso computacional para 10101
w = 10101
Colocamos el nuevo estado como estado actual y avanzamos una letra
δ 0 1
q0 q1 q0
q1 q0 q1
L = {{0,1}, {q0, q1}, d, q0, {q0}}
Formalizado:Estado actual: q1 Letra actual: 0
δ(q0, 1) = q0
δ(q0, 0) = q1
δ(q1, 1) = q1
Función de transición del AFD:
Teoría de la computación - UPNORTE
David Wong Aitken
Ejemplo: Reconocer 10101
(definida por tabla)
Proceso computacional para 10101
w = 10101
Nuevamente, buscamos un estado siguiente para la actual combinacion estado/letra actual
δ 0 1
q0 q1 q0
q1 q0 q1
L = {{0,1}, {q0, q1}, d, q0, {q0}}
Formalizado:Estado actual: q1 Letra actual: 0
δ(q0, 1) = q0
δ(q0, 0) = q1
δ(q1, 1) = q1
δ(q1, 0) = q0
Función de transición del AFD:
Teoría de la computación - UPNORTE
David Wong Aitken
Ejemplo: Reconocer 10101
(definida por tabla)
Proceso computacional para 10101
w = 10101
Colocamos el nuevo estado como actual y avanzamos una letra
δ 0 1
q0 q1 q0
q1 q0 q1
L = {{0,1}, {q0, q1}, d, q0, {q0}}
Formalizado:Estado actual: q0 Letra actual: 1
δ(q0, 1) = q0
δ(q0, 0) = q1
δ(q1, 1) = q1
δ(q1, 0) = q0
Función de transición del AFD:
Teoría de la computación - UPNORTE
David Wong Aitken
Ejemplo: Reconocer 10101
(definida por tabla)
Proceso computacional para 10101
w = 10101
Nuevamente, buscamos un estado siguiente para la combinación estado/letra actual.
δ 0 1
q0 q1 q0
q1 q0 q1
L = {{0,1}, {q0, q1}, d, q0, {q0}}
Formalizado:Estado actual: q0 Letra actual: 1
δ(q0, 1) = q0
δ(q0, 0) = q1
δ(q1, 1) = q1
δ(q1, 0) = q0
δ(q0, 1) = q0
Función de transición del AFD:
Teoría de la computación - UPNORTE
David Wong Aitken
Ejemplo: Reconocer 10101
(definida por tabla)
Proceso computacional para 10101
w = 10101
Colocamos el estado como actual y avanzamos una letra
δ 0 1
q0 q1 q0
q1 q0 q1
L = {{0,1}, {q0, q1}, d, q0, {q0}}
Formalizado:Estado actual: q0 Letra actual: λ
δ(q0, 1) = q0
δ(q0, 0) = q1
δ(q1, 1) = q1
δ(q1, 0) = q0
δ(q0, 1) = q0
Función de transición del AFD:
Teoría de la computación - UPNORTE
David Wong Aitken
Ejemplo: Reconocer 10101
(definida por tabla)
Proceso computacional para 10101
w = 10101
Pero la palabra ya acabó (cond1). Verifiquemos si el estado al que hemos
llegado es aceptación (cond2) o rechazo
δ 0 1
q0 q1 q0
q1 q0 q1
L = {{0,1}, {q0, q1}, d, q0, {q0}}
Formalizado:Estado actual: q0 Letra actual: λ
δ(q0, 1) = q0
δ(q0, 0) = q1
δ(q1, 1) = q1
δ(q1, 0) = q0
δ(q1, 1) = q0
¿q0 ∈ F?Función de transición del AFD:
Teoría de la computación - UPNORTE
David Wong Aitken
Ejemplo: Reconocer 10101
(definida por tabla)
Proceso computacional para 10101
w = 10101
Pero la palabra ya acabó (cond1). Verifiquemos si el estado al que hemos
llegado es aceptación (cond2) o rechazo
δ 0 1
q0 q1 q0
q1 q0 q1
L = {{0,1}, {q0, q1}, d, q0, {q0}}
Formalizado:Estado actual: q0 Letra actual: λ
δ(q0, 1) = q0
δ(q0, 0) = q1
δ(q1, 1) = q1
δ(q1, 0) = q0
δ(q1, 1) = q0
¿q0 ∈ F?Función de transición del AFD:
Teoría de la computación - UPNORTE
David Wong Aitken
Ejemplo: Reconocer 10101
Función de transición del AFD:(definida por tabla)
Proceso computacional para 10101
w = 10101
Pero la palabra ya acabó (cond1). Verifiquemos si el estado al que hemos
llegado es aceptación (cond2) o rechazo
δ 0 1
q0 q1 q0
q1 q0 q1
L = {{0,1}, {q0, q1}, d, q0, {q0}}
Formalizado:Estado actual: q0 Letra actual: λ
δ(q0, 1) = q0
δ(q0, 0) = q1
δ(q1, 1) = q1
δ(q1, 0) = q0
δ(q1, 1) = q0
¿q0 ∈ F?
La palabraLa palabra10101 es 10101 es aceptadaaceptada..
Teoría de la computación - UPNORTE
David Wong Aitken
Discusión
El proceso computacional que hemos visto es fácilmente algoritmizable. ¿cuáles serían los datos de entrada? ¿y cuáles serían de salida?
Pero, ¿qué problema nos plantea el proceso computacional de un AFND?
Teoría de la computación - UPNORTE
David Wong Aitken
Resumen
Teoría de la computación - UPNORTE
David Wong Aitken
Tarea
Presentar para la próxima semana un AFD que reconozca números binarios múltiplos de 5. Por ejemplo, debe reconocer:
0, 101, 1010, 1111, 10100…