Conceptos Fundamentales de la Teoría de Autómatas
Alfabeto: conjunto de símbolos finito y no vacío:
\Sigma = { 0,1 } \text{, el alfabeto binario} \\ \Sigma = \{ a,b,\ldots,z \} \text{, el conjunto de todas las letras minúsculas}
El conjunto de todos los caracteres ASCII.
El conjunto de todos los caracteres ASCII imprimibles.
Cadena de caracteres – palabra: secuencia finita de símbolos seleccionados de algún alfabeto:
01101 y 111 son cadenas del alfabeto binario.
Cadena vacía; cadena que presenta cero apariciones de símbolos y se puede construir con cualquier alfabeto, se designa por:
\varepsilon
Longitud de una cadena: número de posiciones ocupadas por símbolos dentro de una cadena, comúnmente se dice que la longitud de la cadena es el número de símbolos aunque no es estrictamente correcto:
\begin{aligned} w = 001 \rightarrow |w| & = 3 \\ |001| & = 3 \\ |01101| & = 5 \\ | \varepsilon | & = 0 \end{aligned}
Potencias de un alfabeto: la notación exponencial permite expresar el conjunto de todas las cadenas de una determinada longitud sobre un alfabeto:
\Sigma^k
conjunto de cadenas de longitud k tales que cada uno de los simbolos de las palabras pertenecen al alfabeto:
\begin{aligned} \Sigma^0 & = \{ \varepsilon \} \\ \Sigma = \{ 0,1 \} \rightarrow \Sigma^1 & = \{ 0, 1 \} \\ \Sigma^2 & = \{ 00, 01, 10, 11 \} \\ \Sigma^3 & = \{ 000, 001, 010, 011, 100, 101, 110, 111 \} \end{aligned}
El conjunto de todas las cadenas de un alfabeto se designa por:
\begin{aligned} \Sigma^* & = \Sigma^0 \cup \Sigma^1 \cup \Sigma^2 \cup \cdots \\ \Sigma^+ & = \Sigma^1 \cup \Sigma^2 \cup \cdots \\ \Sigma^* & = \Sigma^+ \cup \{ \varepsilon \} \end{aligned}
Concatenación de Cadenas: es la cadena formada a partir de la copia de una cadena (x) seguida de la copia de otra (y), si la primera se compone de i símbolos y la segunda de j símbolos entonces la cadena xy se compondrá de i+j́ símbolos:
\begin{aligned} x & = a_1 a_2 \cdots a_i & \wedge y & = b_1 b_2 \cdots b_j \\ \wedge |x| & = i & \wedge |y| & = j \\ & \rightarrow \\ & xy = a_1 a_2 \cdots a_i b_1 b_2 \cdots b_j \\ & |xy| = i+j \end{aligned}
\varepsilon w = w \varepsilon = w
\begin{aligned} x & = 01101 \\ y & = 110 \\ xy & = 01101110 \\ yx & = 11001101 \end{aligned}
Lenguaje: es un conjunto de cadenas seleccionadas de Σ*
L \subseteq \Sigma^*
El lenguaje de todas las cadenas que constan de n ceros seguidos de n unos, con n mayor o igual que 0:
\{ \varepsilon, 01, 0011, 000111, \dots \}
El conjunto de cadenas formadas por el mismo número de ceros que de unos:
\{ \varepsilon, 01, 10, 0011, 0101, 1001, \dots \}
El conjunto de números binarios cuyo valor es un número primo:
\{ 10, 11, 101, 111, 1011, \dots \}
El lenguaje vacio (∅) es un lenguaje de cualquier alfabeto, pero:
\empty \neq \{ \varepsilon \}
Definición de lenguaje mediante descripciones de conjuntos:
\begin{aligned} & \{ w | w \text{ consta de un número igual de ceros que de unos} \} \\ & \{ w | w \text{ es un entero binario primo} \} \\ & \{ w | w \text{ es un programa en C sintácticamente correcto} \} \\ & \{ 0^n1^n | n \geq 1 \} \\ & \{ 0^i1^j | 0 \leq i \leq j \} \end{aligned}
Hopcroft, J., Motwani, R. y Ullman, J. 2007. Introducción a la teoría de autómatas, lenguajes y computación. Perason Educación: Madrid.