Lenguajes Formales desde CERO
Lenguajes Formales desde CERO
Introducción: Números y Palabras
¿Dónde se unen los números y las palabras? Un ejemplo claro es la propiedad espejo (palíndromos numéricos), donde un número se lee igual de izquierda a derecha que de derecha a izquierda. Para estudiar los números como palabras, necesitamos herramientas matemáticas: los lenguajes formales.
¿Qué veremos en este tutorial?
Qué son los lenguajes formales.
Operaciones básicas sobre ellos.
Su relación con la teoría de autómatas.
1. Alfabeto (Σ)
Un alfabeto es un conjunto finito de símbolos.
Ejemplos:
Alfabeto español: {a, b, c, ..., z}.
Alfabeto binario: {0, 1}.
Alfabeto decimal: {0, 1, 2, ..., 9}.
¡Importante!
Un alfabeto debe ser finito.
❌ Los números naturales no son un alfabeto (son infinitos).
✅ Los dígitos del 0 al 9 sí forman un alfabeto finito. Con combinaciones de estos símbolos podemos representar todos los números naturales.
2. Cadenas (o Palabras)
Una cadena es una secuencia finita y ordenada de símbolos de un alfabeto.
Ejemplo:
Con Σ = {a, b, c}, "abc" es una cadena válida.
Con Σ = {0, 1}, "0110" es una cadena válida.
Cadena vacía (λ o ε)
Es una cadena de longitud cero, sin símbolos. Es un concepto fundamental en lenguajes formales.
3. Propiedades de las Cadenas
Longitud de una cadena
La longitud (|w|) es el número de símbolos en la cadena.
Definición recursiva:
|λ| = 0.
Si w = a · x (donde 'a' es un símbolo y 'x' es una cadena), entonces |w| = 1 + |x|.
Ejemplo:
Para w = "like":
|"like"| = 1 + |"ike"|
|"ike"| = 1 + |"ke"|
|"ke"| = 1 + |"e"|
|"e"| = 1 + |λ| = 1 + 0 = 1
Resultado: |"like"| = 4.
Conteo de apariciones
|w|_a = número de veces que aparece el símbolo 'a' en la cadena w.
Ejemplo:
Para w = "suscrito", |w|_s = 2.
4. Orden de Cadenas
Para ordenar cadenas, primero se considera la longitud, luego el orden alfabético.
Ejemplos:
"hola" (longitud 4) va antes que "mundo" (longitud 5).
Si tienen igual longitud (ej: "sol" y "sal"): se ordenan alfabéticamente según los símbolos en cada posición ("sal" antes que "sol").
5. Conjunto de Todas las Cadenas Posibles
Alfabeto elevado a n (Σⁿ)
Conjunto de todas las cadenas de longitud n sobre Σ.
Ejemplo: Σ = {0, 1}
Σ⁰ = {λ} (solo cadena vacía)
Σ¹ = {0, 1}
Σ² = {00, 01, 10, 11}
Σⁿ tiene 2ⁿ elementos (combinatoria).
Clausura de Kleene (Σ*)
Es el conjunto de todas las cadenas posibles de cualquier longitud (incluida λ) sobre Σ.
Fórmula: Σ* = Σ⁰ ∪ Σ¹ ∪ Σ² ∪ Σ³ ∪ ...
Ejemplo: Σ = {0, 1}
Σ* = {λ, 0, 1, 00, 01, 10, 11, 000, 001, ...} (¡infinito!)
Clausura Positiva (Σ⁺)
Igual que Σ*, pero excluyendo la cadena vacía λ.
Σ⁺ = Σ¹ ∪ Σ² ∪ Σ³ ∪ ...
6. Aplicación y Significado
La Clausura de Kleene representa todas las posibilidades infinitas de un alfabeto:
Ejemplos:
Σ = {0, 1}: Σ* = todos los números binarios posibles.
Σ = letras español: Σ* = todas las palabras que puedan existir (pasado, presente y futuro).
Σ = caracteres ASCII: Σ* = todas las novelas, conversaciones, códigos, etc., escritos con ASCII.
Resumen de Conceptos Clave
| Término | Definición | Símbolo/Ejemplo |
|---|---|---|
| Alfabeto | Conjunto finito de símbolos | Σ = {a, b, c} |
| Cadena | Secuencia finita de símbolos | w = "abc" |
| Cadena vacía | Cadena de longitud 0 | λ o ε |
| Longitud | Número de símbolos | |"hola"| = 4 |
| Σⁿ | Cadenas de longitud n | Σ² = {aa, ab, ba, bb} |
| Σ* (Kleene) | Todas las cadenas posibles (con λ) | Σ* = Σ⁰ ∪ Σ¹ ∪ ... |
| Σ⁺ (Positiva) | Todas las cadenas posibles (sin λ) | Σ⁺ = Σ¹ ∪ Σ² ∪ ... |
Próximos Pasos
En el siguiente tutorial veremos:
Operaciones con cadenas (concatenación, inversión, potencias).
Definición formal de lenguaje (subconjunto de Σ*).
Operaciones entre lenguajes (unión, intersección, concatenación).
¡No olvides practicar!
Prueba con diferentes alfabetos y genera ejemplos de cadenas, calcula longitudes, ordena cadenas y explora las infinitas posibilidades de Σ*.
Este es solo el comienzo del fascinante mundo de los lenguajes formales y su conexión con la teoría de autómatas. ¡Hasta el próximo tutorial!
Comentarios
Publicar un comentario