Está en la página 1de 20

Equivalencia entre AFD y AFND.

Hemos definido la equivalencia para los AFD. Extenderemos esta definición


para la clase de todos los autómatas finitos (AFD y AFND)de forma que un
autómata M es equivalente a un autómata M’ si L(M) = L(M’).

Ya que una función es un caso especial de relación (es decir, las funciones
son relaciones que poseen requerimientos adicionales), las funciones de los AFD
se consideran como relaciones en los AFND. En consecuencia, todo AFD es un
AFND. La colección d lenguajes aceptados por los AFND incluye a todos los
lenguajes aceptados por los AFD. De esto resulta que los AFND solo aceptan
lenguajes aceptados por los AFD. Por lo tanto, los AFND no son más potentes que
los AFD con respecto a los lenguajes que aceptan. Para probar esto, necesitamos
demostrar que todo lenguaje aceptado por un AFND también es aceptado por
algún AFD.

Sean M=(Q,,S,F,) un AFND. En el tema anterior presentamos una forma de


recorrer M, de la cual se obtenía la colección de todos los estados accesibles
desde el estado inicial en cada una de las etapas de análisis de una cadena. Estas
técnicas proporcionan la base para construir un AFD M’=(Q’,’,S’,F’,’) que acepte
el mismo lenguaje que M. Esencialmente, lo que se pretende es hacer que cada
estado Q’ se corresponda con un conjunto de estados Q. Cuando se analiza una
cadena con M, esta se acepta cuando la colección finadle estados contiene al
menos un estado de aceptación perteneciente a F. por tanto, haremos que F’ sea
el conjunto de estados de Q’ que se correspondan con los conjuntos de estados
(de Q) que contienen un estado de F. haremos corresponder a S’ con el conjunto
{S}.’= y definiremos  de forma que nos desplacemos de un conjunto de
estados de M a otro, como se hace .

Ahora demostraremos formalmente que todo lenguaje aceptado por un AFND


es también aceptado por un AFD, con lo que probaremos que los lenguajes AFND
y los lenguajes AFD están formados por la misma colección de lenguajes.

Teorema 1.- Sea M=(Q,,S,F,) un AFND. Entonces existe un AFD M’=


(Q’,’,S’,F’,’) que es equivalente a M.
Demostración: Definamos M’=(Q’,’,S’,F’,’) como sigue: sea S’={S}, ’=,
Q
Q’=2 (que es la colección de todos los subconjuntos de Q) y F’ la colección de
todos los conjuntos de Q’ que contienen estados de F. Para cada conjunto
(qi1,qi2,qin) de Q’ y cada símbolo de entrada  de , definiremos a como:

({qi1, qi2, …,q1n},) ={p1,p2,…pk)


({qi1,qi2,…,qin},) = {p1,p2,…,pk}

Obsérvese que , definida de esta forma, es una función Q’x’ en Q’, puesto
que esta bien definida para todos los elementos de Q’x’.
Para probar que L(M) = L(M’), debemos demostrar que para toda la cadena
w, (S’,w)={p1,p2,…,pj} si y solo si  (S,w)={p1,p2,…,pj} con lo cual M’ acepta w si y
solo si M acepta w. Probaremos esto por inducción sobre la longitud de w. Si la
longitud de w es 0 (es decir w=), entonces:
(S,w)= (S,) = {S} =  (S’,w)

Ahora supongamos que para toda cadena w de longitud menor o igual que m
se tiene que (S,w)=(S’,w). Supongamos que u es una cadena de longitud m+1.
Entonces, existirá algún , de forma que se obtiene que u=w, donde w es una
cadena de longitud m. En este caso, (S’w) = ((S’,w),). Ahora, por la
hipótesis de inducción, dado que w tiene longitud m, (S’,w)= {p1,p2,…,pj} si y solo
si (s,w)={p1,p2,…,pj}.Pero por la forma en la que hemos definido , tendremos
que:

({p1,p2,…,pj},) = {r1,r2,…,rk}
si y solo si
({p1,p2,…,pj},)= {r1,r2,…,rk}

Por lo que (S’,w) = {r1,r2,…,rk} si y solo si  (S,w) = {r1,r2,…,rk}. Es decir,


la igualdad se cumple para cadenas de longitud m+1 si se cumple para cadenas
de longitud m. Entonces por lo anterior tenemos que (S’,w) es un estado de F’ si y
solo si (S,w) contiene algún estado de F. Por tanto M’ acepta w si y solo si M
acepta w.

Propiedades de los lenguajes aceptados por un autómata finito.

Para un alfabeto  se pueden construir los AFND (y los AFD) que acepten
palabras unitarias. Para ello se puede construir, incluso un AFND que acepte el
lenguaje vacío .
Supongamos que M1= (Q1,1,S1,F1,1) y M2=(Q2,2,S2,F2,2) son AFND.
Podemos unir M1 y M2 en un nuevo AFND que acepte L(M 1)L(M2), añadiendo un
nuevo estado inicial S y dos -transiciones, yna de s a si y otra de S a s2. La
construccion formal de este nuevo AFND M=(Q,,S,F,) viene dado por =12,
F=F1F2 y Q=Q1Q2{S}, donde S es el nuevo estado inicial y  se define de
forma que se incluyan todas las transiciones de 1,2 y las dos nuevas -
transiciones de s a s1 y s2. Conviene considerar las relaciones de transición 1 y 2
como colecciones de ternas ordenadas de Q 1xxQ1 y Q2xxQ2, donde (q,,p)
significa que existe una transición de q a p mediante el carácter  8es decir, pi
(q,)). Usando esta notación se puede definir:
=12{(s,,s1),(s,,s2)}

Teorema.- El conjunto de lenguajes aceptados por un autómata finito sobre el


alfabeto  contiene  y los lenguajes unitarios {a} para todo a. Este conjunto es
cerrado con respecto a la unión, concatenación y la cerradura de estrella.
Dada una expresión regular r para construir un AFND (con -transiciones en
todos los lados excepto para expresiones regulares triviales), podemos aplicar las
técnicas precedentes a los términos de las expresiones regulares. Por tanto, todo
lenguaje regular es aceptado por un autómata finito. Lo reciproco también es
cierto, como veremos en el Lema de Arden. Es decir, todo lenguaje aceptado por
un autómata finito es también un lenguaje regular. Por lo tanto, el conjunto de los
lenguajes regulares es el mismo que el conjunto de lenguajes aceptados por un
autómata finito.
Consideremos el autómata finito M=(Q,,S,) y supongamos que s=q 0 es el
estado inicial. Para todo estado qi sea:
Ai={w* |  (q1,w)F}
Es decir, Ai es el conjunto de las cadenas sobre  quehacer que M pase
desde qi hasta un estado de aceptación. Se dice que A i = . Si qiF, entonces se
tiene que Ai.

Lema de Arden: Una ecuación de la forma X=AXB, donde A, tiene una
solucion única X=A*B.
Demostración: Obsérvese que A*B=(A+) B=A+BB=A(A*B)B. por tanto,
A*B esta contenida en toda solución. Supongamos que X=A*BC es una solución,
donde CA*B=. Si resustituye la expresión anterior en la ecuación X=AXB, se
obtiene

A*BC= A(A*BC)B
= A+BACB
= A+BBAC
= (A+)BAC
= A*BAC
Teorema de Kleene: Un lenguaje es regular si y solo si es aceptado por un
autómata finito.

Autómatas finitos y expresiones regulares.


Una expresión regular para un alfabeto  se define como:
  es una expresión regular
 Cada miembro de  es una expresión regular
 Si p y q son expresiones regulares, entonces también lo es (p  q)
 Si p y q son expresiones regulares, entonces también lo es (p  q)
 Si p es regular, entonces también lo es p *
Para cada expresión regular r de un alfabeto  representa un lenguaje L(r). Además, si p
y q son expresiones regulares, L(p  q) = L(p)  L(q), L(p q) = L(p) L(q) y L(p*) = L (p)
*
.
Las expresiones regulares también especifican lenguajes (al igual que diagramas tablas,
autómatas y gramáticas) . Son una manera concisa de expresar lenguajes regulares (en una
sola línea se puede describir un autómata finito completo).
Teorema.- Dado un alfabeto  (tiene que ser el mismo), los lenguajes regulares de  son
exactamente los lenguajes representados por las expresiones regulares de .
Demostración.- Lo primero que hay que tener en cuenta es que un lenguaje representado
por una expresión regular es regular (demostrado en los subapartados anteriores). Lo
siguiente que haremos será representar con una expresión regular cualquier lenguaje
aceptado por un autómata finito. Además, vamos a considerar válidos unos diagramas, que
llamaremos generalizados, en los que los arcos van a estar etiquetados con expresiones
regulares, en lugar de sólo símbolos. Para ello, vamos a ir reduciendo el diagrama hasta
tener solo uno o dos estados:
a. Llamemos T al diagrama de transiciones original. Se hacen tantas copias de
T como estados de aceptación haya. Cada T i tendrá sólo un estado de
aceptación distinto. La expresión regular resultante será la unión de cada
una de las expresiones resultantes de cada Ti (T = T1  T2  ....  Tn)
b. Considerando por separado cada Ti, y para ir reduciendo el diagrama
estado por estado, se usan las operaciones que se definieron
anteriormente:
c. Unión.- Si hay varios arcos que conectan en la misma dirección dos
estados, estos se puede sustituir por uno etiquetado con la unión de las
expresiones de esos arcos
d. Estrella de Kleene.- La expresión regular será la unión de las etiquetas de
los arcos que salen e inciden en un mismo estado
e. Concatenación.- Hay dos casos: dado un estado, si solo tiene un arco
incidente y otro saliente, la expresión resultante será la concatenación de
las etiquetas del arco incidente y la del saliente; si en el estado tiene un
arco solo incidente, arcos que salen e inciden en el mismo estado y un solo
arco saliente, la expresión resultante será la concatenación de la etiqueta
del arco incidente, la estrella de Kleene de la unión de las etiquetas de los
arcos que iban del estado al mismo y la etiqueta del arco saliente por ese
orden.
Estas operaciones se van aplicando estado a estado, de manera que nos van quedando
sucesivamente diagramas con n estados, n-1 estados, ..., 3 estados, y 2 ó 1 estado. En estos
dos últimos casos:
a. Si el diagrama T queda con sólo un estado, que es inicial y de aceptación a
la vez, la expresión resultante es la estrella de Kleene de la unión de las
etiquetas de los arcos que salen e inciden en este mismo estado.
Que T quede con dos estados, uno inicial, y el otro de aceptación. Aquí se pueden tener
alguno o todos de estos 4 arcos: (r)del inicial al inicial, (s) del inicial al de aceptación, (t) de
aceptación a aceptación y (u) de aceptación al inicial. Si s no existe entonces la expresión
regular es la cadena vacía, pues no se puede llegar a algún estado de aceptación. Si existe s
pero no u entonces la expresión regular es (r* s  t*). Si existe u entonces la expresión
queda ((r*  s  t*)  (u  (r*  s  t*))*). Si r y t no existen son sustituidos por . Aquí r*
representa la unión de las etiquetas de los arcos que salían y entraban en el mismo estado,
como se dijo anteriormente.
Determinación de lenguajes regulares y no regulares.

Es importante preguntarse su dado un lenguaje L, ¿L es regular?. Desde


luego, si L es finito, es regular, y de podrá construir un autómata finito o una
expresión regular para ellos de forma sencilla. También si L es especificado ya sea
por medio de un autómata finito o por una expresión regular, la respuesta es obvia.
Por desgracia, hay relativamente pocos lenguajes que sean regulares y, en el caso
de un lenguaje infinito, la búsqueda exhaustiva de una expresión regular o un
autómata finito puede resultar inútil. En este caso, se necesita obtener algunas
propiedades que compartan todos los lenguajes regulares infinitos y que no estén
presentes en los lenguajes no regulares.

Supongamos que un lenguaje es regular y que, por tanto, es aceptado por un


AFD M=(Q,,S,F,) donde Q tiene n estados. Si L(M) es infinito, podremos
encontrar cadenas cuya longitud sea mayor que n. Supongamos que w=a 1 a2 ..
an+1 es una de las cadenas de longitud n+1 que pertenece a L(M). Si tuviéramos
q1 =  (S,a1)
q2 =  (q1,a2)
y así sucesivamente, obtendríamos los n+1 estados q 1, q2, …, qn+1 . Puesto que
Q contiene sólo n estados, los que q i no serán todos distintos. En consecuencia,
oara algunos índices j y k, con 1  j < k  n+1, se obtendrá que qj=qk. Por lo tanto,
tendremos un ciclo en el camino que parte de S hasta un estado de aceptación.

Puesto que j < k, se tiene que la “parte central” es decir a j +1 … ak, tiene al
menos longitud 1. Obsérvese además que la cadena w’=a 1…aj ak+1 … an+1 debe
pertenecer también a L(M) para todo m0. Es decir, se puede “bombear” cero o
mas veces la parte central y seguir teniendo una cadena que sea aceptada por el
autómata.

Lema de bombeo.- Sea L un lenguaje regular infinito. Entonces hay una


constante n de forma que, si w es una cadena de L cuya longitud es mayor o igual
que n, se tiene que w=uvx, siendo uvi xL para todo i 0, con |v|  1 y |uv|  n.

El lema de bombeo presenta una propiedad que debe tener todo lenguaje
regular y nos facilita una forma de determinar si un lenguaje no es regular. Para
demostrar que un lenguaje no es regular, se mostrará que para cualquier valor n lo
bastante grande, se tendrá al menos una cadena de longitud n o mayor que falle al
ser “bombeada”.
Por ejemplo, considérese el lenguaje
L={ai2 | i  1}
Toda la cadena de L debe tener una longitud que sea un cuadrado perfecto.
Supongamos que L es regular y sea n la constante dada en el lema de bombeo.
Obsérvese que an2  L y que, por el lema de bombeo, tenemos que a n2 = uvx de
forma que
1  |v|  n y uvix  L para todo i  1. Entonces se obtiene que:

n2 = |uvx|
< |uv2x|
 n2 + n
< (n+1)2
Es decir, la longitud de uv2x no puede pertenecer a L, es decir, L no puede
ser regular.

Autómatas bidireccionales

Hasta ahora los autómatas que hemos considerado leen su entrada de izquierda a derecha y
no reculan sobre ella para realizar transiciones alternativas en función de la ``historia'' de la
entrada. Los autómatas bidireccionales en cambio, sí pueden revisar la cadena de entrada y
efectuar transiciones en función de una misma entrada leída varias veces. Veamos una
formalización de esta noción de autómatas finitos.
Un autómata bidireccional es una estructura de la forma

donde

La semántica del autómata es muy intuitiva: Si se está leyendo la i-ésima posición de una
palabra de entrada, en la cual aparece el símbolo e, y se está en el estado q entonces,

 si se pasa al estado p y a revisar la posición i-1 de la


cadena de entrada,

 si se pasa al estado p y a revisar la posición i+1 de la


cadena de entrada.

Para llevar un recuento de las transiciones del autómata utilizaremos descripciones


instantáneas (DI's). Una DI es una cadena
que indica que la palabra de entrada actual es , se está leyendo el

símbolo e y se está en el estado q: o bien de la forma

, que indica que se ha arribado al estado q y se ha concluido la


lectura de la palabra de entrada.

Diremos que una DI se sigue de otra ,

, si es el resultado de aplicar la transición correspondiente a d0.

Formalmente,

La cerradura reflexivo-transitiva de la relación ``se sigue'' es la relación ``se deriva'',

denotada como .

Una palabra es reconocida por el autómata bidireccional si para algún estado

final se tiene . Es decir, una palabra es reconocida si para cuando


se concluya su lectura se haya arribado a un estado final. El lenguaje reconocido por el
autómata bidireccional es

Un lenguaje es regular-B si es reconocido por un autómata bidireccional.

Ejemplo

El autómata bidireccional que


 avanza a la derecha hasta que hayan aparecido dos 1's, y
 retrocede a la derecha hasta encontrar un 0, en cuyo caso reentra al estado
inicial,
tiene como transición a la siguiente:

El estado inicial es q0.


Si q1 se designa como estado final, entonces se reconocerá a palabras de la forma
0*(010*)*010*.

Ejemplo

Consideremos el semiautómata bidireccional de 6 estados sobre el alfabeto de dos


símbolos A=[a,b]:

Una palabra que termina de leerse es . En la tabla (3.16) se ve la acción

de sobre .

Table: Acción de sobre .


Una palabra con un prefijo de 4 a's hace que se salga por la izquierda de la

cadena de entrada. En efecto, consideremos . En la

tabla (3.17) se ve la acción de sobre .

Table: Acción de sobre .

Una palabra que cicla es . En la tabla (3.18) se ve la acción de

sobre .

Table: Acción de sobre .


Si se ve la entrada del autómata como inscrita en una cinta con casillas contiguas, en cada
una de las cuales se inscribe un símbolo, entonces en una palabra de k símbolos habrá k+1
separadores de casillas. Si la palabra de entrada fuese , al escribir
explícitamente a los separadores, podríamos re-escribir a como

En la figura (3.8) presentamos un diagrama de esta presentación.

Figure 3.8: Cadena de entrada y


separadores en un AB.

La aplicación de la palabra de entrada en el autómata determina una sucesión de cruce Si


en cada uno de los separadores si, de acuerdo con la construcción siguiente:
1.

Inicialmente hacemos y para cada i>0, .


2.

Posteriormente, si es la descripción instantánea actual,

es tal que y e está en la posición j,


entonces
Con estas reglas, toda sucesión de cruce ha de comenzar con una pareja de la forma
correspondiente a un movimiento a la derecha, y los movimientos correspondientes a dos
parejas sucesivas en una misma sucesión de cruce habrán de alternarse. Por tanto, al cabo
de la lectura de una palabra de entrada, en cada separador, la correspondiente sucesión de
cruce ha de tener un número impar de elementos. Además, en el caso de que se haya
aplicado una palabra que es efectivamente reconocida, ninguna sucesión de cruce puede
tener dos apariciones de una misma pareja (en otro caso la ``computación'' se ciclaría).

Ejemplo
Para la palabra de longitud 6, 101001, las 7 sucesiones de cruce en el semiautómata

bidireccional son las mostradas en la tabla 3.19.

Table: Sucesiones de cruce para el autómata bidireccional .

Ejemplo
Para la palabra de longitud 12, , las 13 sucesiones de cruce en el

semiautómata bidireccional son las mostradas en la tabla 3.20.

Table: Sucesiones de cruce para el autómata bidireccional .

De manera general, diremos que una sucesión de cruce es una lista de parejas de la forma
tal que
 los movimientos en la sucesión se van alternando, y
 ninguna pareja se repite en la sucesión.

Por razones que se aclararán más adelante, diremos que una sucesión de cruce es derecha si
comienza con un movimiento a la derecha y es de longitud impar. Simétricamente, diremos
que es izquierda si comienza con un movimiento a la izquierda y es de longitud par.
Si hay n estados en el autómata bidireccional, entonces ninguna sucesión de cruce puede

tener más de 2n elementos. Además, para cada hay sucesiones de cruce de

longitud 2j-1 que comiencen con el movimiento . Por tanto, con n estados, hay

posibles sucesiones de cruce derechas. El crecimiento de Cn es muy rápido como


se ve en la tabla (3.21).

Table 3.21: Crecimiento del número máximo de sucesiones de cruce.

En resumen, el conjunto de sucesiones de cruce para un autómata bidireccional siempre es


finito. Por esto, tendremos que todo autómata bidireccional será equivalente a uno finito
no-determinista. Los estados de éste último serán precisamente las sucesiones de cruce
derechas posibles. En lo que resta de esta sección, veremos cómo convertir un autómata
bidireccional a uno finito equivalente.
Observemos en las tablas (3.19) y (3.20) que cualesquiera dos sucesiones de cruces
contiguas ``concuerdan'' entre sí en el sentido de que sus construcciones son consistentes
con el funcionamiento del correspondiente autómata bidireccional.
Ahora bien, diremos que dos sucesiones de cruce S1, S2 concuerdan para un símbolo

si para alguna palabra , en la cual e aparezca en una posición,


digamos i, se tiene que S1 aparece como subcadena de la sucesión de cruce Si-1, S2 aparece
como subcadena de Si y ambas cadenas forman la ``traza'' del funcionamiento del autómata
bidireccional sobre la palabra . Diremos que S1 concuerda yendo a la derecha con S2 si la
traza inicia con el primer elemento de S1 y el movimiento correspondiente es a la derecha.
Similarmente, diremos que S2 concuerda yendo a la izquierda con S1 si la traza inicia con el
primer elemento de S2 y el movimiento correspondiente es a la izquierda.
Para poner esto en términos más precisos:
D.1
La sucesión vacía concuerda yendo a la derecha consigo misma para
cualquier símbolo e.
I.1
La sucesión vacía concuerda yendo a la izquierda consigo misma para
cualquier símbolo e.
D.2
Si S1 concuerda yendo a la derecha con S2 para el símbolo e y

entonces la sucesión concuerda yendo a la


derecha con S2 para el símbolo e.

En efecto, la pareja indica que se atraviesa al separador si-1 hacia la


derecha para leer el símbolo e, y luego, por la acción del AB, se vuelve a atravesar
si-1 pero ahora hacia la izquierda.
I.2
Si S2 concuerda yendo a la izquierda con S1 para el símbolo e y

entonces la sucesión
concuerda yendo a la izquierda con S1 para el símbolo e.
En efecto, estamos en una situación simétrica de la anterior.
D.3
Si S2 concuerda yendo a la izquierda con S1 para el símbolo e y

entonces concuerda yendo a la derecha con

para el símbolo e.

En efecto, la pareja indica que se atraviesa a si-1 hacia la derecha para


leer el símbolo e, y luego, por la acción del AB, se atraviesa si hacia la derecha
también. Posteriormente para mantener la concordancia es necesario que S2
concuerde yendo a la izquierda con S1.
I.3
Si S1 concuerda yendo a la derecha con S2 para el símbolo e y

entonces concuerda yendo a la izquierda con

para el símbolo e.
En efecto, estamos en una situación simétrica de la anterior.
Se sigue inmediatamente lo siguiente:
1.
Si S1 concuerda yendo a la derecha con S2, entonces ambas sucesiones S1
y S2 son derechas.
2.
Si S2 concuerda yendo a la izquierda con S1, entonces ambas sucesiones
S1 y S2 son derechas.
3.
Para cualquier palabra que se lea por completo en el autómata

bidireccional, si es su sucesión de sucesiones de cruce, entonces:


(a)
cada Si es una sucesión de cruce derecha,
(b)
cada Si-1 concuerda yendo a la derecha con Si, para el i-ésimo símbolo de la
palabra .
Proposición 5.1 (Equivalencia de los autómatas bidireccionales con los no-
deterministas) Todo lenguaje regular-B es regular-N, y consecuentemente es
también regular. Es decir, todo autómata bidireccional es equivalente a un
autómata no-determinista, y consecuentemente a un autómata finito.

En efecto, sea un autómata bidireccional. Construyamos el


autómata no-determinista siguiente:
estados:

,
estado inicial:

,
estados finales:

,
transiciones:

Es fácil ver que ambos autómatas son equivalentes pues una ``computación reconocedora'',
en el autómata no-determinista, corresponde a una lectura por columnas como las
presentadas en las tablas 3.19 y 3.20, correspondientes a sendas ``computaciones
reconocedoras'', en sus respectivos autómatas bidireccionales. El recíproco también vale.

El autómata descrito en la demostración anterior es muy extenso y seguramente ha de


contener una gran cantidad de estados inaccesibles. Como una primera aproximación para
reducir el tamaño del autómata equivalente podemos calcular sólo aquellas sucesiones de
cruce que potencialmente pueden concordar, según lo permita la función de transición del
autómata bidireccional.
Describamos un procedimiento que dado un símbolo a produce sendas listas de parejas de
sucesiones de cruce que concuerdan yendo por la derecha, abreviado ConcDer, y yendo por
la izquierda, abreviado ConcIzq, respecto al símbolo a. Para cada una de las dos relaciones,
ConcDer y ConcIzq, utilizaremos un arreglo de palabras a revisar y otro de palabras ya
revisadas.
1.

Inicialmente consideramos la sucesión de cruce vacía . La pareja


se coloca en la lista de parejas a revisar, en tanto que la lista de parejas
revisadas es vacía, para cada una de las dos relaciones de concordancia.
2.
Por cada pareja de sucesiones que quede por revisar,
(a)

se toma la primera pareja a revisar según ConcDer para pasarla a


las ya revisadas tras el procesamiento que aquí describimos,
(b)
para cada estado q sea el resultado de leer a en el estado q y

para cada pareja entre las revisadas o por revisar de la relación


ConcIzq:

 si entonces consideramos la pareja , para


colocarla en la lista de las parejas a revisar según la relación
ConcDer, si es que es la primera vez que aparece,
 si entonces consideramos la pareja

, para colocarla en la lista de las


parejas a revisar según la relación ConcDer, si es que es la primera
vez que aparece,

(c)
luego procedemos de manera dual, es decir, se toma la primera pareja

a revisar según ConcIzq para pasarla a las ya revisadas tras el


procesamiento que aquí describimos,
(d)

para cada estado q sea el resultado de leer a en el estado q y

para cada pareja entre las revisadas o por revisar de la relación


ConcDer:
 si entonces consideramos la pareja

, para colocarla en la lista de las


parejas a revisar según la relación ConcIzq, si es que es la primera
vez que aparece,

 si entonces consideramos la pareja


, para colocarla en la lista de las
parejas a revisar según la relación ConcIzq, si es que es la primera
vez que aparece,

3.
Las listas de parejas revisadas han de concordar.
El procedimiento descrito produce aún una gran cantidad de sucesiones de cruce, aunque
efectivamente está descartando a muchísimas sucesiones irrelevantes.

Ejemplo

Volvamos al autómata . El algoritmo anterior produce 48 parejas de sucesiones de


cruce derechas, de manera que la primera concuerda con la segunda yendo a la derecha,
respecto al símbolo 0. En la tabla (3.22(a)) las enlistamos en su orden de aparición con el
algoritmo descrito. Sin embargo, ahí aparecen también sucesiones que tienen elementos
repetidos. En la tabla (3.22(b)) suprimimos esas sucesiones.

Table 3.22: (a) Las 48 parejas de sucesiones de cruce derechas, de manera que la
primera concuerda con la segunda yendo a la derecha, respecto al símbolo 0. (b)
Las 7 parejas de la tabla (a) sin sucesiones con elementos repetidos.

En la tabla (3.23) enlistamos las parejas de sucesiones de cruce derechas, de manera que la
primera concuerda con la segunda yendo a la derecha, respecto al símbolo 1, también en el
orden de aparición con el algoritmo descrito.

Table 3.23: Las 10 parejas, de manera que la primera concuerda con la segunda
yendo a la derecha, respecto al símbolo 1.

Para el autómata , de 6 estados, este algoritmo da un número extremadamente


grande de sucesiones relacionadas.

Como otra alternativa, en vez de generar todas las sucesiones de cruce plausibles, con cierta

noción de plausibilidad, partiendo de la sucesión de cruce primera , dada una


sucesión de cruce actual calcularemos a todas aquellas que concuerdan con ella yendo a la
derecha para cada uno de los símbolos en el alfabeto de entrada.

Para esto, definimos dos relaciones y de manera tal que para


cualesquiera dos sucesiones de cruce S y T:
Diremos que una pareja es ``de zig-zag'', respecto al símbolo a si en la

transición del autómata bidireccional se tiene . Diremos también que un estado q

es un ``antecedente'' de si para algún símbolo b se tuviese que .


De manera recursiva, tenemos:
HD.1

.
HD.2

.
HD.3

.
HI.1

es de zig-zag, respecto al símbolo a.


HI.2

.
Utilizaremos un arreglo de sucesiones de cruce a revisar y otro de sucesiones de cruce ya
revisadas.
1.

Inicialmente se coloca la sucesión de cruce en la lista de


sucesiones a revisar y la de revisadas es vacía.
2.
En tanto haya sucesiones por revisar,
(a)
se toma la primera sucesión S a revisar, para pasarla luego a las ya
revisadas,
(b)
para cada símbolo a,
i.

se calcula la lista de sucesiones T tales que ,


ii.
se pone una transición, marcada con a de S a cada tal T,
iii.
la primera vez que aparezca una tal T, se la pone en la lista de sucesiones
a revisar.
3.
La lista de sucesiones revisadas define al autómata no-determinista
equivalente.
Ejemplo

Para el autómata bidireccional , al aplicar el algoritmo anterior se distingue a las


sucesiones de cruce

y con la enumeración de la primer columna, la transición del autómata no-


determinista es

y sobre éste, al calcular el autómata determinista equivalente, obtenemos el


autómata

donde la tabla del lado izquierdo representa una nueva enumeración ahora de los
conjuntos de estados del autómata no-determinista, y la tabla de la derecha, la

transición del nuevo autómata determinista. Este es el equivalente a .

Ejemplo

Para el autómata bidireccional , al aplicar el algoritmo anterior se distingue a 177


sucesiones de cruce para formar el autómata no-determinista AND. Cuando a éste se le
convierte en uno determinista, digamos AD, aparecen 63 estados. El estado 0 de AND
corresponde a la sucesión de cruce . El estado 0 de AD corresponde al conjunto de
estados .

Vimos anteriormente que la palabra se lee por completo en el

autómata y arriba a su estado 3. Cuando aplicamos a AD se llega a su estado 49, el


cual corresponde a la colección de estados de AND

entre los cuales está el estado 1 que corresponde a la sucesión de cruce

Producto de autómatas

Sean y dos autómatas


finitos. Su semiautómata producto se define sobre el producto cartesiano como sigue:
estados:

,
estado inicial:
q01=(q01,q02),
transiciones:

(se tiene un semiautómata porque aún no hay estados finales). Denotemos por

a este semiautómata.
Es evidente que

Así pues, si definimos como conjunto de estados finales al conjunto

entonces una palabra será reconocida por el producto si y sólo si lo es

por alguno de los autómatas o , es decir, en este caso,


Ahora, si definimos como conjunto de estados finales al conjunto

entonces una palabra será reconocida por el producto si y sólo si lo es

por ambos autómatas o , es decir, en este caso,

También podría gustarte