Lenguajes y Autómatas - Módulo 1.1 (Alfabetos, cadenas y lenguajes)

Lenguajes y Autómatas - Módulo 1.1 (Alfabetos, cadenas y lenguajes)

Introducción a Alfabetos, Cadenas y Lenguajes

Conceptos Fundamentales

  • Se presenta el tema del curso sobre lenguajes y autómatas, enfatizando la importancia de entender los fundamentos de la lingüística en relación con los lenguajes de programación.
  • Se define un alfabeto como un conjunto no vacío de símbolos o caracteres, denotado por Sigma (Σ), cuya cardinalidad es mayor que cero.
  • Ejemplos de alfabetos incluyen el alfabeto español (a-z, ñ) y el alfabeto binario (0, 1). También se menciona el alfabeto hexadecimal utilizado en codificaciones como HTML.

Palabras y Cadenas

  • Los símbolos de un alfabeto se combinan para formar palabras o cadenas. Una cadena es una yuxtaposición de elementos del alfabeto.
  • La palabra vacía se denota con épsilon (ε), siendo la única cadena posible de tamaño cero. El largo de una palabra se mide por su número de símbolos.

Combinaciones y Notaciones

  • Se introduce la notación Σ^n para representar todas las combinaciones posibles de longitud n. Por ejemplo, Σ^0 solo tiene la cadena vacía.
  • La clausura de Kleene (Σ*) incluye todas las cadenas posibles construidas a partir del alfabeto dado, mientras que Σ+ excluye la palabra vacía.

Concatenación y Estructura

  • Al concatenar palabras se pueden formar nuevas cadenas más largas. Esto es común en idiomas como el alemán o español con palabras compuestas.
  • Se explica cómo determinar prefijos, sufijos y subcadenas dentro de una cadena dada. Por ejemplo, en "0110", "0" es un prefijo y "10" puede ser considerado un sufijo.

Definición de Lenguaje

Operaciones sobre Lenguajes Formales

Concatenación de Lenguajes

  • Se puede concatenar dos lenguajes, denotados como L1 y L2, formando un nuevo conjunto de cadenas que combina elementos de ambos.

Disyunción de Lenguajes

  • La operación de disyunción permite considerar cadenas que pertenecen a uno u otro lenguaje, representado por el conjunto de cadenas X donde X pertenece a L1 o L2.

Potencia de un Lenguaje

  • La operación potencia se representa con superíndices; por ejemplo, L^k es la concatenación del lenguaje con palabras de tamaño uno multiplicado por L^(k-1).

Clausura y Complemento

  • La clausura se refiere a la unión de los lenguajes elevados a diferentes potencias (L^0, L^1, etc.). El complemento toma todas las combinaciones posibles en un alfabeto dado y resta el lenguaje considerado.

Ejemplo en Programación

Video description

Material elaborado por el Profesor Dr. Fabián Riquelme Csori, para el curso de Lenguajes y Autómatas, de la Escuela de Ingeniería Civil Informática de la Universidad de Valparaíso, Chile. MÓDULOS DEL CURSO Capítulo 1. Lenguajes regulares y autómatas finitos. 1. Alfabetos, cadenas y lenguajes 2. Jerarquía de Chomsky 3. Expresiones regulares 4. Autómatas finitos deterministas (DFA) 5. Autómatas finitos no-deterministas (NFA) 6. Conversión y equivalencia NFA-DFA 7. Lema del bombeo (para lenguajes regulares) Capítulo 2. Lenguajes libres de contexto y autómatas de pila 1. Gramáticas libres de contexto (CFG) 2. Árboles de derivación 3. Autómatas de pila (PDA) 4. Conversión CFG-PDA 5. Lema del bombeo (para lenguajes libres de contexto) Capítulo 3. Máquinas de Turing y computabilidad 1. Tesis de Church-Turing 2. Máquinas de Turing (TM) 3. TM en notación modular 4. Variaciones de TM 5. TM no-deterministas