![]() |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Representando su comportamiento por medio del grafo dirigido: En donde el lenguaje aceptado por esta AFD será:
L AFD1 = {x / x
Accesibilidad
entre estados (A)
Dados
dos estados dentro de un autómata, se dice que uno de los estado es accesible desde
el otro, si existe
una palabra x formada por símbolos del
alfabeto de entrada que hace que partiendo de este estado y a
través de la
aplicación de la función de transición
se pueda llegar hasta el
otro.
Sean
p y q
f´( q , x ) = p
Entonces se dice que:
pAq
( Se lee – p es accesible desde q )
Conjunto Conexo
Si en un AFD existieran estados
que
no son accesibles desde el estado inicial, los mismos pueden ser eliminados, de manera
de simplificar el
autómata. Esta eliminación no afectará
al comportamiento y por lo tanto
continuará aceptando
el mismo Lenguaje.
Ejemplo de conjunto conexo: Dado el siguiente AFD definido como: AFD1 = (
∑, Q,
qi, F, f ), donde:
Q= { p, q, r , t, s } qi = p F= {q ,s }
Donde la función f será:
El Grafo correspondiente será:
Analizando, el grafo del AFD, vemos que alos estados t y s , es imposible acceder desde el estado inicial p, por lo tanto estos estados pueden ser eliminados del AFD y el comportamiento del autómata no se alterará. Equivalencias
en
los AFD
A
continuación presentaremos definiciones de equivalencias
para culminar con
equivalencia entre Autómatas Finitos Deterministas.
Equivalencias entre estados:
Dos estados p y q
serán equivalentes
si: Para toda cadena “
x ” que
desde el estado p hace transitar el autómata hasta un estado
de aceptación,
también lo hace desde el estado q. Debiendo ocurrir
simultaneamente que para
toda otra cadena “ y “ que no
hacen transitar desde el estado p hasta un
estado de aceptación, tampoco lo hará desde el
estado q.
De
esta manera definiremos:
Sean p y q p E q ( Se lee: p y q son equivalentes)
si
Dos estados p y q serán equivalentes de longitud n si: cumplen la equivalencia planteada en la sección anterior pero con la restricción de que la longitud de las cadenas x e y sean menor o igual a n. De esta manera definiremos:
Sean
p y q
p
E q son
equivalentes de longitud
n si
si
Equivalencia
entre AFD
Si ambos autómatas
aceptan las mismas cadenas o sean
que reconocen exactamente el mismo lenguaje. Mediante las relaciones de equivalencias entre estados se efectúa la partición del conjunto de estados en Clases de equivalencias, en la cuál se encontrarán los estados que son equivalentes entre sí. Para lograr el conjunto cociente, se comienza con la relación de equivalencia entre estados de longitud 0, o sea lo que primero se intenta formar el Q/E0, y en el caso de las AFD, este conjunto se subdivide en solo dos clases, los que pertenecen al subconjunto de estados finales de aceptación y los que no pertenecen. Q/E0 = [ {F} , {F}]
Se continuará con
iteraciones
sucesivas, incrementando en 1 la longitud de las cadenas de entrada en
cada
iteración y se verificará si los estados que
siendo equivalentes en una
iteración anterior continúan siendo equivalentes
en la nueva clase de
equivalencia Q/E1.
El proceso iterativo
continuará,
hasta conseguir la clase de equivalencia Q/E y este proceso se
detendrá cuando
un nuevo conjunto en una iteración i+1 se mantiene sin
modificaciones con
respecto al conjunto anterior.
Ejemplo: Dado el autómata, determinar el conjunto cociente mínimo
Resolución: Para la determinación del conjunto cociente, lo que debemos buscar son el mínimo conjuntos de estados que resultan diferentes entre sí y esto lo realizamos a través de la determinación de las clases de equivalencia entre estados. Para ello partimos con la equivalencia de longitud 0 que corresponderá a la división en dos clases. Los estados que son de aceptación por un lado y los que no por otro lado, y luego en un proceso iterativo se continuará verificando los estados que continúen siendo equivalentes a medida que se incrementa en 1 la longitud de las estradas. El proceso finalizará cuando una clase de equivalencia se mantenga constante ante un incremento en la longitud de la entrada.
Q/E0
= [{ F } , {F}] =
[{ r
, t }{ p , q , s }]
Denominaremos con c1 = {r, t} y c2
= {p,q,s}
Lo que debemos hacer ahora, es
verificar si las clases de equivalencias detectadas hasta el momento (
c1 y c2)
continúan siéndolo ante una nueva entrada, o sea
debemos verificar si sus
estados integrantes siguen siendo equivalentes al incrementar la
longitud de la
cadena de entrada.
c1 = {r, t}: Al estar constituido por los estados r y t, con una nueva entrada para cada uno de esos estados deberán coincidir en que transitarán a estados que pertenecen a una misma clase de equivalencia.
Por lo tanto f ( c1, a ) = van conjuntos cocientes diferentes de la clase anterior, y por lo tanto los estados r y t no podrán seguir siendo equivalentes. No ocurre lo mismo con una entrada b, ya que f(c1,b) van a una misma clases de equivalencia anterior.
Pero con que al menos con una
entrada no vaya a una misma clase anterior, los estados r y t no
serán
equivalentes y por lo tanto deberán ser separados del
conjunto c1.
c2 = {p, q, s}:
Veremos como transitan ante una
nueva entrada (long. 1)
Vemos que los estados p y s pertenecientes a c2 podrán continuar siendo equivalentes ya que sus salidas a las entradas respectivas caen dentro de una misma clase de equivalencia anterior. No ocurre lo mismo con el estado q que deberá ser separado de la clase de equivalencia c2. Por lo tanto Q/E1, nos quedará:
Q/E1
= [{ r } , { t } ,
{ q }, {p , s }]
Denominaremos con d1 = {r} ; d2 =
{t} ; d3 = {q} ; d4
= {p,s}
Ahora debemos comprobar, si
incrementando en uno la cadena de entrada los estados p y s
continúan siendo equivalentes.
d4 = {p, s}:
Veremos que pasa con una nueva
entrada para cada uno de esos estados.
De esta manera, se verifica que
ante
una nueva entrada, los estados p y s que son equivalentes,
continúan siéndolo.
Q/E2
= [{ r } , { t } ,
{ q }, {p , s }]
Vemos ahora que: Q/E1
= Q/E2, por lo tanto el proceso se
detiene, y las clases de equivalencias resultan:
Q/E
= [{ r } , { t } ,
{ q }, {p , s }]
Denominaremos con d1 = {r} ; d2 =
{t} ; d3 = {q} ; d4
= {p,s} a los estados, y el
nuevo autómata nos quedará: AFD3 ´= ( { a , b }, { d1, d2 , d3, d4 }, d4, {d1, d2}, f ) , donde:
Minimización
de
AFD
El
objetivo de minimización de los AFD, es obtener un
autómata equivalente al
dado, o sea que aceptará el mismo lenguaje,
pero este nuevo autómata
contendrá un menor número de estados.
Los
pasos a realizar para la obtención del autómata
mínimo son los siguientes:
·
Se
debe encontrar el autómata conexo,
para estos el autómata debe cumplir que todos sus estados
sean accesibles desde
el estado inicial. Si existiera algún estado que no
cumpliera con esta
condición se lo podrá eliminar, sin que se afecte
el lenguaje aceptado por el
autómata.
·
Determinar
el Conjunto cociente, en el
cuál nos
indicará el mínimo número de estados
con diferente significado.
· Construir
el nuevo autómata, para ello se utilizarán los
estados determinados por las clases de equivalencia. El estado inicial
del
nuevo autómata, pertenecerá a la clase de
equivalencia en donde se encuentre el
estado inicial del autómata original, y los mismo
ocurrirá con los estados
finales de aceptación, en donde serán los que
pertenezcan a clases de
equivalencias donde se encuentren estados finales de
aceptación del autómata
original. Con respecto a las transiciones de los nuevos estados, estas
se
realizarán en función a las transiciones de los
estados que conforman la clase
de equivalencia respectiva.
Ejemplo: AFD4 = ( ∑, Q, qi, F, f ), donde: ∑= { a , b }
Q= { p, q, r , t, s } qi = p F= {q , r }
Se pide :
a)
Grafo
b)
Autómata conexo
c)
Conjunto Cociente
d)
Autómata
mínimo
e)
Grafo del nuevo
autómata
f)
Identificar
una cadena de longitud 5 y verificar que la misma es aceptada por ambos
autómatas
Resolución: a) Grafo del Autómata
b) Autómata Conexo
Se verifica la accesibilidad de
estados desde el estado inicial, y vemos que los estados t y q resultan
inaccesibles, por lo tanto pueden ser descartados y nos queda un nuevo
AFD4
´, de la siguiente manera: AFD4 ´ = ( { a , b }, { p, r , s }, p, { r }, f ´) , donde:
Y el nuevo grafo será: ![]()
c) Conjunto cociente
Para la
determinación del conjunto
cociente, lo que debemos buscar son el mínimo conjuntos de
estados que resultan
diferentes entre sí y esto lo realizamos a través
de la determinación de las
clases de equivalencia entre estados.
Para
ello partimos con la equivalencia de longitud 0 que
corresponderá a la división
en dos clases. los estados que son de aceptación por un lado
y los que no por
otro lado.
Q/E0 = [
{p, s}, {r}]
Denominaremos con c1 = {p, s} y c2
= {r}
Lo que debemos hacer ahora, es
verificar si las clases de equivalencias detectadas hasta el momento
continúan
siéndolo ante una nueva entrada, o sea debemos verificar si
sus estados
integrantes siguen siendo equivalentes al incrementar la longitud de la
cadena
de entrada.
Por lo tanto, lo verificaremos
para
c1 = {p, s}. Al estar
constituido por los estados p y s, con una nueva entrada para cada uno
de esos
estados deberán coincidir en que transitarán a
estados que pertenecen a una
misma clase de equivalencia.
f (
p , a ) = s
f
( s , a ) =
p
La salida con la entrada a son
los estados s , p
que pertenecen a una
misma clase de equivalencia anterior por lo tanto, podemos decir que
f
( c1, a ) = c1
Con respecto a la entrada b:
f (
p , b ) = r
f
( s , b ) =
r
La salida con la entrada b es
el
estado r por lo tanto, podemos decir que
f ( c1, b ) = c2
Con lo que se puede afirmar,
que la
clase de equivalencia c1, continúa siéndolo para
una nueva entrada y por lo
tanto:
Q/E1 = [
{p, s}, {r}]
Ahora como Q/E0
= Q/E1 el proceso se
detiene y la
clase equivalencia con el
mínimo número de estados será
Q/E = [
{p, s}, {r}] = [
{c1}, {c2}]
d) Autómata
mínimo: AFD4 ´´ = ( { a , b }, { c1, c2 }, c1, { c2 }, f´´ ) , donde: El estado inicial del nuevo autómata será c1, ya que en este se encuentra contenido el estado p que era el estado inicial del autómata equivalente. Con respecto al estado c2, que es el estado final de aceptación, lo es ya que tiene incluido al estado r que lo era anteriormente. Para el armado de la nueva función de transición, lo haremos siguiendo las transiciones originales de cada uno de los estados que componen el estado resultante de la clase de equivalencia, por lo tanto nos queda:
e) Nuevo Grafo ![]()
f) Verificación:
Dadas
dos cadenas x1 y x2 ambas de longitud 5, verificaremos si ambos
autómatas son
capaces de reconocerlas
x1
= aabbb
x2
= baaab
f ( p, x1 )
= r
f ( p, x2 )
= r
En ambas cadenas al estado que
se
llega es r, el cuál pertenece
al
conjunto F por lo tanto ambas cadenas x1 y x2 son aceptadas por el
autómata AFD4.
Para el caso del AFD4´´
f ( c1, x1 )
= c2
f ( c1, x2 )
= c2
En ambas cadenas al estado que
se
llega es c2, el cuál pertenece
al
conjunto F por lo tanto ambas cadenas x1 y x2 son aceptadas por el
autómata AFD4´´. Configuración instantánea y movimientoEl concepto de configuración instantánea o descripción instantánea, permite describir la configuración del autómata en cada momento. Configuración Inicial: Se establecerá como: ( q0 , x ) ; donde q0 será el estado inicial, y x la cadena a ser leida Configuración Final: Se
establecerá como:
( qn, Movimiento: Es
la transición de una configuración
a otra: (
p, a ) este movimiento será posible, solo si existe una transición mediante la aplicación de: f( p , a ) = q
Implementación de un
Algoritmo
Dentro
de los usos que se le pueden dar a las máquinas de estados,
y en particular a
los AFD, está el reconocimiento de cadenas. Para realizar
este reconocimiento
en forma precisa y automatizada, el mismo puede implementarse en
cualquier
lenguaje de programación.
Será posible que
habiendo diseñado
un autómata que sea capaz de reconocer un conjunto de
cadenas de un lenguaje,
construir un programa que implemente dicho autómata en
algún lenguaje de
programación, a tal fin el Algoritmo de funcionamiento del
programa puede ser
obtenido a partir del AFD en forma directa.
Ejemplo: AFD5 = ( {0,1}, {p,q,r,s,t}, p, {q}, f ), donde: Donde la función f :
El Grafo será:
El lenguaje aceptado por esta
autómata es:
L AFD5 = { x / x
Diagrama de flujo de algoritmo:
El diagrama de flujo elemental, asumiendo que en la entrada solo se ingresarán símbolos a y b, y que siempre se ingresará al menos un carácter válido es el siguiente:
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
GHD © Copyright 2006-2007. Todos los derechos reservados. |