Documente Academic
Documente Profesional
Documente Cultură
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.
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}
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 =12,
F=F1F2 y Q=Q1Q2{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 1xxQ1 y Q2xxQ2, donde (q,,p)
significa que existe una transición de q a p mediante el carácter 8es decir, pi
(q,)). Usando esta notación se puede definir:
=12{(s,,s1),(s,,s2)}
Lema de Arden: Una ecuación de la forma X=AXB, donde A, tiene una
solucion única X=A*B.
Demostración: Obsérvese que A*B=(A+) B=A+BB=A(A*B)B. por tanto,
A*B esta contenida en toda solución. Supongamos que X=A*BC es una solución,
donde CA*B=. Si resustituye la expresión anterior en la ecuación X=AXB, se
obtiene
A*BC= A(A*BC)B
= A+BACB
= A+BBAC
= (A+)BAC
= A*BAC
Teorema de Kleene: Un lenguaje es regular si y solo si es aceptado por un
autómata finito.
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 m0. Es decir, se puede “bombear” cero o
mas veces la parte central y seguir teniendo una cadena que sea aceptada por el
autómata.
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,
Formalmente,
denotada como .
Ejemplo
Ejemplo
de sobre .
sobre .
Ejemplo
Para la palabra de longitud 6, 101001, las 7 sucesiones de cruce en el semiautómata
Ejemplo
Para la palabra de longitud 12, , las 13 sucesiones de cruce en el
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
longitud 2j-1 que comiencen con el movimiento . Por tanto, con n estados, hay
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
para el símbolo e.
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
,
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.
(c)
luego procedemos de manera dual, es decir, se toma la primera pareja
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
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.
Como otra alternativa, en vez de generar todas las sucesiones de cruce plausibles, con cierta
.
HD.2
.
HD.3
.
HI.1
.
Utilizaremos un arreglo de sucesiones de cruce a revisar y otro de sucesiones de cruce ya
revisadas.
1.
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
Ejemplo
Producto de autómatas
,
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
Congruencias de autómatas
es decir para cada símbolo, los estados a los que transita el semiautómata desde
sendos estados equivalentes son también equivalentes. Si `` '' es una
distinguimos como estados finales a las clases de la forma [q] tales que
y dos semiautómatas y
. En símbolos, .
símbolos, .
Así pues, en cada pareja de semiautómatas o autómatas homomorfos que ya
hemos visto, tendremos congruencias de semiautómatas o autómatas y
correspondientes estructuras cocientes. Los ejemplos de homomorfismos de
semiautómatas y de autómatas que ya hemos visto aquí, han de proporcionar
ejemplos de congruencias y de autómatas cocientes.
Teorema
Un lenguaje en aceptado por un A.F.D. es aceptado
por un A.F.N.D.
Demostración
Trivial, ya que todo A.F.D. es un A.F.N.D.
Ver apartado siguiente.
Teorema
Un lenguaje es aceptado por un -A.F.N.D. es
aceptado por un A.F.N.D.
Demostración
Trivial, ya que todo A.F.N.D. es un -A.F.N.D.
Ver algoritmo apartado siguiente.
7. Algoritmo de paso de -A.F.N.D. a A.F.N.D.
Dado un lenguaje L aceptado por el -A.F.N.D.:
A = (E, Q, f, q0, F)
el A.F.N.D. que reconoce dicho lenguaje se construye de
la siguiente manera:
A’ = (E, Q, g, q0, F’)
donde:
0)(}{
0)(
'
0
0
F q Cl si q F
F q Cl si F
F
o
y
g(q, a) = f’(q, a)
Teoría de Autómatas y Lenguajes Formales Tema 3. Autómatas Finitos
Profesor: Jose Ignacio Gómez Espínola Pág. 13
8. Algoritmo alternativo de paso de -A.F.N.D. a
A.F.N.D.
1. Calcular la clausura de todos los estados del -A.F.N.D.
que tienen transiciones nulas.
2. Copiar la tabla de transición excepto la columna
correspondiente a la cadena vacía.
3. Para cada uno de los estados del -A.F.N.D. copiar en
su fila las filas de los estados de su clausura.
4. Si en la clausura de algún estado hay algún estado final
incluir dicho estado dentro del conjunto de los estados
finales.
Ejemplo: A partir del -A.F.N.D. asociado al lenguaje L={0i1j2k |
i,j,k0}, obtener el A.F.N.D. correspondiente.
9. Teorema
Para toda gramática tipo 3 existe un A.F.D. que acepta
el lenguaje aceptado por la gramática.
Demostración
1. Generación de un -A.F.N.D. a partir de una gramática
lineal por la derecha ver apartado 10
2. Generación de un -A.F.N.D. a partir de una gramática
lineal por la izquierda ver apartado 11
Finalmente, bastará con aplicar los algoritmos vistos
anteriormente para pasar un -A.F.N.D. a A.F.N.D., y éste
a A.F.D.
Teoría de Autómatas y Lenguajes Formales Tema 3. Autómatas Finitos
La única diferencia con los anteriores está en que en la transición en un estado determinado puede haber,
para un mismo símbolo, más de un arco o no haber ninguno.
Decimos que un autómata finito no determinista acepta una cadena si es posible que su análisis deje a la
máquina en un estado de aceptación. Decimos si es posible, pues si se toma el camino equivocado no se
aceptaría una cadena que podría ser válida (una cadena del lenguaje aceptado por este autómata, designado
por L(M).
Formalmente el autómata finito no determinista consiste en una quíntupla (S, , , , F), donde
Un autómata de la forma (S, , , , F) acepta la cadena no vacía x1x2...xn si y solo si existe una serie de
estados s0,s1,...sn tal que s0= y sn F y para cada entero j de 1 a n (sj-1,xj,sj) está en . Además, las tripletas
(p,x,q) y (p,x,r), donde q y r son estados que pueden ser distintos, pueden estar en , diciéndose que al leer
el símbolo x en el estado p se puede pasar al estado q o al r.
Para hacer un programa de un autómata no determinista se podría hacer probando todas las rutas una a una
hasta que se terminasen o se aceptase la cadena, lo cual no es eficiente por la cantidad de memoria necesaria
(crece exponencialmente con el número de estados).
Para analizar una cadena en un autómata finito no determinista vamos a seguir todas las transiciones
posibles en paralelo (atravesamos todas las rutas a la vez); la cadena se aceptará si alguna de las rutas
acaba en un estado de aceptación. Nuestro estado en un momento dado ya no se hallará determinado por
un estado del diagrama de transiciones, sino por la colección de los estados actuales de todas las rutas
posibles; si K es la colección de estados actuales, al leer x del flujo de entrada obtendríamos un nuevo estado
actual, representada por la colección de los estados a los que es posible llegar desde un estado K. Al pasar de
conjuntos de estados a conjuntos de estados, se evitan los retrocesos (las rutas sucesivas distintas) además de
superar el no determinismo del autómata.
TEOREMA.- Para cada autómata finito no determinista, existe un autómata finito determinista que acepta
exactamente el mismo lenguaje.
Sea M = (S, , , , F), definimos entonces otro autómata M' determinista
DEMOSTRACIÓN representado por el quíntuplo (S', , , ',F') donde:
M y M' aceptan exactamente las mismas cadenas, es decir, el mismo lenguaje; para
demostrarlo hay que hacerlo sobre el enunciado: Para cada ruta en M del estado al
estado sn , que recorre arcos w1, w2,..., wn existe una ruta en M' del estado ' al estado sn '
que recorre los arcos w1, w2,..., wn de modo que sn s'n y viceversa (para cada ruta en M'
de ' recorriendo arcos w1, w2,..., wn y cada sn s'n, existe una ruta en M de a sn que
recorre arcos w1, w2,..., wn ). (Se demuestra por inducción).
Del anterior teorema se deduce que el no determinismo no permite que se acepte un conjunto mayor de
cadenas.
TEOREMA.- Para cualquier alfabeto , {L(M) es un autómata finito determinista con alfabeto } = { L(M)
es un autómata finito no determinista con alfabeto }.