De palabras y lenguajes





No one shall expel us from the paradise which Cantor has created for us — David Hilbert



Ivan Meza

De la clase pasada:

¿Qué es una computadora?

¿Qué hace una computadora?

¿Qué no hace una computadora?

¿Qué es constante en una computadora?

Necesitamos una forma de hablar de todas las computadoras

Una buena aproximación...

  • Proceso/caja negra

Esta simplificación, sigue muy compleja

  • Muchas entradas
  • Muchas cajas negras
  • Muchas salidas

Entradas

¿Cuántas y cuáles?

  • Una, dos, tres....
  • Booleanos, Números, cadenas, estructuras, clicks, funciones, ...

Salidas

¿Cuántas y cuáles?

  • Muchas
  • Booleanos, números, cadenas, estructuras, pantalla, funciones, ...

¿Cómo hablamos de todas las cajas negras?

  • Una entrada: cadena
  • Una salida: booleana

Propuesta

Una entrada y una salida

Una entrada: muchos casos

Todas las entradas pueden ser reducidas a una, por concatenación de cadenas

Ejemplo

La máquina que calcula $a+b$

La máquina recibe: $a$ seguida de $b$

Opciones:

  • $a:b$
  • $ab$
  • $000:a,001:b$

Una salida: dos casos

Mucho más sencillo

Ejemplo

La máquina que calcula $a+b$

La máquina regresa: Falso o Verdadero

Significa que la máquina llegó a un estado donde produjo un resultado

  • $V/[F]$: Esos números (no) los puedo sumar
  • $V/[F]$: Esos números (no) los sumé


El resultado, un efecto secundario

Esta sí es una simplificación

  • De muchas entradas a muchas de un solo tipo
  • No cambia el número de cajas negras
  • De muchas salidas a dos salidas

¿Cómo generamos todas las entradas?


Combinaciones de elementos básicos

¡Teoría de conjuntos!

concepto Alfabeto

  • Un conjunto de elementos "básicos" finito
  • Notación $\Sigma$

Ejemplos de alfabetos

  • $\{a,b\}$
  • $\{0,1\}$
  • $\{import\ , print\ , for\ , in\ , v1\ , 1, 2, 3, [, ],','\}$

concepto Cadena

  • Secuencia finita de elementos de un alfabeto $\Sigma$
  • Notación $w$

Ejemplos de cadenas

  • $baaaaa, bab, abbbbabbbb, ...$
  • $0,1,0101,10001,10001, ...$
  • $import\ m, for\ v1\ in [1,2,3], in\ while\ if , ...$

Longitud de una cadena

  • $|baaaaa|=6$
  • $|bab|=3$
  • $|abbbbabbbb|=11$
  • $|0|=1$
  • $|1|=1$
  • $|0101|=4$

Longitud de una cadena

  • $|10001|=5$
  • $|11001|=?$
  • $|import\ m|=?$
  • $|for\ v1\ in [1,2,3]|=?$
  • $|in\ while\ if|=?$

concepto LA CADENA VACIA

  • Longitud cero
  • Notación $\epsilon$

$|\epsilon|=$0

concepto Concatenación

Para dos palabras $w_1$ y $w_2$

  • $w_1 = w_{1_1} w_{1_2}...w_{1_m}$
  • $|w_1| = m$
  • $w_2 = w_{2_1}w_{2_2}...w_{2_n}$
  • $|w_2| = n$

La concatenación de $w_1$ y $w_2$ es

  • $w_1 w_2 = w_{1_1} w_{1_2}...w_{1_m} w_{2_1}w_{2_2}...w_{2_n}$
  • $aab\ bba = aabbba$

Propiedades de la concatenación

  • $w_1w_2 \ne w_2w_1$
  • $w_1w_2w_3 = (w_1w_2)w_3 = w_1(w_2w_3)$
  • $w_1\epsilon = \epsilon w_1 = w_1$
  • $|w_1w_2|=|w_1|+|w_2| $

Lenguajes

¡Lenguajes!

¡¡Lenguajes!!

¡¡¡Lenguajes!!!

concepto Lenguajes

  • Conjunto de cadenas de un alfabeto $\Sigma$
  • Notación $L$

Bienvenidos al infinito

Ejemplos de lenguajes

  • $\{a,b\}$
  • $\{aa,bb,aaa,bbb,aaaa,bbbb\}$
  • $\{a,aa,aaa,aaaa,aaaaa, ... \}$

Lenguajes notables

  • $\{\epsilon\}$
  • $\{\}=\emptyset$

Potencia de un alfabeto

De alfabeto $\Sigma$ a lenguaje $L$, supongamos $\Sigma=\{a,b\}$

  • $\Sigma^0=\{\epsilon\}$
  • $\Sigma^1=\{a,b\}$
  • $\Sigma^2=\{aa,ab,ba,bb\}$
  • $\Sigma^3=\{aaa,aab,aba,abb,baa,bab,bba,bbb\}$
  • ...

Un lenguaje notable

  • $\Sigma^*=\Sigma^0 \cup \Sigma^1 \cup \Sigma^2 \cup \Sigma^3 \cup ...$
  • El conjunto de todas las palabras posibles con $\Sigma$, incluyendo la cadena vacía

Para $\Sigma=\{a,b\}$

  • $\Sigma^*=\{\epsilon,a,b,aa,ab,ba,bb,aaa,aab,aba,abb,baa,bab,bba,bbb,... \}$

Todo $L$ sobre $\Sigma$ es un subconjunto de $\Sigma^*$

concepto Concatenación de lenguajes

Para dos lenguajes $L_1$ y $L_2$

  • $L_1 L_2 = \{w_{1} w_{2} | w_1 \in L_1 y\ w_2 \in L_2 \}$

Ejemplos concatenación de lenguajes

$L_1=\{aa\}$, $L_2=\{a,b\}$, $L_3=\{\epsilon\}$ y $L_4=\{a,aa,aaa,aaaa,...\}$

  • $L_1 L_2 =$ $\{aaa,aab\}$
  • $L_2 L_1 =$ $\{aaa,baa\}$
  • $L_2 L_2 =$ $\{aa,ab,ba,bb\}$
  • $L_2 L_3 =$ $\{a,b \}$
  • $L_1 L_4 =$ $\{aaa,aaaa,aaaaa,... \}$

Si podemos concatenar lenguajes ¿exite $L^*$?

Cerradura de un Lenguaje

  • $L^*\ = \bigcup_{i=0}^\infty L^i$ (Kleene estrella)

  • $L^+ = \bigcup_{i=1}^\infty L^i$ (Kleene más)

Stephen C. Kleene


Ejemplos de cerraduras

Para $L=\{aa\}$


  • $L^*\ =\{\epsilon,aa,aaaa,aaaaaa,aaaaaaaa,... \}$

  • $L^+=\{\ \ \ aa,aaaa,aaaaaa,aaaaaaaa,... \}$

¿alguien puede describir este lenguaje?

Cerraduras notables

  • $\{\epsilon\}^*=$$\{\epsilon\}$
  • $\{\epsilon\}^+=$$\{\epsilon\}$

  • $\emptyset^*=$$\{\epsilon\}$
  • $\emptyset^+=$$\{\ \}$

El poder de la cadena vacía

  • $\{\epsilon\}L=L$
  • $L\{\epsilon\}=L$

Si presente, $\epsilon$ copia un lenguaje

  • $\{\epsilon,...\}L=(\{\epsilon\}\cup L_r)L=(\{\epsilon\}L)\cup(L_rL)=L\cup L_rL$

Las operaciones normales de los conjuntos

  • Union: $L_1 \cup L_2$
  • Intersección: $L_2 \cap L_2$
  • Diferencia: $L_1 - L_2$

Complemento

  • $\overline{L} = \Sigma^* - L$

conceptoLenguajes que generan lenguajes

En el curso nos concentraremos en 4 operaciones

  • Union
  • Concatenación
  • Cerradura
  • Complemento

Las operaciones aceptan lenguajes y crean "nuevos" lenguajes

Unión

Concatenación

¿Cómo el resultado podría contener a uno?

Concatenación

¿A los dos?

Cerradura

¿Cómo el resultado podría contener al original?

Complemento

Describiendo lenguajes

  • $\{w | w\in\Sigma^*$ con propiedad$\}$

Ejemplos de lenguajes

Si $\Sigma=\{a,b\}$

  • $\{w | w\in\Sigma^*$ y con número par de aes $\}$
  • $\{w | w\in\Sigma^*$ y con sólo bes y número impar de bes $\}$

Resumen

  • Cajas negras que representan a todos lo que se computa
  • Una entrada de un tipo, muchos valores; una salida, dos valores
  • ¿Cómo generamos todas las entradas?
    • Alfabeto
    • Cadenas
    • Lenguajes
  • De alfabeto a lenguaje: potencia
  • Concatenación de lenguajes
  • Operaciones que toman lenguajes y hacen otros lenguajes
Licencia de Creative Commons
De palabras y lenguajes by Ivan V. Meza Ruiz is licensed under a Creative Commons Reconocimiento 4.0 Internacional License.
Creado a partir de la obra en http://turing.iimas.unam.mx/~ivanvladimir/slides/lfya/lenguajes.html.