Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Un autómata es un modelo matemático para una máquina de estado finito, en el que dada
una entrada de símbolos, «salta» mediante una serie de estados de acuerdo a una función de
transición (que puede ser expresada como una tabla). Esta función de transición indica a
qué estado cambiar dados el estado actual y el símbolo leído.
Ejemplo
Autómata finito que podría formar parte de un analizador léxico. El trabajo de este
autómata consiste en reconocer la palabra coding, por lo que necesita siete estados,
representando cada uno de ellos la posición que dentro de dicha palabra se haya leído hasta
el momento.
Estas posiciones corresponden con los prefijos de la palabra, desde la cadena de caracteres
vacía (es decir, cuando no contiene ningún carácter) hasta la palabra completa.
Autómata finito no determinista
Es un autómata finito que, a diferencia de los autómatas finitos deterministas, posee al
menos un estado, en el que para un símbolo del alfabeto, existe más de una transición
posible.
Aplicaciones
1. Software para diseñar y probar el comportamiento de circuitos digitales.
2. El “analizador léxico” de un compilador típico, es decir, el componente del compilador que
separa el texto de entrada en unidades lógicas, tal como identificadores, palabras clave y signos
de puntuación.
3. Software para explorar cuerpos de texto largos, como colecciones de páginas web, o para
determinar el número de apariciones de palabras, frases u otros patrones comúnmente conocidos
como expresiones regulares.
4. Software para verificar sistemas de todo tipo que tengan un número finito de estados diferentes,
tales como protocolos de comunicaciones o protocolos para el intercambio seguro de
información.
Resolución de problema
Determinar si un texto de entrada es una dirección de correo válida.
Posibles entradas:
¿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.
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 }
Alfanuméricos: w
Arroba: a
Punto: p
Otros: o
Criterios de aceptación
1. El usuario debe ser una cadena de caracteres alfanuméricos solamente.
2. Seguido de una y solo una arroba.
3. El servidor debe ser también una cadena de caracteres alfa numéricos.
4. El separador de dominio es un punto.
5. El nombre de dominio es una cadena alfanumérica.
6. La parte de dominio aparece al menos una vez y puede repetirse.
7. Una cadena vacía no se acepta como alfanumérica.
Los estados
Estado inicial:
Estados de transición:
Estado final:
Estado de rechazo:
Formalmente
A = {w, a, p, o}
E = {e0, e1, e2 ,e3, e4, f, r0, r1}
F = {f}, F está contenido en E
T: E x A -> E
w e1 e1 e3 e3 f
a r0 e2 r0 r1 r1
p r0 r0 r0 e4 r1
o r0 r0 r0 r0 r1
Gramática regular