DEL AFN AL AFD
Transcript of DEL AFN AL AFD
![Page 1: DEL AFN AL AFD](https://reader034.fdocuments.mx/reader034/viewer/2022051102/6276f8d67a56a91c9e29a8af/html5/thumbnails/1.jpg)
DEL AFN AL AFD
Fundamentos de Computación II
![Page 2: DEL AFN AL AFD](https://reader034.fdocuments.mx/reader034/viewer/2022051102/6276f8d67a56a91c9e29a8af/html5/thumbnails/2.jpg)
Un Autómata Finito, obtenido a partir de la descripción de un LR mediante una frase o desde
una ER, puede ser un AFD o un AFN. Y si el AF se construye utilizando el Algoritmo de
Thompson, será un AFN con transiciones-.
¿Como sabemos si un autómata es un AFN?
1) Hay algún estado del que parten dos o más transiciones etiquetadas con un mismo
carácter del alfabeto, o
2) Tiene transiciones-, o
3) Ambas cosas.
Cualquiera sea la situación, habrá dificultades para implementar al AFN mediante un
programa de computadora.
Para todo AFN existe un AFD que reconoce al mismo lenguaje y que puede ser implementado
en forma más sencilla. En otras palabras, para todo AFN existe un AFD equivalente.
Veremos en esta clase un algoritmo tal que, dado un AFN, se obtiene un AFD equivalente.
Para todo AFN existe un AFD equivalente.
![Page 3: DEL AFN AL AFD](https://reader034.fdocuments.mx/reader034/viewer/2022051102/6276f8d67a56a91c9e29a8af/html5/thumbnails/3.jpg)
El algoritmo para construir un AFD a partir de un AFN se basa en el conocimiento de dos tipos
de conjuntos:
1) El conjunto clausura- y
2) El conjunto hacia.
Clausura- DE UN ESTADO
Sea q un estado de un AFN; entonces, la clausura- (q) es el conjunto de estados formado por q
y todos aquellos estados a los cuales se transita desde q utilizando solo transiciones-.
En consecuencia, el conjunto clausura- de un estado nunca puede ser vacío porque contiene,
como mínimo, a su propio estado, es decir: si un estado no tiene transiciones-, la clausura- de
ese estado solo contiene al mismo estado.
Definiciones preliminares
![Page 4: DEL AFN AL AFD](https://reader034.fdocuments.mx/reader034/viewer/2022051102/6276f8d67a56a91c9e29a8af/html5/thumbnails/4.jpg)
Ejemplo 1:
1 2 +
3 4 5 +0 -
a
a
6 +
a
La descripción formal de este autómata posee la siguiente Tabla de Transiciones: estado a 0- {1} {3,6} 1 - {2} 2+ - {4} 3 - {4} 4 {5} - 5+ - - 6+ {6} -
Esta TT nos muestra, implícitamente: cuáles son los estados del autómata, cuál es el estado inicial (señalado con ), cuáles son los estados finales (señalados con +) y
qué caracteres integran el alfabeto (solo el carácter a, en
esta oportunidad, ya que el símbolo no pertenece a ningún alfabeto). Esta es una forma más compacta de describir formalmente a un AF.
![Page 5: DEL AFN AL AFD](https://reader034.fdocuments.mx/reader034/viewer/2022051102/6276f8d67a56a91c9e29a8af/html5/thumbnails/5.jpg)
Los estados 4, 5 y 6 no tienen transiciones-, por lo que sus respectivas clausuras- serán:
clausura- (4) = {4}, clausura- (5) = {5}, clausura- (6) = {6}.
El estado 1 tiene una transición- al estado 2, quien a su vez tiene una transición- al estado 4;
por lo tanto, clausura- (1) = {1, 2, 4}.
El estado 2 fue analizado al determinar que sucedía con el estado 1. Por consiguiente, la
clausura- (2) = {2, 4}.
El estado 3 transita por al estado 4 y éste no tiene transiciones-; luego, clausura- (3) = {3,
4}. Finalmente, el estado 0 transita por a los estados 3 y 6, que ya fueron analizados; en
consecuencia, la clausura- del estado 0 es clausura- (0) = {0, 3, 4, 6}.
estado a 0- {1} {3,6} 1 - {2} 2+ - {4} 3 - {4} 4 {5} - 5+ - - 6+ {6} -
Determinamos la clausura- de cada estado, utilizando la
información que brinda la TT en su columna etiquetada con .
Comenzamos con aquellos estados que no tienen transiciones-
(caso más simple) y concluímos con el estado que tiene más
transiciones- (caso más complejo).
![Page 6: DEL AFN AL AFD](https://reader034.fdocuments.mx/reader034/viewer/2022051102/6276f8d67a56a91c9e29a8af/html5/thumbnails/6.jpg)
Sea R un conjunto de estados. Entonces, la clausura- (R) es la unión de las clausuras- de
los estados que componen el conjunto R.
Ejemplo 2
Retomando el AFN del ejemplo anterior, supongamos un conjunto de estados R = {1, 3, 6}.
Entonces, su clausura- será: clausura- (R) = clausura- (1) clausura- (3) clausura-
(6) = {1, 2, 4} {3, 4} {6} = {1, 2, 3, 4, 6}.
Sea R un conjunto de estados y sea x un símbolo del alfabeto.
Entonces, hacia (R, x) es el conjunto de estados a los cuales se transita por el símbolo x, desde
los estados de R que tengan esa transición.
Clausura- DE UN CONJUNTO DE ESTADOS
EL CONJUNTO “hacia”
![Page 7: DEL AFN AL AFD](https://reader034.fdocuments.mx/reader034/viewer/2022051102/6276f8d67a56a91c9e29a8af/html5/thumbnails/7.jpg)
Ejemplo 3
Supongamos que el conjunto R está formado por los estados 1, 2 y 3, y supongamos que
existen las siguientes transiciones para estos estados: 1 => a => 4, 2 => a => 5 y 3 => b => 6.
Entonces: hacia ({1, 2, 3}, a) = {4, 5} y hacia ({1, 2, 3}, b} = {6}.
![Page 8: DEL AFN AL AFD](https://reader034.fdocuments.mx/reader034/viewer/2022051102/6276f8d67a56a91c9e29a8af/html5/thumbnails/8.jpg)
La construcción de un AFD a partir de un AFN se realiza mediante un algoritmo que recibe el
nombre de Algoritmo de Clausuras- o Construcción de Subconjuntos.
Este último nombre se debe a que cada estado del AFD estará formado por un conjunto de
estados del AFN, cuyos componentes deben reflejar, todos, la misma transición ante un
símbolo dado del alfabeto, es decir que: el AFD simulará, “en paralelo”, todas las
transiciones que realiza el AFN del cual se ha partido, para cualquier cadena de entrada que
el autómata deba procesar.
Para obtener el AFD, necesitamos determinar tres cosas:
1) El estado inicial del AFD;
2) Sus estados finales;
3) Su Tabla de Transiciones.
Este algoritmo comienza con la obtención del estado inicial del AFD.
A partir de este estado, determinará los otros estados del AFD y, con ellos, construirá la TT
del nuevo autómata y también resolverá cuáles estados son finales.
EL ALGORITMO
![Page 9: DEL AFN AL AFD](https://reader034.fdocuments.mx/reader034/viewer/2022051102/6276f8d67a56a91c9e29a8af/html5/thumbnails/9.jpg)
Por definición, el estado inicial del AFD es la clausura- del estado inicial del AFN dato,
mientras que estados finales del AFD son todos aquellos conjuntos de estados del AFN que
contienen, por lo menos, un estado final.
Finalmente, la Tabla de Transiciones es construida de la siguiente manera:
1) Se obtiene el estado inicial del AFD, que, como ya se ha adelantado, es la clausura- del
estado inicial del AFN.
2) Se agrega este estado a la primera columna de la tabla.
3) Para cada símbolo del alfabeto, se calcula el conjunto hacia del estado que se acaba de
agregar a la primera columna de la tabla.
4) Se determinan nuevos estados del AFD por medio de la clausura- de cada conjunto hacia
recién obtenido. Estos estados se incorporan a la tabla, en las columnas que les
corresponden.
5) Si un nuevo estado – conjunto - obtenido en el punto anterior no existe todavía en la
primera columna de la Tabla de Transiciones, se lo agrega
6) Se repiten los pasos (3) al (5) hasta que no surjan nuevos estados.
![Page 10: DEL AFN AL AFD](https://reader034.fdocuments.mx/reader034/viewer/2022051102/6276f8d67a56a91c9e29a8af/html5/thumbnails/10.jpg)
Ejemplo 4
Sea el lenguaje representado por la ER (a + b)*ab. Aplicando el Algoritmo de Thompson
obtenemos un AFN que reconoce a este lenguaje. Luego, utilizaremos la “Construcción de
Subconjuntos” para hallar un AFD equivalente. La Tabla de Transiciones del AFN hallado “por
Thompson” es:
estado a b __ 0- - - {1,7} 1 - - {2,4} 2 {3} - - 3 - - {6} 4 - {5} - 5 - - {6} 6 - - {1,7} 7 - - {8} 8 {9} - - 9 - - {10} 10 - {11} - 11+ - - -
A partir de esta TT del AFN, construímos la TT
de un AFD equivalente por medio de la
“Construcción de Subconjuntos”, de esta
manera:
1) Calculamos el estado inicial del AFD, que es
la clausura- del estado inicial del AFN,
revisando la columna etiquetada con :
clausura- (0) = {0,1,2,4,7,8}
![Page 11: DEL AFN AL AFD](https://reader034.fdocuments.mx/reader034/viewer/2022051102/6276f8d67a56a91c9e29a8af/html5/thumbnails/11.jpg)
2) Colocamos este estado-conjunto como primer estado de la TT del AFD y le agregamos el
carácter – para indicar que éste es el nuevo estado inicial del AFD que estamos
construyendo:
estado a b
{0,1,2,4,7,8}- ? ? (la columna “épsilon” desaparece porque estamos construyendo un AFD)
3) Calculamos el hacia de este estado inicial, para cada uno de los caracteres del alfabeto (a
y b).
Para el carácter a, en la tabla original existen las transiciones 2 => a => 3 y 8 => a => 9;
como los estados 2 y 8 forman parte del conjunto que representa el estado inicial del AFD,
entonces: hacia ({0,1,2,4,7,8}, a) = {3,9}.
De la misma forma, para el carácter b existen las transiciones 4 => b => 5 y 10 => b => 11;
pero solo el estado 4 pertenece al conjunto estado inicial del AFD, por lo que:
hacia ({0,1,2,4,7,8}, b) = {5}.
![Page 12: DEL AFN AL AFD](https://reader034.fdocuments.mx/reader034/viewer/2022051102/6276f8d67a56a91c9e29a8af/html5/thumbnails/12.jpg)
4) Calculamos la clausura- de cada conjunto hacia hallado en el punto anterior, y estos
serán los estados de llegada de las respectivas transiciones desde el estado inicial del AFD:
• clausura- (hacia ({0,1,2,4,7,8}, a)) = clausura- ({3,9}) = clausura- (3) clausura- (9)
= {3,6,1,7,2,4,8} {9,10} = {1,2,3,4,6,7,8,9,10} = {1..4,6..10} y
• clausura- (hacia ({0,1,2,4,7,8}, b)) = clausura- ({5}) = {5,6,1,7,2,4,8} = {7,8} = {1..2,4,
...8}.
5) Completamos la fila del estado inicial en la TT, con los estados de llegada obtenidos en
el paso anterior:
estado a b_____
{0,1,2,4,7,8}- {1..4,6..10} {1,2,4...8}
![Page 13: DEL AFN AL AFD](https://reader034.fdocuments.mx/reader034/viewer/2022051102/6276f8d67a56a91c9e29a8af/html5/thumbnails/13.jpg)
6) Han aparecido dos estados que no figuraban en la primera columna de la tabla; por lo
tanto, debemos agregarlos, formando dos nuevas filas:
estado a b_____
{0,1,2,4,7,8}- {1..4,6..10} {1,2,4...8}
{1..4,6..10} ? ?
{1,2,4...8} ? ?
para luego proceder como hemos hecho en los puntos (3) y (4), de esta manera:
• hacia ({1..4,6..10}, a) = {3,9}; clausura- ({3}) clausura- ({9}) = {1..4,6..10}
• hacia ({1..4,6..10}, b) = {5,10}; clausura- ({5}) clausura- ({10}) = {5,6,1,7,2,4,8}
{10} = {1..2,4,..8,10}
y
• hacia ({1.2,4,..8}, a) = {3,9}; clausura- ({3}) clausura- ({9}) = {1..4,6..10}
• hacia ({1,2,4..8}, b) = {5}; clausura- ({5}) = {1,2,4..8}
![Page 14: DEL AFN AL AFD](https://reader034.fdocuments.mx/reader034/viewer/2022051102/6276f8d67a56a91c9e29a8af/html5/thumbnails/14.jpg)
Colocamos los estados resultantes completando la Tabla de Transiciones:
estado a b______
{0,1,2,4,7,8}- {1..4,6..10} {1,2,4..8}
{1..4,6..10} {1..4,6..10} {1,2,4..8,10}
{1..2,4..8} {1..4,6..10} {1,2,4..8}
El único estado nuevo que ha surgido como resultado de este último proceso es el
estado {1..2,4..8,10}.
Calculamos entonces las transiciones desde este nuevo estado por ambos caracteres del
alfabeto:
Hacia ({1,2,4..8,10},a) = {3,9}; clausura ({3,9})= {1..4,6..10}
Hacia ({1,2,4..8,10}),b) = {5,11}; clausura ({5,11})= { 1,2,4..8,11}
![Page 15: DEL AFN AL AFD](https://reader034.fdocuments.mx/reader034/viewer/2022051102/6276f8d67a56a91c9e29a8af/html5/thumbnails/15.jpg)
Creamos una nueva fila en la tabla:
estado a b______
{0,1,2,4,7,8}- {1..4,6..10} {1..3,5..8}
{1..4,6..10} {1..4,6..10} {1..3,5..8,10}
{1,2,4..8} {1..4,6..10} {1,2,4..8}
{1,2,4..8,10} {1..4,6..10} {1,2,4,..8,11}
Existe un nuevo estado {1,2,4,..8,11} que es estado final (por contener al estado 11) y debe
ser procesado:
Hacia ({1,2,4..8,11},a) = {3,9}; clausura ({3,9}) ={1..4,6..10}
Hacia ({1,2,4..8,11},b) = {5}; clausura ({5}) ={1,2,4..8}
![Page 16: DEL AFN AL AFD](https://reader034.fdocuments.mx/reader034/viewer/2022051102/6276f8d67a56a91c9e29a8af/html5/thumbnails/16.jpg)
Al no haber nuevos estados, el proceso ha concluido y se ha obtenido la TT de un
AFD que reconcoe el mismo lenguaje
Creamos una nueva fila en la tabla:
Estado a b
{0,1,2,4,7,8}- {1..4,6..10} {1,2,4..8}
{1..4,6..10} {1..4,6..10} {1,2,4..8,10}
{1,2,4..8} {1..4,6..10} {1,2,4..8}
{1,2,4..8,10} {1..4,6..10} {1,2,4..8,11}
{1,2,4..8,11}+ {1..4,6..10} {1,2,4..8}
![Page 17: DEL AFN AL AFD](https://reader034.fdocuments.mx/reader034/viewer/2022051102/6276f8d67a56a91c9e29a8af/html5/thumbnails/17.jpg)
7) Dado que resulta complejo nombrar a los estados según los conjuntos de estados que los
constituyen, los renombramos:
nombre anterior nombre nuevo
{0,1,2,4,7,8}- 0-
{1..4,6..10} 1
{1,2,4..8} 2
{1,2,4..8,10} 3
{1,2,4..8,11}+ 4+
En consecuencia, la Tabla de Transiciones final del AFD que se halla mediante el algoritmo
descripto es:
estado a b
0- 1 2
1 1 3
2 1 2
3 1 4
4+ 1 2
![Page 18: DEL AFN AL AFD](https://reader034.fdocuments.mx/reader034/viewer/2022051102/6276f8d67a56a91c9e29a8af/html5/thumbnails/18.jpg)
Ejemplo 5
Sea el lenguaje representado por la misma ER del ejemplo anterior: (a+b)*ab. Necesitamos
hallar un AFD que reconozca a este lenguaje.
Supongamos que estamos resolviendo el problema manualmente: comenzamos el proceso
con el siguiente AFN obtenido mediante “Semi Thompson”:
a b10
-
a,b
2 +
Análisis de conversión de AFN -> AFD partiendo de un AFN sin transiciones-.
![Page 19: DEL AFN AL AFD](https://reader034.fdocuments.mx/reader034/viewer/2022051102/6276f8d67a56a91c9e29a8af/html5/thumbnails/19.jpg)
Este autómata es un AFN porque desde el estado 0 parten dos transiciones diferentes por el
carácter a: una forma un ciclo, 0 => a => 0, y la otra transita al estado 1, 0 => a => 1.
La TT de este AFN es:
estado a b_
0- {0,1} {0}
1 - {2}
2+ - -
Como no existen transiciones-, la clausura- de cada estado es el conjunto que solo
contiene al mismo estado, por lo que solo se debe calcular, donde corresponda, el
conjunto hacia.
![Page 20: DEL AFN AL AFD](https://reader034.fdocuments.mx/reader034/viewer/2022051102/6276f8d67a56a91c9e29a8af/html5/thumbnails/20.jpg)
A partir de la TT del AFN, obtenemos la TT del AFD equivalente aplicando el método de la
“Construcción de Subconjuntos”, así:
1) El estado inicial del AFD es clausura- (0) = {0};
2) hacia ({0}, a) = {0,1} y hacia ({0}, b) = {0}
estado a b_ {0}- {0,1} {0} {0,1} ? ?
3) hacia ({0,1}, a) = {0,1} y hacia ({0,1}, b) = {0,2}
estado a b__
{0}- {0,1} {0} {0,1} {0,1} {0,2} {0,2}+ ? ?
4) hacia ({0,2}, a) = {0,1} y hacia ({0,2}, b) = {0}
estado a b__ {0}- {0,1} {0} {0,1} {0,1} {0,2} {0,2}+ {0,1} {0}
![Page 21: DEL AFN AL AFD](https://reader034.fdocuments.mx/reader034/viewer/2022051102/6276f8d67a56a91c9e29a8af/html5/thumbnails/21.jpg)
5) Renombrando los estados obtenemos, finalmente, la siguiente tabla de un AFD:
nombre anterior nombre nuevo
0 0
{0,1} 1
{0,2} 2
y la tabla es:
estado a b
0- 1 0
1 1 2
2+ 1 0
Analizando las TTs de los AFDs en los Ejemplos 4 y 5, observamos que son diferentes;
por lo tanto, hemos encontrado dos AFDs diferentes que reconocen al mismo lenguaje.
![Page 22: DEL AFN AL AFD](https://reader034.fdocuments.mx/reader034/viewer/2022051102/6276f8d67a56a91c9e29a8af/html5/thumbnails/22.jpg)
RESUMEN
1. Dos autómatas finitos son equivalentes si reconocen el mismo lenguaje
2. Para todo AFN existe un AFD equivalente
3. La construcción de subconjuntos convierte un AFN en un AFD equivalente
4. La clausura E de un estado es un conjunto que contiene al estado y a todo otro estado
al que llega por transiciones
5. Si R es un conjunto de estados y x es un símbolo del alfabeto, entonces hacia (R,x) es
el conjunto de estados a los cuales se transita por el símbolo x desde los estados de R
que tengan esa transición.
![Page 23: DEL AFN AL AFD](https://reader034.fdocuments.mx/reader034/viewer/2022051102/6276f8d67a56a91c9e29a8af/html5/thumbnails/23.jpg)
1) Convierta los AFNs diseñados en el capítulo anterior a AFDs.
2) Diseñe un AFN que tenga 4 transiciones-, 2 ciclos y 3 estados finales; luego, aplique la
“Construcción de Subconjuntos” para hallar un AFD equivalente.
3) Sea el AFN con las siguiente Tabla de Transiciones:
estado a b __
0- {1,3} {1} {1,2}
1 - {1,2} {1}
2 - {1,4} {1}
3+ {3} {1,2,3} -
Construya el AFD equivalente.
4) Sea el AFN del ejercicio anterior, pero sin las transiciones-. Construya el AFD equivalente.
EJERCICIOS