(Sin soluiciones) s3 afnd y afd

Preview:

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…

Recommended