You are on page 1of 4

Captulo 1: Introduccin a los autmatas

1.1 Por qu estudiar la teora de autmatas?


1.1.1 Introduccin a los autmatas finitos
1.1.2 Representaciones estructurales
1.1.3 Autmatas y Complejidad
1.5 Conceptos fundamentales de la teora de autmatas
1.5.1 Alfabetos
1.5.2 Cadenas de Caracteres
1.5.3 Lenguajes
1.5.4 Problemas
1.6 Resumen del Captulo 1

1 INTRODUCCION A LOS AUTOMATAS


La teora de autmatas es el estudio de dispositivos de clculo abstractos, es decir, de las "mquinas. En la dcada de los
aos treinta, A. Turing estudi una mquina abstracta que tena todas las capacidades de las computadoras de hoy da, al
menos en lo que respecta a lo que podan calcular. El objetivo de Turing era describir de forma precisa los lmites entre lo
que una mquina de clculo poda y no poda hacer; estas conclusiones no slo se aplican a las mquinas abstractas de
Turing, sino a todas las mquinas reales actuales.
En las dcadas de los aos cuarenta y cincuenta, una serie de investigadores estudiaron las mquinas ms simples, las
cuales todava hoy denominamos "autmatas finitos". Tambin a finales de la dcada de los cincuenta, el lingista N.
Chomsky inici el estudio de las "gramticas" formales. Aunque no son mquinas estrictamente, estas gramticas estn
estrechamente relacionadas con los autmatas abstractos y sirven actualmente como base de algunos importantes
componentes de software, entre los que se incluyen componentes de los compiladores.
En 1969, S. Cook ampli el estudio realizado por Turing sobre lo que se poda y no se poda calcular. Cook fue capaz de
separar aquellos problemas que se podan resolver de forma eficiente mediante computadora de aquellos problemas que, en
principio, pueden resolverse, pero que en la prctica consumen tanto tiempo que las computadoras resultan intiles para
todo excepto para casos muy simples del problema. Este ltimo tipo de problemas se denominan "insolubles" o "NPdifciles".

1.1 Por qu estudiar la teora de autmatas?


Son varias las razones por las que el estudio de los autmatas y de la complejidad de clculo constituyen una parte
importante del ncleo de la Ciencias de la Computacin.

1.1.1 Introduccin a los autmatas finitos


Los autmatas finitos constituyen un modelo til para muchos tipos de hardware y software. Enumeramos algunos de
los ejemplos ms importantes:
1. Software para disear y probar el comportamiento de circuitos digitales.
2. 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.
3. 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.
4. 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.
Un boceto de lo que es y lo que hace un autmata finito puede ser: existen muchos sistemas o componentes, como los
que hemos enumerado anteriormente, que pueden encontrarse siempre en uno de una serie de "estados" finitos. El
propsito de un estado es el de recordar la parte relevante del historial del sistema. Puesto que slo existe un nmero finito
de estados, generalmente, no es posible recordar el historial completo, por lo que el sistema debe disearse
cuidadosamente, con el fin de recordar lo que es importante y olvidar lo que no lo es. La ventaja de disponer de slo un
nmero finito de estados es que podemos implementar el sistema mediante un conjunto fijo de recursos. Por ejemplo,
podramos implementarlo por hardware como un circuito, o como una forma simple de programa que puede tomar
decisiones consultando slo una cantidad limitada de datos o utilizando la posicin del propio cdigo para tomar la
decisin.

EJEMPLO 1.1

Modelo de un autmata finito de un interruptor de apagado/encendido (on/off).


Los estados estn representados mediante crculos; en este ejemplo, hemos denominado a los estados on y off. Los arcos
entre los estados estn etiquetados con las "entradas", las cuales representan las influencias externas sobre el sistema, e
indican a que estado pasa el autmata partiendo de un estado dado y recibiendo una entrada concreta. Uno de los estados se
designa como el "estado inicial", el estado en el que el sistema se encuentra inicialmente.
A menudo es necesario especificar uno o ms estados como estado "final" o "de aceptacin". Llegar a uno de estos
estados despus de una secuencia de entradas indica que dicha secuencia es correcta. Los estados de aceptacin se indican
mediante un crculo doble.
EJEMPLO 1.2
Autmata finito que podra formar parte de un analizador lxico. El trabajo de este autmata consiste en reconocer la
palabra clave then, por lo que necesita cinco estados, representando cada uno de ellos la posicin dentro de dicha palabra
que se ha alcanzado hasta el momento.

Modelo de autmata finito para el reconocimiento de la palabra then.

1.1.2 Representaciones estructurales


Existen dos importantes notaciones que no son las utilizadas normalmente con los autmatas, pero que desempean un
importante papel en el estudio de los autmatas y sus aplicaciones.
l. Las gramticas son modelos tiles en el diseo de software que sirve para procesar datos con una estructura recursiva.
El ejemplo ms conocido es el de un "analizador sintctico" (parser), el componente de un compilador que se ocupa de las
funciones anidadas recursivamente de los lenguajes de programacin tpicos, tales como expresiones aritmticas,
condicionales, etc. Por ejemplo, una regla gramatical como E => E + E establece que una expresin puede formarse
tomando cualesquiera dos expresiones y conectndolas mediante un signo ms;
2. Las expresiones regulares tambin especifican la estructura de los datos, especialmente de las cadenas de texto. El
estilo de estas expresiones difiere significativamente del de las gramticas. Veamos a continuacin un ejemplo simple de
esto. La expresin regular estilo UNIX '[A- Z] [a-z]*[ ] [A-Z] [A-Z], representa palabras que comienzan por una letra
mayscula, seguida de cualquier cantidad de letras minsculas, un espacio y dos letras maysculas.

1.1.3 Autmatas y complejidad


Los autmatas son esenciales para el estudio de los lmites de la computacin. Como hemos indicado en la introduccin
del captulo, existen dos factores importantes a este respecto:
l. Qu puede hacer una computadora? Esta 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 eficiente? Esta rea de estudio se conoce como "intratabilidad", y los
problemas que una computadora puede resolver en un tiempo proporcional a alguna funcin que crezca lentamente con
el tamao de la entrada se dice que son "tratables".

1.5 Conceptos fundamentales de la teora de autmatas


Los trminos ms importantes empleados en la teora de autmatas son:

1.5.1 Alfabetos
Un alfabeto es un conjunto de smbolos finito y no vaco. Convencionalmente, utilizamos el smbolo
un alfabeto. Entre los alfabetos ms comunes se incluyen los siguientes:
1. = {0, 1}, el alfabeto binario.
2. = {a,b , .. . ,z}, el conjunto de todas las letras minsculas.
3. El conjunto de todos los caracteres ASCII o el conjunto de todos los caracteres ASCII imprimibles.

para designar

1.5.2 Cadenas de caracteres


Una cadena de caracteres (que tambin se denomina en ocasiones palabra) es una secuencia finita de smbolos
seleccionados de algn alfabeto.
La cadena vaca
La cadena vaca es aquella cadena que presenta cero apariciones de smbolos. Esta cadena, designada por
cadena que puede construirse en cualquier alfabeto.

, es una

Longitud de una cadena


Suele ser til clasificar las cadenas por su longitud, es decir, el nmero de posiciones ocupadas por smbolos dentro de la
cadena. No confundir nmero de smbolos de una cadena (distintos) con posiciones ocupadas por dichos smbolos. La
notacin estndar para indicar la longitud de una cadena w es |w|. Por ejemplo, |011| = 3 y | | = 0.
Potencias de un alfabeto
Si es un alfabeto, podemos expresar el conjunto de todas las cadenas de una determinada longitud de dicho alfabeto
utilizando una notacin exponencial. Definimos k para que sea el conjunto de las cadenas de longitud k, tales que cada
uno de los smbolos de las mismas pertenece a .
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,... }. Expresado de otra forma:
* 0 1 2 ... .
En ocasiones, desearemos excluir la cadena vaca del conjunto de cadenas. El conjunto de cadenas no vacas del alfabeto
se designa como . Por tanto, dos equivalencias apropiadas son:

1 2 3 ... .
* { } .

Concatenacin de cadenas
Sean x e y dos cadenas. Entonces, xy denota la concatenacin de x e y, es decir, la cadena formada por una copia de x
seguida de una copia de y.
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 concatenacin.

1.5.3 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 smbolos de , ya que una vez que hemos establecido que L es un lenguaje de
, tambin sabemos que es un lenguaje de cualquier alfabeto que sea un superconjunto de L. Un ejemplo es el lenguaje
C, o cualquier otro lenguaje de programacin, donde los programas correctos son un subconjunto de las posibles cadenas
que pueden formarse a partir del alfabeto del lenguaje. Este alfabeto es un subconjunto de los caracteres ASCII. El alfabeto
en concreto puede diferir ligeramente entre diferentes lenguajes de programacin, aunque generalmente incluye las letras
maysculas y minsculas, los dgitos, los caracteres de puntuacin y los smbolos matemticos.

* es un lenguaje para cualquier alfabeto .


0, el lenguaje vaco, es un lenguaje de cualquier alfabeto.

{ } , el lenguaje que consta slo de la cadena vaca, tambin es un lenguaje de cualquier alfabeto. Observe que 0
{ } ; el primero no contiene ninguna cadena y el segundo slo tiene una cadena.
La nica restriccin importante sobre lo que puede ser un lenguaje es que todos los alfabetos son finitos. De este modo,
los lenguajes, aunque pueden tener un nmero infinito de cadenas, estn restringidos a que dichas cadenas estn formadas
por los smbolos que definen un alfabeto finito y prefijado.
Definicin de lenguajes mediante descripciones de conjuntos
Es habitual describir un lenguaje utilizando una "descripcin de conjuntos", ejemplo: {w | w consta de un nmero igual
de ceros que de unos}.
Tambin es habitual reemplazar w por alguna expresin con parmetros y describir las cadenas del lenguaje
estableciendo condiciones sobre los parmetros: {0 n1n | n 1} . Esta expresin se lee: "El conjunto de 0 a la n 1 a la n tal
que n es mayor o igual que 1".

1.5.4 Problemas
En la teora de autmatas, un problema es la cuestin de decidir si una determinada cadena es un elemento de un
determinado lenguaje. Como veremos, cualquier cosa que coloquialmente denominamos "problema" podemos expresarlo
como elemento de un lenguaje. De manera ms precisa, si es un alfabeto y L es un lenguaje de , entonces el
problema L es:
Dada una cadena w de * , decidir si w pertenece o no a L .
Es un lenguaje o un problema?
Lenguajes y problemas son realmente la misma cosa. El trmino que empleemos depende de nuestro punto de vista.

1.6 Resumen del Captulo 1


+ Autmatas finitos. Los autmatas finitos utilizan estados y transiciones entre estados en respuesta a las entradas.
Resultan tiles para construir diversos tipos de software, incluyendo el componente de anlisis lxico de un compilador y
los sistemas que permiten verificar la correccin de, por ejemplo, circuitos o protocolos.
+ Expresiones regulares. Definen una notacin estructural que permite describir los mismos patrones que se pueden
representar mediante los autmatas finitos. Se emplean en muchos tipos comunes de software, incluyendo herramientas
para la bsqueda de patrones, por ejemplo, en textos o en nombres de archivo.
+ Gramticas independientes del contexto. Definen una importante notacin para describir la estructura de los lenguajes
de programacin y de los conjuntos relacionados de cadenas de caracteres; resultan tiles en la construccin del analizador
sintctico de un compilador.
+ Mquinas de Turing. Son autmatas que modelan la potencia de las computadoras reales. Nos permiten estudiar la
decidibilidad, es decir, el problema de qu puede o no puede hacer una computadora. Tambin nos permiten distinguir los
problemas tratables (aquellos que pueden resolverse en un tiempo polinmico) de los problemas intratables (los que no se
pueden resolver en un tiempo polinmico).
+ Alfabetos. Un alfabeto es cualquier conjunto finito de smbolos.
+ Cadenas de caracteres. Una cadena es una secuencia de smbolos de longitud finita.
+ Lenguajes y problemas. Un lenguaje es un conjunto (posiblemente infinito) de cadenas, donde los smbolos smbolo de
todas ellas se han seleccionado de un determinado alfabeto. Cuando las cadenas de un lenguaje se interpretan de alguna
manera, la cuestin de si una cadena pertenece o no al lenguaje se dice, en ocasiones, que es un problema.

You might also like