Sunteți pe pagina 1din 23

Teora de la Computacin

Autmatas Algoritmos de
Conversiones

Autmatas Finitos

Los autmatas finitos constituyen un modelo til para muchos tipos de


hardware y software. A partir del Captulo veremos ejemplos de cmo se
emplean estos conceptos. Por el momento, slo enumeraremos algunos de
los tipos ms importantes:
Software para disear y probar el comportamiento de circuitos digitales.
El analizador lxico de un compilador tpico, es decir, el componente
del compilador que separa el texto de entrada en unidades lgicas, tal
como identificadores, palabras clave y signos de puntuacin.
Software para explorar cuerpos de texto largos, como colecciones de
pginas web, o para determinar el nmero de apariciones de palabras,
frases u otros patrones.
Software para verificar sistemas de todo tipo que tengan un nmero finito
de estados diferentes, tales como protocolos de comunicaciones o
protocolos para el intercambio seguro de informacin.

Autmata Finito
Determinista

Comenzamos con el formalismo de un autmata finito determinista,


que es aquel que slo puede estar en un nico estado despus de
leer cualquier secuencia de entradas. El trmino determinista
hace referencia al hecho de que para cada entrada slo existe uno
y slo un estado al que el autmata puede hacer la transicin a
partir de su estado actual.

Un autmata finito determinista consta de:


Un conjunto finito de estados, a menudo designado como Q.
Un conjunto finito de smbolos de entrada, a menudo designado como .
Una funcin de transicin que toma como argumentos un estado y un
smbolo de entrada y devuelve un estado. La funcin de transicin se
designa habitualmente como . En nuestra representacin grfica
informal del autmata, se ha representa mediante arcos entre los
estados y las etiquetas sobre los arcos. Si q es un estado y a es un
smbolo de entrada, entonces (q, a) es el estado p tal que existe un
arco etiquetado a que va desde q hasta p2 .
Un estado inicial, uno de los estados de Q.
Un conjunto de estados finales o de aceptacin F. El conjunto F es un
subconjunto de Q.

A menudo haremos referencia a un autmata finito determinista


mediante su acrnimo: AFD. La representacin ms sucinta de un
AFD consiste en un listado de los cinco componentes anteriores.
Normalmente, en las demostraciones, definiremos un AFD
utilizando la notacin de quntupla siguiente:
A = (Q, , , q0, F)
Donde A es el nombre del AFD, Q es su conjunto de estados,
son los smbolos de entrada, es la funcin de transicin, q0 es
el estado inicial y F es el conjunto de estados finales.

Autmata Finito NO
Determinista

Un autmata finito no determinista (AFN) tiene la capacidad de


estar en varios estados a la vez. Esta capacidad a menudo se
expresa como la posibilidad de que el autmata conjeture algo
acerca de su entrada. Por ejemplo, cuando el autmata se utiliza
para buscar determinadas secuencias de caracteres (por
ejemplo, palabras clave) dentro de una cadena de texto larga,
resulta til conjeturar que estamos al principio de una de estas
cadenas y utilizar una secuencia de estados nicamente para
comprobar la aparicin de la cadena, carcter por carcter.

A continuacin presentamos las nociones formales asociadas con los


autmatas finitos no deterministas e indicamos las diferencias entre los AFD y
AFN. Un AFN se representa esencialmente como un AFD:

A = (Q, , , q0 ,F)
donde:

Q es un conjunto finito de estados.

es un conjunto finito de smbolos de entrada.

q0, un elemento de Q, es el estado inicial.

F, un subconjunto de Q, es el conjunto de estados finales (o de


aceptacin).

, la funcin de transicin, es una funcin que toma como argumentos


un estado de Q y un smbolo de entrada de y devuelve un
subconjunto de Q. Observe que la nica diferencia entre un AFN y un
AFD se encuentra en el tipo de valor que devuelve : un conjunto de
estados en el caso de un AFN y un nico estado en el caso de un AFD.

CONVERSION DE UN AFN A UN AFD

Por qu la conversin de un AFND a AFD?


La respuesta a esta pregunta es simple, es muy complejo o
poco factible programar un autmata AFND, ya que al tener
ms un camino a seguir a la hora de validar una cadena,
esto puede ser muy difcil de respaldar a la hora de crear un
algoritmo computacional.
En cambio un AFD, al ser de un solo sentido, puede facilitar
las cosas al programador, como por ejemplo usar menos
cantidad de memoria, as como lneas de cdigo, ya que en
un mismo segmento se puede validar todas las posibilidades
de un lenguaje (L).

Equivalencia de AFD y AFN


Existe una equivalencia entre los AFD y AFN, de forma que un autmata
M es equivalente a un autmata M' si L(M) ) L(M').
Ejemplo: Los autmatas de la siguiente figura son equivalentes.
Obsrvese que uno es determinstico y el otro es no determinstico. Sin
embargo, ambos aceptan las mismas cadenas.

Ilustracin 1. Autmata finito determinstico

Ilustracin 2. Autmata finito no determinstico

Ya que una funcin es un caso especial de relacin (es decir, las funciones son
relaciones que poseen requerimientos adicionales), las funciones de los AFD
se consideran como relaciones en los AFN. En consecuencia, todo AFD es un
AFN. La coleccin de lenguajes aceptados por los AFN incluye a todos los
lenguajes aceptados por los AFD. De esto resulta que los AFN slo aceptan los
lenguajes aceptados por los AFD. Por lo tanto, los AFN no son ms potentes
que los AFD con respecto a los lenguajes que aceptan.

Transiciones
Podemos ampliar la definicin de autmata finito no determinstico para
incluir transiciones de un estado a otro que no dependan de ninguna entrada.
Tales transiciones se llaman -Transiciones porque al realizarse no consumen
ningn smbolo de entrada. Por ejemplo, los AFN de la siguiente

Ilustracin 3. Autmata a)

Ilustracin 4 Autmata b)

En el AFN del inciso a), el autmata puede cambiar su estado de Q0


a Q1 sin consumir nada en la entrada. Obsrvese que Q1 es el
nico estado de aceptacin de este AFN. Si w es cualquier cadena
de 0 o ms aes, este autmata cicla sobre Q0 hasta que consume
las aes. Una vez que la cadena se vaca, se desplaza a Q1 y lo
acepta.
En el AFN del inciso b), el autmata puede moverse del estado Q2
al estado Q0 sin consumir nada en la entrada. En ambos AFN, la
decisin de elegir una -Transicin se realiza de la misma forma
que la de cualquier otra transicin con eleccin mltiple que exista
en un AFN (basndose en algo que no determina el modelo. Por
tanto, las -Transiciones son consistentes con el matiz no
determinstico de la versin que hemos dado del AFN.
Si un AFN tiene -Transiciones, la relacin de transicin f asocia
pares sobre L x ( I { } ) X L con subconjuntos de L. Es decir, f es
una relacin sobre L x ( I { } ) X L. Se puede aadir una
columna en la tabla de f para colocar los pares de la forma (Si, ).
Cuando hay -Transiciones en un AFN es conveniente suponer que
cada estado tiene una -Transicin que se cicla en ese estado.
Usaremos esto para sistematizar el clculo de los AFN.

Conversin AFND a AFD


Para iniciar la conversin de un autmata finito no determinstico
a uno determinstico tenemos que empezar por definir el alfabeto
() y el lenguaje (L), as como la representacin grfica del
mismo.
={a,b}.L=(ab* U a)

Ilustracin 5. AFND

Despus tenemos que utilizar una tabla como la que se muestra a


continuacin, esta nos permitir calcular las equivalencias de un
AFND con un AFD.
Nota: esta tabla est construida para el ejemplo utilizado.

La relacin de la tabla siempre ser, Estados/Alfabeto.

1.- Como primer paso tenemos que saber que caminos sigue el
estado q0. Como podemos ver en el grafo del autmata (Ilustracin
5), vemos que el estado q0 nos llevas los estados q1, q2. Como los
dos caminos disponibles que tenemos en el estado q0 nos conducen
a a anotamos en la tabla que:

q1, q2 se considera un nuevo estado que no conocemos, el cual


ahora baja a la siguiente fila de la tabla.

2.- Ahora procedemos con el siguiente estado nuevo que es q1, q2 el cual
ahora procedemos a seguir los caminos disponibles por cada uno, vemos que
q1 conduce a q1 y q2 a ningn lado si tomamos el camino de a, en el caso
de b tenemos que q1 no conduce a ningn lado mientras que q2 nos conduce
a q2.

3.- seguimos el mismo proceso con los dems estados que se nos generen.

4.- El siguiente paso es dar un nuevo nombre a los estados generados


los cuales definiremos como A, B, C, D.

5.- Ahora para poder crear el nuevo grafo de nuestro autmata tenemos
que usar los nuevos estados generados.
Tenemos 4 estados nuevos (A,B,C,D) en vez de los 3 anteriores (q1, q2,
q3)

Ilustracin 6. Nuevos estados generados

6.- El siguiente paso es definir nuestro estado inicial y nuestros estados finales,
para eso debemos ver cuales estados son finales en el AFND y luego ver en
donde caen los generados.
Tenemos que q0 el cual era nuestro estado inicial, est en A, por lo tanto ese
ser nuestro estado inicial.

Ilustracin 7. Estado Inicial A


Tambin tenemos que q1, q2 eran nuestros estados finales y estos aparecen en B,
C y D, por lo que estos sern nuestros estados finales.

Ilustracin 8. Estados finales B, C y D

7.- Ahora procederemos a crear los caminos que sigue cada estado, para esto
tenemos que empezar con el estado A (q0) el cual quedara de la siguiente
forma.

Ilustracin 9. Camino de A a B
Como lo indica la tabla 5 tenemos que:
A (q0) B (q1, q2)
B (q1, q2) C (q1) && D (q2)
C (q1) C (q1)
D (q2) D (q2)
Ilustracin 10. AFD

CONCLUSIN
Como pudimos observar en el procedimiento de conversin,
resulta ms factible trabajar con autmatas AFD que con AFND,
ya que permiten una mejor comprensin, as como evitar
dificultades a la hora de programar, est por dems decir que un
autmata no determinista es ms fcil de interpretar y de
construir, pero esa facilidad repercute a la hora de seguir la
secuencia del autmata.
En cambio un autmata determinstico a solo tener un mismo
camino por cada elemento de , resulta ms fcil de programar
evitando ambigedades entre caminos.

GRACIAS

S-ar putea să vă placă și