Está en la página 1de 21

Teorı́a de autómatas y lenguajes formales

Ingenierı́a en Computación e Informática

Introducción a autómatas

FORMAR TRANSFORMAR
Contenidos

1 Conceptos fundamentales

2 Lenguajes
Definición de lenguajes mediante descripciones de conjuntos

3 Autómatas finitos

4 Autómatas finitos deterministas

FORMAR TRANSFORMAR
Conceptos fundamentales

Alfabeto Cadena de caracteres

• Es un conjunto de sı́mbolos finito y no vacı́o. • Comúnmente conocido como palabra o string en len-
guajes de programación definidos.
• Se utilizará el sı́mbolo Σ
• Es una secuencia finita de sı́mbolos.
Ejemplo:
• σ = {0, 1}, un alfabeto binario. • Estos sı́mbolos deben estar previamente definidos en un
alfabeto
• σ = {a, b, c, . . . , z}, un alfabeto de letras minúsculas.
Ejemplo:
• 01101 es una cadena de caracteres válida para el alfabeto
Σ{0, 1}

• ¿La cadena 111 será válida dentro del alfabeto anterior?

FORMAR TRANSFORMAR
Conceptos fundamentales

Cadena vacı́a

• Presenta cero apariciones de sı́mbolos.

• Se debe representar con la letra .

• Cadena que puede ser formada por cualquier alfabeto.

Longitud de una cadena

• Número de posiciones ocupadas por sı́mbolos dentro de la cadena.

• Por ejemplo, la cadena 01101 tiene longitud 5.

• Podemos afirmar que una longitud es igual al número de sı́mbolos en la cadena.

• Si w es una cadena, la longitud de w se denotará |w|.

FORMAR TRANSFORMAR
Conceptos fundamentales

Potencia de un alfabeto

• Conjunto de todas las cadenas de una determinada longitud de un alfabeto.

• Sea Σ un alfabeto, se denotará Σk al conjunto de todas las cadenas de longitud k.

• El conjunto de todas las cadenas de un alfabeto Σ se designa Σ∗ .

• El conjunto de todas cadenas de un alfabeto y que no considera el conjunto vacı́o () se denota como Σ+ .

Ejemplo:
• Un alfabeto Σ0 = {} es independiente del alfabeto.

• Se asume que Σ = Σ1 .

• Sea Σ = {0, 1} el alfabeto, entonces Σ∗ = {, 0, 1, 00, 01, 10, 11, 000, . . . }

FORMAR TRANSFORMAR
Conceptos fundamentales

Concatenación de cadenas

• Sean x e y cadenas tal que xy es concatenación de x e y, es decir, una copia de x con una de y.

• Si x = a0 a1 a2 a3 . . . ai y y = b0 b1 b2 b3 · · ·j , entonces xy = a0 a1 a2 . . . ai b0 b1 b2 · · ·j

FORMAR TRANSFORMAR
Lenguajes

• Un lenguaje L se denominará a un conjunto de cadenas formadas por Σ∗ .

• Un lenguaje que está compuesto de todas las cadenas que constan de n ceros y n unos para n ≥ 0

{, 01, 0011, 000111, . . . }

FORMAR TRANSFORMAR
Lenguajes
Definición de lenguajes mediante descripciones de conjuntos
• Es habitual describir un lenguaje utilizando una descripción de conjuntos
L = {w | algo acerca de w}

• La expresión se lee como: El conjunto de palabras w tal que (lo que dice acerca de w a la derecha de la barra vertical).

• Algunos ejemplos:
L = {w | w consta de un número igual de ceros que d e unos}
L = {w | w es un entero binario que es primo}
L = {w | w es un programa en C sintácticamente correcto}

• También es habitual reemplazar w por alguna expresión con parámetros y describir las cadenas del lenguaje estableiendo
condiciones sobre los parámetros.

• He aquı́ algunos ejemplos, el primero con el parámetro n y el segundo con los parámetros i y j:
1. {0n 1n | n ≥ 1} Esta expresión se lee: El conjunto de 0 a la n y 1 a la n, tal que n es mayor o igual que 1. Observe que
podemos elevar un solo sı́mbolo a una potencia n para representar n copias de dicho sı́mbolo.

2. {0i 1j |0 ≤ i ≤ j} Este lenguaje consta de cadenas formadas por ceros (puede ser ninguno) seguidos de, al menos, el mismo
número de unos.

FORMAR TRANSFORMAR
Autómatas finitos

• Como se ha mencionado con anterioridad, aun autómata finito titne un conjunto de estados y pasa de un estado a
otro en respuesta a las entradas externas.

• Existen dos tipos de autómatas:


1. Autómata determinista: El autómata no puede encontrarse en mas de un estado.

2. Autómata no determinista: El autómata puede estar en más de un estado a la vez.

FORMAR TRANSFORMAR
Autómatas finitos

• Para comprender mejor su definición (autómata finito), vamos a investigar un protocolo que ayudan a gestionar el
dinero electrónico.

• Es necesario asegurar y demostrar que las únicas cosas que pueden ocurrir en un sistema son las cosas que
queremos que ocurran.

• Analicemos entonces el ejemplo del dinero electrónico.

FORMAR TRANSFORMAR
Autómatas finitos

Son tres los participantes: cliente, tienda y blanco.


1. El cliente pagar (envı́a dinero a la tienda).

2. El cliente decide cancelar el pago (el dinero se envı́a al banco afirmando que se ha añadido a la cuenta bancaria del
cliente).

3. La tienda suministra los bienes al cliente.

4. La tienda libra el dinero (el dinero se envı́a al banco para que se añada a la cuenta de la tienda).

5. El banco transfiere el dinero creando un nuevo archivo enviándolo a la tienda.

FORMAR TRANSFORMAR
Autómatas finitos

Las reglas y supuestos protocolares serı́an los siguientes:


• El cliente puede recibir el bien y después cancelar, puede duplicar el archivo pudiendo pagar varias veces.

• El banco es responsable.

• La tienda debe ser cuidadosa.

FORMAR TRANSFORMAR
Autómatas finitos

FORMAR TRANSFORMAR
Autómatas finitos
• ¿Podemos permitir que el autómata ignore acciones?.

• Si bien, los autómatas responden a comportamientos in-


dependientes, existen algunas transiciones que dejarı́an
al autómata sin uso o sin estado.

• La transición cancelar en la tienda no se ve reflejada si


un cliente cancela.

• Necesitamos que, cuando la tienda reciba una entrada


del tipo cancelar, se mantenga en el mismo, con el fin de
evitar la caı́da del autómata.

• Cuando un autómata recibe una entrada X, éste debe


seguir el arco etiquetado como X desde el estado en
que está hasta algún nuevo estado

FORMAR TRANSFORMAR
Autómatas finitos
• ¿Podemos permitir que el autómata ignore acciones?.

• Otra acción relevante es, ¿qué pasarı́a si el cliente de-


cide por error pagar de nuevo mientras la tienda se en-
cuentra en el estado d o e?.

• Se debe entonces añadir un conjunto de transiciones


que permitan el funcionamiento normal de los autóma-
tas.

• ¿Qué sucede en la aplicación?. Los ascensores, por


ejemplo, funcionan con autómatas y deben responder a
todas las transiciones (ir de un piso a otro). Si no respon-
den a un estado pueden ocurrir accidentes desastrosos.

FORMAR TRANSFORMAR
Autómatas finitos

FORMAR TRANSFORMAR
Autómatas finitos

• ¿Podemos permitir que el autómata anterior ignore ac-


ciones?.

• Los siguientes tipos de acciones se deben ignorar:


• Acciones irrelevantes para participantes:

• Una acción irrelevante para la tienda es cancelar, por lo que


cada uno de los siete estados tiene un arco a si mismo.

• Acciones irrelevantes para el banco es pagar y suministrar.

• Para el cliente, suministrar, librar y transferir.

• Acciones que debemos impedir que detengan ejecución:


• Una acción es cuando el cliente desea pagar dos veces.

• Lo mismo ocurre si el cliente desea cancelar una vez este


librado.

• El almacén no debe librar dos veces.

FORMAR TRANSFORMAR
Autómatas finitos deterministas

Un autómata finito determinista (AFD) es una quintupla (Q, Σ, δ, q0 , F ), donde:


• Q es un conjunto finito de estados.

• Σ es un conjunto finito de sı́mbolos de entrada.

• δ es una función de transición que toma como argumentos un estado y un sı́mbolo de entrada y devuelve un
estado. En nuestra representación gráfica informal del autómata, δ se representa mediante arcos entre los estados y
las etiquetas sobre los arcos. Si q es un estado y a es un sı́mbolo de entrada, entonces δ(q, a) es el estado p tal que
existe un arco etiquetado a que va desde q hasta p.

• q0 es el estado inicial y q0 ∈ Q, .

• F es el conjunto de estados finales o de aceptación. El conjunto F es un subconjunto de Q.

FORMAR TRANSFORMAR
Autómatas finitos deterministas

¿Cómo procesa cadenas un AFD?.


• El lenguaje del AFD es el conjunto de todas las cadenas que acepta.

• Observemos el siguiente diagrama que acepta todas las cadenas que contengan 01.

• El diagrama anterior se denomina diagrama de transición.

• ¿Cuál será la quı́ntupla de este autómata?

FORMAR TRANSFORMAR
Autómatas finitos deterministas

Del diagrama anterior se puede obtener también una tabla de transición.

Q = {q0 , q1 , q2 }

Σ = {0.1}

0 1
q0 q2 q0
δ =
∗q1 q1 q1
q2 q2 q1

q0 = q0

F = {q1 }

FORMAR TRANSFORMAR
Teorı́a de autómatas y lenguajes formales
Ingenierı́a en Computación e Informática

Introducción a autómatas

FORMAR TRANSFORMAR

También podría gustarte