next up previous contents
Siguiente: Conceptos básicos Subir: Teoría de Autómatas y Anterior: Versiones y lista de   Índice General

Introducción

¿Porqué es importante la teoría de lenguajes formales y autómatas?

Bueno, aclaramos primero un poco las palabras usadas...

¿Qué es un lenguaje formal?

Conocemos lenguajes naturales...

Lenguajes formales serán meramente símbolos con una gramática formal para agruparlos.

¿Qué es un autómata?

En el contexto de esta asignatura autómatas serán máquinas matemáticas con estados y funciones de transición (donde se puede añadir entrada, salida, memoria interna modificable, etc.).

En los años 60 se descubrió:

Es decir, la Teoría de los Lenguajes Formales (y de los Autómatas) permite responder a preguntas escenciales de la Informática, por ejemplo:

Sin TALF: no hay lenguajes, no hay compiladores, no hay programas, no hay nada.

Unos ejemplos:

\fbox{favoritas}

Con este ``diagrama'' podemos formar unas reglas para sustituir símbolos:

\begin{displaymath}
\begin{array}{llll}
\$\longrightarrow AB & A\longrightarrow ...
...hrm{en\;informatica} & F\longrightarrow \epsilon &
\end{array}\end{displaymath}

donde usamos $\epsilon $ para decir que no escribimos nada.

Con dichas reglas podemos `derivar' diferentes frases, por ejemplo:

\begin{eqnarray*}
\$&\longrightarrow &AB \\
&\longrightarrow &\mathrm{esos}B \...
...
&\longrightarrow &\mathrm{esos}\;\mathrm{son}\;\mathrm{clases}
\end{eqnarray*}

donde siempre hemos usado una regla adecuada para sustituir símbolos hasta llegar a tal punto que ya no se puede aplicar ninguna regla más.

Y con pequeños arreglos podemos traducirlo al alemán:

\begin{displaymath}
\begin{array}{llll}
\$\longrightarrow AB & A\longrightarrow ...
...thrm{in\;Informatik} & F\longrightarrow \epsilon &
\end{array}\end{displaymath}

es decir, hemos quitado la regla $A\longrightarrow \epsilon$ y hemos cambiado la regla de $H\longrightarrow IJ$ a $H\longrightarrow JI$.

Otro ejemplo mas sencillo.

Usamos las reglas $\$\longrightarrow ab\$$ y $\$\longrightarrow ab$ para generar palabras del tipo $ab$, $abab$, $ababab$ ... Podemos derivar una palabra:


\begin{displaymath}\$\longrightarrow ab\$ \longrightarrow abab\$\longrightarrow ababab\$ \longrightarrow ababab\end{displaymath}

siempre aplicando alguna de las reglas hasta tal punto que ya no se puede aplicar ninguna regla.

Construimos un autómata que acepta una palabra del tipo mencionado. Entendemos por aceptar que el autómata llega a su estado final. Consumimos para cada transición de estado una letra de la palabra. Podemos dibujar un autómata:

\fbox{automata}

donde el estado inicial (o de comienzo) está marcado con una flecha, el estado final está marcado con un doble círculo. Las transiciones están visualizadas con arcos entre los estados que a su vez están marcados con sus símbolos correspondientes. Si empezamos en el estado inicial, y si leemos la palabra por aceptar desde la izquierda hacia la derecha, podemos saltar de estado a estado siguiendo los arcos adecuados.

Observamos que llegamos solamente al estado final si la palabra por aceptar es una palabra válida del lenguaje.

Vemos y veremos

Hacia el final del curso tendremos conocimientos sobre una jerarquía de lenguajes y las equivalencias entre:


next up previous contents
Siguiente: Conceptos básicos Subir: Teoría de Autómatas y Anterior: Versiones y lista de   Índice General
© 2006, Dr. Arno Formella, Universidad de Vigo, Departamento de Informática