27.08.2013 Views

Filminas Clase Teórica 04/09 - Facultad de Ciencias Exactas

Filminas Clase Teórica 04/09 - Facultad de Ciencias Exactas

Filminas Clase Teórica 04/09 - Facultad de Ciencias Exactas

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Autómatas Finitos y Lenguajes Regulares<br />

Problema:<br />

Dado un lenguaje L <strong>de</strong>finido sobre un alfabeto A y una ca<strong>de</strong>na x<br />

arbitraria, <strong>de</strong>terminar si x ∈ L o x ∉ L.<br />

Ca<strong>de</strong>na x<br />

AUTOMATA FINITO<br />

Lenguaje Regular<br />

<strong>Ciencias</strong> <strong>de</strong> la Computación I - <strong>Filminas</strong> <strong>de</strong> <strong>Clase</strong> – <strong>Facultad</strong> Cs. <strong>Exactas</strong> – UNCPBA - 20<strong>09</strong><br />

Autómatas Finitos<br />

SI<br />

NO<br />

• Un Autómata Aut mata Finito es un mo<strong>de</strong>lo matemático <strong>de</strong> una máquina<br />

abstracta con entradas y salidas discretas.<br />

• Dos puntos <strong>de</strong> vista:<br />

Como dispositivo reconocedor <strong>de</strong> la<br />

pertenencia <strong>de</strong> una ca<strong>de</strong>na a un lenguaje<br />

regular.<br />

Como traductor <strong>de</strong> una ca<strong>de</strong>na en otra.<br />

• Un AF pue<strong>de</strong> leer símbolos <strong>de</strong> una cinta, y pue<strong>de</strong> estar en un<br />

número finito <strong>de</strong> estados.<br />

<strong>Ciencias</strong> <strong>de</strong> la Computación I - <strong>Filminas</strong> <strong>de</strong> <strong>Clase</strong> – <strong>Facultad</strong> Cs. <strong>Exactas</strong> – UNCPBA - 20<strong>09</strong><br />

1


Aplicaciones:<br />

Autómatas Finitos<br />

Análisis <strong>de</strong> ca<strong>de</strong>nas <strong>de</strong> caracteres (búsqueda <strong>de</strong> una ca<strong>de</strong>na en<br />

un archivo <strong>de</strong> texto, reconocimiento <strong>de</strong> ca<strong>de</strong>nas que satisfacen<br />

ciertos criterios, etc.)<br />

Reproductor <strong>de</strong> vi<strong>de</strong>o, máquina expen<strong>de</strong>dora <strong>de</strong> boletos, etc.<br />

<br />

esperando mostrando<br />

pausa<br />

película<br />

<br />

<br />

<br />

<br />

<strong>Ciencias</strong> <strong>de</strong> la Computación I - <strong>Filminas</strong> <strong>de</strong> <strong>Clase</strong> – <strong>Facultad</strong> Cs. <strong>Exactas</strong> – UNCPBA - 20<strong>09</strong><br />

Autómatas Finitos Reconocedores<br />

Estados <strong>de</strong>l AF:<br />

Cantidad finita.<br />

Representan la “memoria” <strong>de</strong>l autómata.<br />

Un estado inicial.<br />

Al menos un estado final o <strong>de</strong> aceptación.<br />

e 5<br />

e 4<br />

cinta <strong>de</strong> entrada (contiene ca<strong>de</strong>na a ser leída)<br />

a b c d …<br />

indicador <strong>de</strong> estado<br />

e 0<br />

e 3<br />

e 1<br />

e 2<br />

mecanismo <strong>de</strong> control<br />

cabeza lectora (se mueve a <strong>de</strong>recha)<br />

Dada una ca<strong>de</strong>na x en la<br />

cinta <strong>de</strong> entrada, si el AF:<br />

termina en un estado final<br />

→ ca<strong>de</strong>na aceptada<br />

termina en un estado no final<br />

→ ca<strong>de</strong>na rechazada<br />

<strong>Ciencias</strong> <strong>de</strong> la Computación I - <strong>Filminas</strong> <strong>de</strong> <strong>Clase</strong> – <strong>Facultad</strong> Cs. <strong>Exactas</strong> – UNCPBA - 20<strong>09</strong><br />

2


Autómatas Finitos Reconocedores<br />

L = { x / x ∈ {a, b, c}* y x termina en b }<br />

Ca<strong>de</strong>nas que pertenecen a L<br />

b<br />

ab<br />

bb<br />

cb<br />

aab<br />

bab<br />

…<br />

Dos situaciones para distinguir:<br />

- el último símbolo leído es distinto <strong>de</strong> b<br />

- el último símbolo leído es b<br />

Ca<strong>de</strong>nas que no pertenecen a L<br />

ε<br />

a<br />

c<br />

aa<br />

ba<br />

…<br />

Dos estados:<br />

<strong>Ciencias</strong> <strong>de</strong> la Computación I - <strong>Filminas</strong> <strong>de</strong> <strong>Clase</strong> – <strong>Facultad</strong> Cs. <strong>Exactas</strong> – UNCPBA - 20<strong>09</strong><br />

Autómatas Finitos Reconocedores<br />

e0 : estado inicial (último símbolo leído ≠ b) e1 : estado final (último símbolo leído es b)<br />

b a b …<br />

e 0 e1<br />

Configuración <strong>de</strong> inicio<br />

b a b …<br />

e 0 e 1<br />

<strong>Ciencias</strong> <strong>de</strong> la Computación I - <strong>Filminas</strong> <strong>de</strong> <strong>Clase</strong> – <strong>Facultad</strong> Cs. <strong>Exactas</strong> – UNCPBA - 20<strong>09</strong><br />

e 0<br />

e 1<br />

b a b …<br />

Configuración <strong>de</strong><br />

aceptación<br />

<br />

e 0 e 1<br />

ca<strong>de</strong>na aceptada<br />

b a b …<br />

e 0 e 1<br />

3


Autómatas Finitos Reconocedores<br />

e0 : estado inicial (último símbolo leído ≠ b) e1 : estado final (último símbolo leído es b)<br />

b a …<br />

e 0 e1<br />

Configuración <strong>de</strong> inicio<br />

b a …<br />

e 0 e 1<br />

Configuración <strong>de</strong><br />

no aceptación<br />

<br />

ca<strong>de</strong>na rechazada<br />

b a …<br />

e 0 e 1<br />

<strong>Ciencias</strong> <strong>de</strong> la Computación I - <strong>Filminas</strong> <strong>de</strong> <strong>Clase</strong> – <strong>Facultad</strong> Cs. <strong>Exactas</strong> – UNCPBA - 20<strong>09</strong><br />

Autómatas Finitos Reconocedores<br />

Para <strong>de</strong>finir un AF reconocedor es necesario indicar:<br />

el alfabeto <strong>de</strong> entrada: A<br />

el conjunto finito <strong>de</strong> estados: E={e 0, e 1, ….,e n}<br />

<strong>de</strong> estos estados, un único estado inicial: e 0<br />

<strong>de</strong> estos estados, uno o varios estados finales: F<br />

una función <strong>de</strong> transición <strong>de</strong> estados: δ (indica a qué estado<br />

<strong>Ciencias</strong> <strong>de</strong> la Computación I - <strong>Filminas</strong> <strong>de</strong> <strong>Clase</strong> – <strong>Facultad</strong> Cs. <strong>Exactas</strong> – UNCPBA - 20<strong>09</strong><br />

pasar luego <strong>de</strong> leer<br />

un símbolo en la cinta<br />

<strong>de</strong> entrada)<br />

4


Autómatas Finitos Reconocedores<br />

Formalmente, un AF reconocedor <strong>de</strong>terminístico (AFD) se<br />

<strong>de</strong>fine como una quintupla<br />

M = <br />

E es un conjunto finito <strong>de</strong> estados; E ≠ ∅<br />

A es el alfabeto <strong>de</strong> entrada<br />

δ es la función <strong>de</strong> transición <strong>de</strong> estados; δ: E x A → E<br />

δ(ej , a) = ek la máquina pue<strong>de</strong> pasar <strong>de</strong>l estado ej al ek <strong>de</strong>spués <strong>de</strong> leer el símbolo a en la cinta (ej , ek ∈ E; a ∈ A)<br />

e i es el estado inicial; e i ∈ E<br />

F es el conjunto <strong>de</strong> estados finales o <strong>de</strong> aceptación; F ⊆ E<br />

<strong>Ciencias</strong> <strong>de</strong> la Computación I - <strong>Filminas</strong> <strong>de</strong> <strong>Clase</strong> – <strong>Facultad</strong> Cs. <strong>Exactas</strong> – UNCPBA - 20<strong>09</strong><br />

Autómatas Finitos Reconocedores<br />

Un AF reconocedor <strong>de</strong>terminístico se pue<strong>de</strong> representar<br />

gráficamente usando un diagrama <strong>de</strong> transición <strong>de</strong> estados.<br />

- cada estado e j ∈ E e j<br />

- estado inicial e i<br />

- cada estado final e f ∈ F e f<br />

-cada transición entre estados<br />

δ(e j , a) = e k para e j , e k ∈ E, a ∈ A<br />

<strong>Ciencias</strong> <strong>de</strong> la Computación I - <strong>Filminas</strong> <strong>de</strong> <strong>Clase</strong> – <strong>Facultad</strong> Cs. <strong>Exactas</strong> – UNCPBA - 20<strong>09</strong><br />

e i<br />

e j<br />

a<br />

e k<br />

5


Autómatas Finitos Reconocedores<br />

L = { x / x ∈ {a, b, c}* y x termina en b }<br />

e0 : estado inicial (último símbolo leído ≠ b)<br />

e1 : estado final (último símbolo leído es b)<br />

<strong>Ciencias</strong> <strong>de</strong> la Computación I - <strong>Filminas</strong> <strong>de</strong> <strong>Clase</strong> – <strong>Facultad</strong> Cs. <strong>Exactas</strong> – UNCPBA - 20<strong>09</strong><br />

a, c b<br />

b<br />

e 0<br />

a, c<br />

Descripción instantánea<br />

α e i β don<strong>de</strong> e i estado actual, α ca<strong>de</strong>na ya leída, β ca<strong>de</strong>na que falta leer (α, β ∈ A * )<br />

Ejemplos<br />

e0abcb├ ae0bcb ├ abe1cb ├ abce0b ├ abcbe1 e0ba ├ be1a ├ bae0 Diagrama <strong>de</strong> transición <strong>de</strong> estados<br />

lee ba y termina en estado no final.<br />

Luego, ba ∉ L<br />

<strong>Ciencias</strong> <strong>de</strong> la Computación I - <strong>Filminas</strong> <strong>de</strong> <strong>Clase</strong> – <strong>Facultad</strong> Cs. <strong>Exactas</strong> – UNCPBA - 20<strong>09</strong><br />

e 1<br />

lee abcb y termina<br />

en estado final.<br />

Luego, abcb ∈ L<br />

Autómatas Finitos Reconocedores<br />

L = { x / x ∈ {a, b, c}* y x termina en b }<br />

Diagrama <strong>de</strong> transición <strong>de</strong> estados<br />

a, c b<br />

b<br />

e 0<br />

Función δ<br />

δ(e 0, a)=e 0<br />

a, c<br />

e 1<br />

δ(e 0, b)=e 1 δ(e 0, c)=e 0<br />

δ(e 1, a)=e 0 δ(e 1, b)=e 1 δ(e 1, c)=e 0<br />

Tabla <strong>de</strong> transición <strong>de</strong> estados:<br />

AFD = <br />

El AFD = acepta una ca<strong>de</strong>na x si<br />

la secuencia <strong>de</strong> transiciones correspondientes a los símbolos <strong>de</strong><br />

x conduce <strong>de</strong>s<strong>de</strong> e 0 (el estado inicial) a e 1 (el único estado final).<br />

δ<br />

e 0<br />

e 1<br />

a<br />

e 0<br />

e 0<br />

b<br />

e 1<br />

e 1<br />

c<br />

e 0<br />

e 0<br />

6


Lenguaje aceptado por un AFD<br />

Definición <strong>de</strong> δ * (extensión <strong>de</strong> la función <strong>de</strong> transición para ca<strong>de</strong>nas)<br />

Sea M = un AFD. Se <strong>de</strong>fine la función δ * : E x A * → E<br />

• δ * (e j, ε) = e j e j ∈ E<br />

• δ * (e j, xa) = δ(δ* (e j,x), a) e j ∈ E, x ∈ A*, a ∈ A<br />

Una ca<strong>de</strong>na x es aceptada por un AFD M = si:<br />

δ * (e i, x) = e f<br />

para algún e f ∈ F<br />

Luego, el lenguaje aceptado por un AFD M = es:<br />

L(M) = { x / x ∈ A* y δ * (e i, x) = e f y e f ∈ F}<br />

Los lenguajes aceptados por los Autómatas<br />

Aut matas Finitos se <strong>de</strong>nominan<br />

Lenguajes Regulares o <strong>de</strong> Tipo 3.<br />

<strong>Ciencias</strong> <strong>de</strong> la Computación I - <strong>Filminas</strong> <strong>de</strong> <strong>Clase</strong> – <strong>Facultad</strong> Cs. <strong>Exactas</strong> – UNCPBA - 20<strong>09</strong><br />

Diseño <strong>de</strong> Autómatas Finitos<br />

No es conveniente proce<strong>de</strong>r por “prueba y error”, pue<strong>de</strong>n<br />

cometerse dos tipos <strong>de</strong> errores:<br />

- que “sobren ca<strong>de</strong>nas”, es <strong>de</strong>cir el AF acepta ca<strong>de</strong>nas que no <strong>de</strong>bería aceptar<br />

- que “falten ca<strong>de</strong>nas”, es <strong>de</strong>cir el AF no acepta todas las ca<strong>de</strong>nas <strong>de</strong>l<br />

lenguaje consi<strong>de</strong>rado<br />

Importante para un diseño sistemático:<br />

1) Proponer un conjunto <strong>de</strong> estados que “recuerdan” condiciones<br />

importantes en el problema consi<strong>de</strong>rado<br />

2) De estos estados, <strong>de</strong>terminar cuál representa la condición inicial y<br />

cuál/cuáles la condición <strong>de</strong> aceptación<br />

3) Proponer las transiciones que permiten pasar <strong>de</strong> un estado a otro<br />

<strong>Ciencias</strong> <strong>de</strong> la Computación I - <strong>Filminas</strong> <strong>de</strong> <strong>Clase</strong> – <strong>Facultad</strong> Cs. <strong>Exactas</strong> – UNCPBA - 20<strong>09</strong><br />

7


Autómatas Finitos Traductores<br />

- Producen una salida diferente <strong>de</strong> SI o NO<br />

- Permiten realizar “cálculos” a partir <strong>de</strong> una ca<strong>de</strong>na <strong>de</strong> entrada <br />

“traducen” una ca<strong>de</strong>na <strong>de</strong> entrada en una ca<strong>de</strong>na <strong>de</strong> salida<br />

x AUTOMATA FINITO<br />

TRADUCTOR<br />

x´<br />

Lenguaje Regular<br />

Ejemplos:<br />

• AF que calcule la función f(x) = 2x +3<br />

• Analizador léxico <strong>de</strong> un compilador<br />

<strong>Ciencias</strong> <strong>de</strong> la Computación I - <strong>Filminas</strong> <strong>de</strong> <strong>Clase</strong> – <strong>Facultad</strong> Cs. <strong>Exactas</strong> – UNCPBA - 20<strong>09</strong><br />

Autómatas Finitos Traductores<br />

Formalmente, un AF traductor <strong>de</strong>terminístico (AFT) se <strong>de</strong>fine<br />

como una 7-tupla<br />

M T = <br />

E es un conjunto finito <strong>de</strong> estados; E ≠ ∅<br />

A es el alfabeto <strong>de</strong> entrada<br />

δ es la función <strong>de</strong> transición <strong>de</strong> estados; δ: E x A → E<br />

e i es el estado inicial; e i ∈ E<br />

F es el conjunto <strong>de</strong> estados finales o <strong>de</strong> aceptación; F ⊆ E<br />

S es el alfabeto <strong>de</strong> salida<br />

γ es la función <strong>de</strong> traducción; γ : E x A → S *<br />

<strong>Ciencias</strong> <strong>de</strong> la Computación I - <strong>Filminas</strong> <strong>de</strong> <strong>Clase</strong> – <strong>Facultad</strong> Cs. <strong>Exactas</strong> – UNCPBA - 20<strong>09</strong><br />

8


Autómatas Finitos Traductores<br />

Si existen δ (e i , a) = e k<br />

don<strong>de</strong> e i , e k ∈ E; a ∈ A ; x ∈ S*<br />

se representa en el diagrama <strong>de</strong><br />

transición <strong>de</strong> estados<br />

Ejemplo:<br />

y γ (e i , a) = x<br />

<strong>Ciencias</strong> <strong>de</strong> la Computación I - <strong>Filminas</strong> <strong>de</strong> <strong>Clase</strong> – <strong>Facultad</strong> Cs. <strong>Exactas</strong> – UNCPBA - 20<strong>09</strong><br />

e i<br />

a / x<br />

Autómata finito traductor que calcula f(x) = 2x + 3 para x ∈ N, x > 0,<br />

x representado en unario<br />

1 / 11111<br />

e0 1 / 11<br />

e1 Ejemplos<br />

si x =1 traduce 11111<br />

si x =11 traduce 1111111<br />

si x =111 salida 19 si x =11111 salida 113 AFT = <br />

Autómatas Finitos Traductores<br />

Definición <strong>de</strong> γ * (función <strong>de</strong> traducción para ca<strong>de</strong>nas)<br />

Sea M T = un AFT. Se <strong>de</strong>fine la función<br />

γ * : E x A * → S * tal que γ * (e i, w) es la ca<strong>de</strong>na que traducirá el<br />

autómata luego <strong>de</strong> leer w comenzando en e i<br />

• γ * (e i, ε) = ε<br />

• γ * (e i, wa) = γ * (e i, w) . γ (δ* (e i, w), a) e i ∈ E, w ∈ A*, a ∈ A<br />

Nota:<br />

El autómata solo <strong>de</strong>fine la traducción, si el autómata finito<br />

reconocedor subyacente “acepta” la ca<strong>de</strong>na.<br />

Es <strong>de</strong>cir, la traducción T(w): A* → S* asociada a M T está<br />

<strong>de</strong>finida como:<br />

T(w)= γ * (e 0 , w) ⇔ δ * (e 0 , w) ∈ F don<strong>de</strong> w∈ A*<br />

<strong>Ciencias</strong> <strong>de</strong> la Computación I - <strong>Filminas</strong> <strong>de</strong> <strong>Clase</strong> – <strong>Facultad</strong> Cs. <strong>Exactas</strong> – UNCPBA - 20<strong>09</strong><br />

e k<br />

9


Autómatas Finitos Mo<strong>de</strong>los<br />

Formalmente, un AF mo<strong>de</strong>lo se <strong>de</strong>fine como una 3-upla<br />

M M = < E, A, δ ><br />

E es un conjunto finito <strong>de</strong> estados; E ≠ ∅<br />

A es el alfabeto <strong>de</strong> entrada<br />

δ es la función <strong>de</strong> transición <strong>de</strong> estados; δ: E x A → E<br />

• Ejemplo Mo<strong>de</strong>lo <strong>de</strong> Vi<strong>de</strong>ograbadora<br />

<br />

esperando mostrando<br />

pausa<br />

<br />

<br />

<br />

M M = <br />

<br />

<strong>Ciencias</strong> <strong>de</strong> la Computación I - <strong>Filminas</strong> <strong>de</strong> <strong>Clase</strong> – <strong>Facultad</strong> Cs. <strong>Exactas</strong> – UNCPBA - 20<strong>09</strong><br />

Autómatas Finitos Mo<strong>de</strong>los<br />

• Ejemplo Mo<strong>de</strong>lo <strong>de</strong> Vi<strong>de</strong>ograbadora<br />

δ:<br />

<br />

mostrando<br />

esperando pausa<br />

<br />

M M = <br />

<br />

<br />

<br />

<strong>Ciencias</strong> <strong>de</strong> la Computación I - <strong>Filminas</strong> <strong>de</strong> <strong>Clase</strong> – <strong>Facultad</strong> Cs. <strong>Exactas</strong> – UNCPBA - 20<strong>09</strong><br />

10

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!