Algoritmos y Estructuras de Datos Compiladores e Intérpretes Herramientas Lenguaje de programación
!Prog C/C++
Linux Matemáticas
Mates Discretas
Programación Orientada a Objetos Redes y Computación Distribuida Sistemas Operativos

Introducción

[date: 11-01-2025] [last modification: 14-01-2025]
[words: 937] [reading time: 5min] [size: 12293 bytes]

En este artículo de introducción a la Teoría de Autómatas y Lenguajes Formales, veremos los conceptos básicos y notación alfabetos, lenguajes, gramáticas y autómatas. La parte más importante de este campo es comprender la relación entre estos últimos tres conceptos.

Teoría de autómatas
Estudio de máquinas o dispositivos abstractos con capacidad de computación.

Aplicaciones

De los autómatas finitos:

De las gramáticas:

De las expresiones regulares:

Definiciones

Alfabetos y palabras

Alfabeto
Un alfabeto $\Sigma$ es conjunto finito no vacío de símbolos.

Ejemplo: $\Sigma = \set{0, 1}$

Cadena o Palabra
Una cadena es una secuencia finita de símbolos pertenecientes a un alfabeto.
La cadena vacía ($\lambda$, $\epsilon$) es la que no contiene ningún símbolo.
Recordar que $|w|$ es el número de símbolos de la cadena $w$.

Ejemplo: $a = ‘0110101’$

Potencia de un alfabeto
La potencia de un alfabeto, $\Sigma^{k}$, es el conjunto de todas las cadenas de longitud $k$ que se pueden formar.

Ejemplo: $\Sigma^{2} = \set{‘00’, ‘01’, ‘10’, ‘11’}$

Clausura positiva de un alfabeto

El cierre de un alfabeto contiene todas las posibles cadenas que se pueden formar con él, salvo la cadena vacía.

$$ \Sigma^{+} = \Sigma^1 \cup \Sigma^2 \ldots $$
Clausura o cierre de un alfabeto

El cierre de un alfabeto contiene todas las posibles cadenas que se pueden formar con él, incluyendo la cadena vacía.

$$ \Sigma^{*} = \set{\lambda} \cup \Sigma^1 \cup \Sigma^2 \ldots = \set{\lambda} \cup \Sigma^{+}$$
Concatenación de cadenas

Si la secuencia de símbolos $A_1 \ldots A_n$ es la cadena $a$, y $B_1 \ldots B_m$ es la cadena $b$, entonces la concatenación se define como:

$$ ab = A_1 \ldots A_n B_1 \ldots B_m $$

Ejemplo: $a = ‘00’, b = ‘11’ \implies ab = ‘0011’$

Potencia de cadenas
La $i$-ésima potencia de la cadena $x$, $x^i$, es la concatenación sucesiva de $x$ $i$ veces.

Ejemplo: $a = ‘01’ \implies a^3 = ‘010101’$

Reflexión de cadenas

Si la secuencia de símbolos $A_1 \ldots A_n$ es la cadena $a$, entonces la cadena inversa $a^{-1}$ se forma invirtiendo el orden de los símbolos:

$$ a^{-1} = A_n \ldots A_1 $$

Ejemplo: $a = ‘01’ \implies a^{-1} = ‘10’$

Lenguajes

Lenguaje

Cualquier conjunto de cadenas del alfabeto $\Sigma$ será un lenguaje de $\Sigma$.

$$ L \subseteq \Sigma^{*}$$

El alfabeto sobre el que se define debe ser finito, pero los lenguajes pueden tener un infinito número de cadenas.

Ejemplos:

Operaciones con lenguajes
$L_1 \cup L_2$Contiene todas las palabras que pertenecen a cualquiera de ellos.
$L_1 \cap L_2$Contiene todas las palabras que pertenecen a ambos.
$L_1 - L_2$Contiene todas las palabras que pertenecen a $L_1$ pero no a $L_2$.
$L_1 \cdot L_2$Contiene todas las palabras que se pueden formar por la concatenación de una palabra de $L_1$ y otra de $L_2$.
$L^i$La potencia $i$-ésima es la concatenación $i$ veces consigo mismo.
$L^-$La reflexión se forma por la aplicación de la reflexión a todas las cadenas.

Gramáticas

Gramática
Una gramática establece la estructura de un lenguaje.

Es decir, define las sentencias que lo forman, proporcionando formas válidas en que se pueden combinar los símbolos del alfabeto.

Chomsky hizo una clasificación de las gramáticas:

$$ G3 \subseteq G2 \subseteq G1 \subseteq G0 $$

Autómata

Máquina abstracta o autómata
Dispositivo teórico capaz de recibir, transformar y transmitir información.

Dada una cadena de símbolos presentados a su entrada, produce una cadena de símbolos a su salida, en función de dichas entradas y los estados internos por los que transita la máquina.

Por ejemplo, el autómata de un interruptor de luz:

    stateDiagram-v2
    direction LR
    q0: Off
    q1: On

    [*] --> q0
    q0 --> q1: Pulsar
    q1 --> q0: Pulsar

Tiene dos posibles entradas: presionar el botón o no presionar el botón; y produce dos posibles respuestas: encender la luz o apagar la luz, en función de si antes estaba apagada la luz o encendida.

Relación entre máquina, lenguaje y gramática

    flowchart TB
    L[Lenguaje]
    G[Gramática]
    M[Máquina]

    G <-- Equivale --> M
    M -- Genera / Reconoce --> L
    G -- Genera / Describe --> L

Y la correspondencia entre los diferentes tipos de gramáticas y las máquinas es la siguiente:

GramáticaLenguajeMáquinaComplejidad
Tipo 0: G0 - Sin restriccionesRecursivamente enumerableMáquina de TuringIndecibible
Tipo 1: G1 - Sensible al contextoSensible al contextoAutómata linealmente acotadoExponencial
Tipo 2: G2 - Independiente de contextoIndependiente del contextoAutómata con pilaPolinómica
Tipo 3: G3 - RegularesRegularAutómata finitoLineal

Jerarquía de Chomsky

$$ L_{\text{RE}} \subset L_{\text{REC}} \subset L_{\text{CS}} \subset L_{\text{CF}} \subset L_{\text{DCF}} \subset L_{\text{REG}} $$
Volver a Compiladores e Intérpretes Siguiente: Autómatas Finitos