Está en la página 1de 21

AUTOMATAS

FINITOS
UNIVERISIDAD POPULAR DE LA CHONTALPA
ING. TECNOLOGIAS DE LA INFORMACION
“AUTOMATAS Y PROCESADORES DE LENGUAJE”
7° U TURNO: VESPERTINO
CATEDRATICO: M.S.I. IGNACIO SALAZAR LOPEZ
ALUMNO: MANUEL ELIU BRAHIAM PALMA MTZ
MIERCOLES 15 DE MAYO 2019
¿Qué ES UN AUTOMATA FINITO?
es un modelo computacional que realiza cómputos en forma
automática sobre una entrada para producir una salida.
Este modelo está conformado por un alfabeto, un conjunto de
estados finito, una función de transición, un estado inicial y un
conjunto de estados finales. Su funcionamiento se basa en una
función de transición, que recibe a partir de un estado inicial una
cadena de caracteres pertenecientes al alfabeto (la entrada), y
que va leyendo dicha cadena a medida que el autómata se
desplaza de un estado a otro, para finalmente detenerse en un
estado final o de aceptación, que representa la salida.
HISTORIA
El origen de los autómatas finitos probablemente se remonta a su
uso implícito en máquinas electromecánicas, desde principios del
siglo XX. Ya en 1907, el matemático ruso Andréi Márkov formalizó un
proceso llamado cadena de Markov, donde la ocurrencia de
cada evento depende con una cierta probabilidad del evento
anterior. Esta capacidad de "recordar" es utilizada posteriormente
por los autómatas finitos, que poseen una memoria primitiva similar,
en que la activación de un estado también depende del estado
anterior, así como del símbolo o palabra presente en la función de
transición.
Posteriormente, en 1943, surge una primera aproximación formal de los
autómatas finitos con el modelo neuronal de McCulloch-Pitts. Durante
la década de 1950 prolifera su estudio, frecuentemente llamándoseles
máquinas de secuencia; se establecen muchas de sus propiedades
básicas, incluyendo su interpretación como lenguajes regulares y su
equivalencia con las expresiones regulares. Al final de esta década, en
1959, surge el concepto de autómata finito no determinista en manos
de los informáticos teóricos Michael O. Rabin y Dana Scott.
En la década de 1960 se establece su conexión con las series de
potencias y los sistemas de sobreescritura. Finalmente, con el desarrollo
del sistema operativo Unix en la década de 1970, los autómatas finitos
encuentran su nicho en el uso masivo de expresiones regulares para
fines prácticos, específicamente en el diseño de analizadores léxicos
(comando lex) y la búsqueda y reemplazo de texto (comandos ed y
grep). A partir de ese tiempo, los autómatas finitos también se
comienzan a utilizar en sistemas dinámicos
DEFINICION Y MODOS DE
REPRESENTACIONES
Formalmente, un autómata finito es una 5-tupla (Q, Σ, q0, δ, F)
donde:
Q\, es un conjunto finito de estados,
\Sigma \, es un alfabeto finito;
q_{0}\in Q es el estado inicial;
\delta \colon Q\times \Sigma \to Q es una función de transición;
F\subseteq Q es un conjunto de estados finales o de aceptación
Representación como diagrama
de estados
Los autómatas finitos se pueden representar mediante grafos
particulares, también llamados diagramas de estados finitos, de la
siguiente manera:
Los estados Q se representan como vértices, etiquetados con su
nombre en el interior.
Una transición δ desde un estado a otro, dependiente de un
símbolo del alfabeto, se representa mediante una arista dirigida
que une a estos vértices, y que está etiquetada con dicho símbolo.
El estado inicial q0 se caracteriza por tener una arista que llega a él,
proveniente de ningún otro vértice.
El o los estados finales F se representan mediante vértices que están
encerrados a su vez por otra circunferencia.
Representación como tabla de
resultados
En teoría de autómatas y lógica secuencial, una tabla de transición
de estados es una tabla que muestra qué estado se moverá un
autómata finito dado, basándose en el estado actual y otras
entradas. Una tabla de estados es esencialmente una tabla de
verdad en la cual algunas de las entradas son el estado actual, y
las salidas incluyen el siguiente estado, junto con otras salidas.
Una tabla de estados es una de las muchas maneras de especificar
una máquina de estados, otras formas son un diagrama de
estados, y una ecuación característica.
Funcionamiento
En el comienzo del proceso de reconocimiento de una cadena de
entrada, el autómata finito se encuentra en el estado inicial y a
medida que procesa cada símbolo de la cadena va cambiando de
estado de acuerdo a lo determinado por la función de transición.
Cuando se ha procesado el último de los símbolos de la cadena de
entrada, el autómata se detiene en el estado final del proceso. Si el
estado final en el que se detuvo es un estado de aceptación,
entonces la cadena pertenece al lenguaje reconocido por el
autómata; en caso contrario, la cadena no pertenece a dicho
lenguaje.
Note que el estado inicial {\displaystyle q_{0}} q_{0} de un autómata
finito siempre es único, en tanto que los estados finales pueden ser más
de uno, es decir, el conjunto {\displaystyle F} F puede contener más de
un elemento. También puede darse el caso de que un estado final
corresponda al mismo estado inicial.
Autómata finito determinista
Un autómata finito determinista (abreviado AFD) es un autómata
finito que además es un sistema determinista; es decir, para cada
estado en que se encuentre el autómata, y con cualquier símbolo
del alfabeto leído, existe siempre no más de una transición posible
desde ese estado y con ese símbolo.
nodos etiquetados por los estados (qi Q)
• arcos entre nodos qi a qj etiquetados con ei
(ei Σ ) si existe f(qi,ei) = qj
• q0 se señala con →
• qi F se señala con * o doble círculo
Ejemplo de representación de
autómata finito determinista (AFD)
Sea el AFD1 = ({a,b}, {p,q,r}, f, p, {q}) donde f está
definida por:
f(p,a) = q f(p,b) = r
f(q,a) = q f(q,b) = r
f(r,a) = r f(r,b) = r
escribir su tabla de transición y dibujar su diagrama de transición
Autómata finito no determinista
Un autómata finito no determinista (abreviado AFND) es un autómata
finito que, a diferencia de los autómatas finitos deterministas (AFD),
posee al menos un estado q ∈ Q, tal que para un símbolo a ∈ Σ del
alfabeto, existe más de una transición δ(q,a) posible.
En un AFND puede darse cualquiera de estos dos casos:
Que existan transiciones del tipo δ(q,a)=q1 y δ(q,a)=q2, siendo q1 ≠ q2;
Que existan transiciones del tipo δ(q, ε), siendo q un estado no-final, o
bien un estado final pero con transiciones hacia otros estados.
Cuando se cumple el segundo caso, se dice que el autómata es un
autómata finito no determinista con transiciones vacías o transiciones ε
(abreviado AFND-ε). Estas transiciones permiten al autómata cambiar
de estado sin procesar ningún símbolo de entrada. Considérese una
modificación al modelo del autómata finito para permitirle ninguna,
una o más transiciones de un estado sobre el mismo símbolo de
entrada.
Ejemplo de Autómata finito no
determinista (AFND)
Representación de autómatas
Los autómatas se pueden representar mediante tablas de
transición o diagramas de transición.
Tablas de transición:
• Filas encabezadas por los estados( Q )
• Columnas encabezadas por los símbolos de entrada ( E)

a b
TABLA

->p q

*q q3 r

q3 r

r q3
Diagramas de transición:
Diagramas de transición:
• Nodos etiquetados por los estados(Q)
• Arcos entre nodos etiquetados con ( E)
• Q0 se señala con ->
• El estado final se señala con * o con doble circulo
EJEMPLOS: Resolución de
problema
1.- Determinar si un texto de entrada es una dirección de correo
válida.
Posibles entradas:
lorem ipsum dolor
usuario@servidor.com.mx
usuario@.com
usuario@serv&vidor.com.
@servidor.com.mx
2.- ¿Cómo se decide?
codigornot@gmail.com es un correo válido, pues contiene un
usuario, seguido de un @, y finaliza con un servidor. Definamos estas
reglas formalmente.
3.- Definiendo el alfabeto
El alfabeto puede modelarse con clases de caracteres, en lugar de los
símbolos como tal. Dados los caracteres que puede representar una
computadora, encontramos las siguientes clases:
Alfanuméricos : { a,b, …, z, A, B, …, Z, 0, 1, …, 9, _ }
Arroba: { @ }
Punto: { . }
Otros: { todos los demás }
4.-Una vez clasificados los caracteres, nombramos cada categoría:
Alfanuméricos: w
Arroba: a
Punto: p
Otros: o
Entonces nuestro alfabeto es: S = { w, a, p, o }
5.-Criterios de aceptación
El usuario debe ser una cadena de caracteres alfanuméricos
solamente.
Seguido de una y solo una arroba.
El servidor debe ser también una cadena de caracteres alfa
numéricos.
El separador de dominio es un punto.
El nombre de dominio es una cadena alfanumérica.
La parte de dominio aparece al menos una vez y puede repetirse.
Una cadena vacía no se acepta como alfanumérica.
6.- Los estados
Estado inicial:
No se ha leído nada, se espera el nombre del usuario.
Estados de transición:
Se está leyendo el nombre del usuario.
Se ha leído @, se espera el nombre de servidor.
Se está leyendo el nombre del servidor.
Se ha leído un punto, se espera el nombre de dominio.
Estado final:
Se está leyendo el nombre de dominio.
Estado de rechazo:
Se ha recibido una entrada inesperada.
Cada estado se denota por:

(e0) No se ha leído nada, se espera el nombre del usuario.


(e1) Se está leyendo el nombre del usuario.
(e2) Se ha leído @, se espera el nombre de servidor.
(e3) Se está leyendo el nombre del servidor.
(e4) Se ha leído un punto, se espera el nombre de dominio.
(f) Se está leyendo el nombre de dominio.
(r0, r1) Se ha recibido una entrada inesperada.
Formalmente
A = {w, a, p, o}
E = {e0, e1, e2 ,e3, e4, f, r0, r1}
F = {f}, F está contendido en E
T: E x A -> E
Vista gráfica del autómata
GRACIAS
POR SU
ATENCION

También podría gustarte