Está en la página 1de 6

Capítulo 1: Introducción a los autómatas

AUTOMATAS FINITOS

Ejemplo 1.1:
Quizá el autómata nito no trivial más simple sea un interruptor de apagado/
encendido. El disposi vo recuerda si está en el estado encendido ("on") o en el
estado apagado ("o '), y permite al usuario pulsar un botón cuyo efecto es diferente
dependiendo del estado del interruptor.
Es decir, si el interruptor está en el estado o , entonces al pulsar el botón cambia al
estado on, y si el interruptor está en el estado on, al pulsar el mismo botón pasa al
estado “o ”, nitos, los estados están representados mediante círculos; en este
ejemplo, hemos denominado a los estados “on” y “o ”.

Los arcos entre los estados están e quetados con las "entradas",
las cuales representan las in uencias externas sobre el sistema.
Aquí, ambos arcos se han e quetado con la entrada Pulsar, que
representa al usuario que pulsa el botón. Los dos arcos indican
que, sea cual sea el estado en que se encuentra el sistema,
cuando recibe la entrada Pulsar pasa al otro estado.
Uno de los estados se designa como el "estado inicial", el estado en el que el sistema
se encuentra inicialmente.
En nuestro ejemplo, el estado inicial es apagado (o ) y, por conveniencia, hemos
indicado el estado inicial mediante la palabra Inicio y una echa que lleva al otro
estado.
A menudo es necesario especi car uno o más estados como estado " nal" o "de
aceptación". Llegar a uno de estos estados después de una secuencia de entradas
indica que dicha secuencia es correcta. Por ejemplo, podríamos establecer el estado
“on” de la Figura 1.1 como estado de aceptación, ya que en dicho estado, el
disposi vo que está siendo controlado por el interruptor funciona.
Normalmente, los estados de aceptación se indican mediante un círculo doble.

Ejemplo 1.2:
En ocasiones, lo que recuerda un estado puede ser mucho más complejo que una
elección entre las posiciones apagado/encendido (on/o ). La Figura 1.2 muestra otro
autómata nito que podría formar parte de un analizador léxico. El trabajo de este
autómata consiste en reconocer la palabra clave “then”, por lo que necesita cinco
estados, representando cada uno de ellos la posición dentro de dicha palabra que se
ha alcanzado hasta el momento.

Estas posiciones se corresponden con los


pre jos de la palabra, desde la cadena de
caracteres vacía (es decir, cuando no
con ene ningún carácter) hasta la palabra
completa.

1
fi
ti
ti
ff
fi
fi
fi
ff
ti
ti
fl
fi
ti
ff
ff
ff
ff
fl
fi
Capítulo 1: Introducción a los autómatas

En la Figura 1.2, los cinco estados se designan mediante el correspondiente pre jo de


“then” visto hasta el momento. Las entradas se corresponden con las letras.

Podemos imaginar que el analizador léxico examina un carácter del programa que se
está compilando en un determinado instante, y que el siguiente carácter que se va a
examinar es la entrada al autómata. El estado inicial se corresponde con la cadena
vacía y cada uno de los estados ene una transición a la siguiente letra de la palabra
“then”, al estado que corresponde al siguiente pre jo más largo. El estado
denominado “then” se alcanza cuando la entrada está formada por todas las letras de
dicho término. Puesto que el trabajo de este autómata es indicar el reconocimiento
de la palabra “then”, podemos considerar dicho estado como el único estado de
aceptación.

REPRESENTACIONES ESTRUCTURALES
Las gramá cas son modelos ú les en el diseño de so ware que sirve para procesar
datos con una estructura recursiva.
Las expresiones regulares también especi can la estructura de los datos,
especialmente de las cadenas de texto.
Ejemplo: La expresión regular es lo UNIX '[A- Z] [a-z]*[ ] [A-Z] [A-Z] , representa
palabras que comienzan por una letra mayúscula seguida de un espacio y de dos
letras mayúsculas. Esta expresión representa patrones de texto que podrían
corresponderse con el nombre de una ciudad y un estado, por ejemplo Ithaca NY. En
cambio no reconocería nombres de ciudades formados por varias palabras, como por
ejemplo Palo Al to CA, que sí podría ser reconocida por la expresión más compleja ,
[A-Z] [a-z] * ([ ] [A-Z] [a-z] *) * [ ] [A-Z] [A-Z) .
Al interpretar dichas expresiones, sólo necesitamos saber que [A-Z) representa el
rango de caracteres comprendido entre las letras mayúsculas "N.' y "Z" (es decir,
todas las letras mayúsculas) y que [ ] se u liza para representar un único carácter en
blanco. Además, el símbolo de asterisco (*) representa "cualquier número de"
apariciones de la expresión anterior. Los paréntesis se emplean para agrupar
componentes de la expresión; no representan caracteres del texto que se describe.

2
ti
ti
ti
ti
ti
fi
ft
fi
fi
Capítulo 1: Introducción a los autómatas

AUTOMATAS Y COMPLEJIDAD
Los autómatas son esenciales para el estudio de los límites de la computación. Existen
dos factores importantes a este respecto:
1. ¿Qué puede hacer una computadora? Este área de estudio se conoce como
"decidibilidad", y los problemas que una computadora puede resolver se dice que son
"decidibles".
2. ¿Qué puede hacer una computadora de manera e ciente? Este área de estudio se
conoce como “intratabilidad", y los problemas que una computadora puede resolver
en un empo proporcional a alguna función que crezca lentamente con el tamaño de
la entrada se dice que son "tratables". Habitualmente, se supone que todas las
funciones polinómicas son de "crecimiento lento", mientras que se considera que las
funciones que crecen más rápido que cualquier función polinómica crecen con
demasiada rapidez.

Conceptos fundamentales de la teoría de autómatas


Alfabetos
Un alfabeto es un conjunto de símbolos nito y no vacío. Convencionalmente,
u lizamos el símbolo Σ para designar un alfabeto. Entre los alfabetos más comunes se
incluyen los siguientes:
1. Σ = {0, 1}, el alfabeto binario.
2. Σ = {a,b , .. . ,z}, el conjunto de todas las letras minúsculas.
3. El conjunto de todos los caracteres ASCII o el conjunto de todos los caracteres ASCII
imprimibles

Cadenas de caracteres
Una cadena de caracteres (que también se denomina en ocasiones palabra) es una
secuencia nita de símbolos seleccionados de algún alfabeto. Por ejemplo, 01101 es
una cadena del alfabeto binario Σ = {0, 1}. La cadena 111 es otra cadena de dicho
alfabeto.

La cadena vacía
Es aquella cadena que presenta cero apariciones de símbolos. Esta cadena, designada
por ε, es una cadena que puede construirse en cualquier alfabeto.

Longitud de una cadena


Suele ser ú l clasi car las cadenas por su longitud, es decir, el número de posiciones
ocupadas por símbolos dentro de la cadena. Por ejemplo, 01101 ene una longitud
de 5.
Es habitual decir que la longitud de una cadena es igual al "número de símbolos" que
con ene; esta proposición está aceptada coloquialmente, sin embargo, no es
estrictamente correcta. Así, en la cadena 01101 sólo hay dos símbolos, 0 y 1, aunque
ene cinco posiciones para los mismos y su longitud es igual a 5. Sin embargo,

3
ti
ti
ti
ti
fi
ti
fi
fi
fi
ti
Capítulo 1: Introducción a los autómatas

generalmente podremos u lizar la expresión "número de símbolos" cuando


realmente a lo que se está haciendo referencia es al "número de posiciones".
La notación estándar para indicar la longitud de una cadena w es Iwl. Por ejemplo, |
011| = 3 Y |εl = 0.

Potencias de un alfabeto
Si L es un alfabeto, podemos expresar el conjunto de todas las cadenas de una
determinada longitud de dicho alfabeto u lizando una notación exponencial.
De nimos Σk para que sea el conjunto de las cadenas de longitud k, tales que cada
uno de los símbolos de las mismas pertenece a L.

Ejemplo 1.24:
Observe que Σ0={ε}, independientemente de cuál sea el alfabeto Σ. Es decir, ε es la
única cadena cuya longitud es 0.
Si Σ={0,1}, entonces Σ1={0,1}, Σ2={00,01,10,11},
Σ3={000,001,010,011,100,101,110,111}, etc.
Observe que existe una ligera confusión entre Σ y Σ1. Lo primero es un alfabeto; sus
elementos 0 y 1 son los símbolos. Lo segundo es un conjunto de cadenas; sus
elementos son las cadenas 0 y 1, cuya longitud es igual a 1.
Por convenio, el conjunto de todas las cadenas de un alfabeto Σ se designa mediante
Σ*.
Por ejemplo, {0,1}*={ε,0,1,00,01,10,11,000,…}, dicho de otra forma, Σ*= Σ0U Σ1U Σ2U…
En ocasiones, desearemos excluir la cadena vacía del conjunto de cadenas. El
conjunto de cadenas no vacías del alfabeto Σ se designa como Σ+. Por tanto dos
equivalencias apropiadas son:
Σ+= Σ1U Σ2U Σ3U…
Σ*= Σ+U{ε}

Concatenación de cadenas
Sean x e y dos cadenas. Entonces, xy denota la concatenación de x e y, es decir, la
cadena formada por una copia de x seguida de una copia de y. Dicho de manera más
precisa, si x es la cadena compuesta por i símbolos x = a1a2…ai e y es la cadena
compuesta por j símbolos y = b1b2…bj, entonces xy es la cadena de longitud i+j: xy =
a1a2…a¡b1b2…bj.

4
fi
ti
ti
Capítulo 1: Introducción a los autómatas

Ejemplo 1.25:
Sean x = 01101 e y = 110. Entonces xy = 01101110 e yx = 11001101. Para cualquier
cadena w, tenemos las ecuaciones εw = wε = w. Es decir, ε es el elemento neutro de la
concatenación, dado que su concatenación con cualquier cadena proporciona dicha
cadena como resultado (del mismo modo que 0, el elemento neutro de la suma,
puede sumarse a cualquier número x y proporciona x como resultado).

Lenguajes
Un conjunto de cadenas, todas ellas seleccionadas de un Σ*, donde Σ es un
determinado alfabeto se denomina lenguaje. Si Σ es un alfabeto y L ⊆Σ*, entonces L
es un lenguaje de Σ. Observe que un lenguaje de Σ no necesita incluir cadenas con
todos los símbolos de Σ, ya que una vez que hemos establecido que L es un lenguaje
de Σ, también sabemos que es un lenguaje de cualquier alfabeto que sea un super
conjunto de Σ.
La elección del término "lenguaje" puede parecer extraña. Sin embargo, los lenguajes
habituales pueden interpretarse como conjuntos de cadenas.
Un ejemplo sería el inglés, donde la colección de las palabras correctas inglesas es un
conjunto de cadenas del alfabeto que consta de todas las letras. Otro ejemplo es el
lenguaje C, o cualquier otro lenguaje de programación, donde los programas
correctos son un subconjunto de las posibles cadenas que pueden formarse a par r
del alfabeto del lenguaje. Este alfabeto es un subconjunto de los caracteres ASCII. El
alfabeto en concreto puede diferir ligeramente entre diferentes lenguajes de
programación, aunque generalmente incluye las letras mayúsculas y minúsculas, los
dígitos, los caracteres de puntuación y los símbolos matemá cos.
Sin embargo, existen también otros muchos lenguajes que veremos a lo largo del
estudio de los autómatas.
Algunos ejemplos son los siguientes:
1) El lenguaje de todas las cadenas que constan de n ceros seguidos de n unos
para cualquier n>=0: {ε,01,0011,000111,…}
2) El conjunto de cadenas formadas por el mismo número de ceros que de unos: {
ε, 01,10,0011,0101,1001,…}
3) El conjunto de números binarios cuyo valor es un número primo:
{10,11,101,111,1011}
4) Σ* es un lenguaje para cualquier alfabeto Σ.
5) φ, el lenguaje vacío, es un lenguaje de cualquier alfabeto.
6) {ε}, el lenguaje que consta sólo de la cadena vacía, también es un lenguaje de
cualquier alfabeto. Observe
que φ ≠{ε}; el primero no con ene ninguna cadena y el segundo sólo ene una
cadena.

La única restricción importante sobre lo que puede ser un lenguaje es que todos los
alfabetos son nitos. De este modo, los lenguajes, aunque pueden tener un número

5
fi
ti
ti
ti
ti
Capítulo 1: Introducción a los autómatas

in nito de cadenas, están restringidos a que dichas cadenas estén formadas por los
símbolos que de nen un alfabeto nito y pre jado.

6
fi
fi
fi
fi

También podría gustarte