43
Autómatas finitos no deterministas y deterministas Semana 3 Teoría de la Computación

(Sin soluiciones) s3 afnd y afd

  • 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

Page 1: (Sin soluiciones) s3   afnd y afd

Autómatas finitos no deterministas y deterministas

Semana 3Teoría de la Computación

Page 2: (Sin soluiciones) s3   afnd y afd

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.

Page 3: (Sin soluiciones) s3   afnd y afd

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)

Page 4: (Sin soluiciones) s3   afnd y 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.

Page 5: (Sin soluiciones) s3   afnd y afd

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?>

Page 6: (Sin soluiciones) s3   afnd y afd

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?

Page 7: (Sin soluiciones) s3   afnd y afd

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.

Page 8: (Sin soluiciones) s3   afnd y afd

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

Page 9: (Sin soluiciones) s3   afnd y afd

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

Page 10: (Sin soluiciones) s3   afnd y afd

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

Page 11: (Sin soluiciones) s3   afnd y afd

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

Page 12: (Sin soluiciones) s3   afnd y afd

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

Page 13: (Sin soluiciones) s3   afnd y afd

Teoría de la computación - UPNORTE

David Wong Aitken

Ejercicio

Hacer la ER del siguiente autómata

Page 14: (Sin soluiciones) s3   afnd y afd

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)

Page 15: (Sin soluiciones) s3   afnd y afd

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

Page 16: (Sin soluiciones) s3   afnd y afd

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)

Page 17: (Sin soluiciones) s3   afnd y afd

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

Page 18: (Sin soluiciones) s3   afnd y afd

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

Page 19: (Sin soluiciones) s3   afnd y afd

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

Page 20: (Sin soluiciones) s3   afnd y afd

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)

Page 21: (Sin soluiciones) s3   afnd y afd

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

Page 22: (Sin soluiciones) s3   afnd y afd

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.

Page 23: (Sin soluiciones) s3   afnd y afd

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:

Page 24: (Sin soluiciones) s3   afnd y 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:

Page 25: (Sin soluiciones) s3   afnd y 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:

Page 26: (Sin soluiciones) s3   afnd y 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:

Page 27: (Sin soluiciones) s3   afnd y 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:

Page 28: (Sin soluiciones) s3   afnd y 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:

Page 29: (Sin soluiciones) s3   afnd y 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:

Page 30: (Sin soluiciones) s3   afnd y 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:

Page 31: (Sin soluiciones) s3   afnd y 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:

Page 32: (Sin soluiciones) s3   afnd y 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:

Page 33: (Sin soluiciones) s3   afnd y 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:

Page 34: (Sin soluiciones) s3   afnd y 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:

Page 35: (Sin soluiciones) s3   afnd y 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:

Page 36: (Sin soluiciones) s3   afnd y 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:

Page 37: (Sin soluiciones) s3   afnd y 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:

Page 38: (Sin soluiciones) s3   afnd y 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:

Page 39: (Sin soluiciones) s3   afnd y 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:

Page 40: (Sin soluiciones) s3   afnd y 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..

Page 41: (Sin soluiciones) s3   afnd y afd

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?

Page 42: (Sin soluiciones) s3   afnd y afd

Teoría de la computación - UPNORTE

David Wong Aitken

Resumen

Page 43: (Sin soluiciones) s3   afnd y afd

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…