1 of 69

De lenguajes y palabras

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

David Hilbert

2 of 69

Buscamos identificar propiedades fundamentales de las computadoras

2

💻

3 of 69

3

👉

👉

👉

👉

4 of 69

Escenario deseado

  • Computadora como un objeto integral

💻

  • La computadora y su relación con el exterior

🌎➡️💻➡️🌎

4

5 of 69

Primero, necesitamos una forma de hablar de cualquier computadora

5

💻

6 of 69

Abstracción de computadora

Una computadora para gobernar a todas

6

1

7 of 69

Como caja negra

7

8 of 69

Pero...

Muchas entradas

En este escenario es difícil determinar qué entrada causa el comportamiento de la caja negra…

… pero las computadoras a las que estamos acostumbrados tienen muchas entradas

Muchas salidas

En este escenario es difícil determinar por qué la salida es como es…

… pero las computadoras a las que estamos acostumbrados tienen muchas salidas

8

9 of 69

Sobre las entradas en nuestras computadoras

  • Número�1, 2, 3, 4, ...
  • Tipos�booleanos, números, cadenas, estructuras, clicks, funciones, ...
  • Dispositivos:�Teclado, mouse, táctil, antenas, sensores...

9

10 of 69

Sobre las salidas en nuestras computadoras

  • Número�1, 2, 3, 4, ...
  • Tipos�booleanos, números, cadenas, estructuras, colores,, ...
  • Dispositivos:�Pantalla, impresoras, bocinas, antenas, ...

10

11 of 69

Muchas entradas y salidas funcionan porque es práctico… dejando a un lado lo práctico

11

12 of 69

Propuesta

12

13 of 69

Una sola entrada

Las entradas se intercalan en un orden que ahora tiene que considerar nuestra caja negra.

13

14 of 69

Por ejemplo para la suma

Suma: a + b, puede entrar

  • ‘valor de a’ : ‘valor de b’
  • ‘valor de a en n-bits’ ‘valor de b en n-bits’
  • ‘Posicion valor 0: valor de a’ ‘Posición valor 1: valor de b’

14

15 of 69

Una sola salida

La salida codifica si algo “útil” se pudo calcular dentro de la caja negra.

15

16 of 69

Por ejemplo para la suma

Suma: a + b, puede salir

  • Verdadero si se calculó a+b
    • 2+2=4
  • Falso si no se calculó a+b
    • ‘ab’+8
    • -inf + 2
    • None + 4

16

17 of 69

Recordemos qué queremos

Relacionar lo que pasa en la computadora con el exterior

  • En nuestro modelo ¿Qué une a la “computadora” con el exterior?

17

18 of 69

En relación al exterior

Entrada

�Es el punto de contacto con el exterior 🌎

Salida

�Codifica la relación de la computadora con la entrada, no necesariamente con lo producido para el exterior

18

19 of 69

19

🌎

🌎

Computadoras como las conocemos

Falso/�Verdadero

Caja negra

Falso/�Verdadero

Abstracción

20 of 69

Qué realmente queremos

Relacionar lo que pasa en la computadora con el exterior

  • Idea pasar todo el exterior a nuestra “caja negra” y checar que pasa con su salida

20

21 of 69

Alfabetos y cadenas

Formalizando las entradas

21

2

22 of 69

Aquí vienen nuestros conjuntos

22

💻

23 of 69

Alfabeto

23

24 of 69

Alfabeto

  • Conjunto de elementos "básicos" finito
  • Notación Σ

24

25 of 69

Ejemplos de alfabeto

  • {a,b}
  • {0,1}
  • {import ,print ,for ,in ,v1 ,1,2,3,[,],′,′,m,’ ‘}

25

26 of 69

Cadenas

26

27 of 69

Cadenas

  • Secuencia finita de elementos de un alfabeto Σ
  • Notación w

27

28 of 69

Ejemplos de cadenas

  • Baaaaa,bab y abbbbabbbb
  • 0,1,0101,10001 y 10001
  • import m,for v1 in[1,2,3] y in while if

28

29 of 69

Longitud de una cadena

|w| → n

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

29

30 of 69

La cadena vacia

Longitud cero, una secuencia donde se escoge ningún elemento del alfabeto

Notación: ε

|ε|=0

30

31 of 69

La operación concatenación de cadenas

Para dos palabras w1 y w2

  • w1=a11a12...a1n donde |w1|=n
  • w2=a21a22...a2m donde |w2|=m

La concatenación de w1 y w2 es

w1w2=a11a12...a1na21a22...a2m

31

32 of 69

Ejemplos de concatenación de cadenas

  • b y aaaa = baaaa
  • 0 y 1 = 01
  • 1 y 0 = 10
  • ε y 0 = 0
  • 1 y ε = 1

32

33 of 69

Propiedades de la concatenación de cadenas

  • w1w2≠w2w1
  • w1w2w3=(w1w2)w3=w1(w2w3)
  • wε = εw = w
  • |w1w2|=|w1|+|w2|

33

34 of 69

Lenguajes

34

35 of 69

Lenguajes

35

💻

36 of 69

¡Lenguajes!

36

💻

37 of 69

¡¡Lenguajes!!

37

💻

38 of 69

¡¡¡Lenguajes!!!

38

💻

39 of 69

Lenguaje

  • Conjunto de cadenas basado en un alfabeto Σ
  • Notación L

39

40 of 69

Bienvenidos al infinito

y más allá

40

41 of 69

Ejemplos de lenguaje

  • {a,aa, aaa, aaaa, aaaaa, aaaaaa}
  • {bb,aa,bbbb,aaaa,bbbb,aaaaa}
  • {a,b,aa,ab,ba,bb,aaa,aba,aab,baa,abb,bba,bab,bbb,...}
  • {a,b}

41

42 of 69

Lenguajes Notables

  • {ε}�El lenguaje de la cadena vacía�
  • {} = ∅�El lenguaje vacío

42

43 of 69

Potencia

Lenguajes a partir de alfabetos

43

3

44 of 69

Potencia de un alfabeto Σn

Σ1

Lenguaje formado por todas las cadenas formadas concatenaciones de un sólo símbolo del alfabeto Σ

Σ2

Lenguaje formado por todas las cadenas formadas por concatenaciones de dos símbolos del alfabeto Σ

Σ3

Lenguaje formado por todas las cadenas formadas por concatenaciones de tres símbolo del alfabeto Σ

Σ0={ε}

Lenguaje formado por todas las cadenas conformadas por ningún símbolo del alfabeto Σ

44

45 of 69

Ejemplo Σ={a,b}

Σ1

{a,b}

Σ2

{aa,ab,ba,bb}

Σ3

{aaa,aab,aba,baa,abb,bab,bba,bbb}

Σ0={ε}

{ε}

45

46 of 69

Otro lenguaje notable

Σ*0∪ Σ1∪ Σ2∪ Σ3∪…�

Ejemplo Σ={a,b}:

Σ*={𝜺, a, b, aa, ab, ba, bb, aaa, aba, aab, baa, abb, bba, bab, bbb, ...}

El conjunto de todas las palabras posibles usando el alfabeto Σ

46

47 of 69

Consecuencia de Σ*

Todo L sobre Σ es un subconjunto de Σ*

47

48 of 69

Ilustración

48

Σ*

49 of 69

Hasta ahora

De alfabeto 🠚 cadena

De cadenas 🠚 lenguaje

De alfabeto 🠚 lenguaje

49

50 of 69

Operaciones lenguajes

Lenguajes a partir de lenguajes

50

4

51 of 69

Concatenación de lenguajes

Entre dos lenguajes L1 y L2

Todas las cadenas posibles de concatenaciones entre cadenas del lenguaje uno y el lenguaje dos

Formalmente

L1L2={w1w2| w1∈L1 y w2∈L2}

51

52 of 69

Ejemplos

L1={aa}, L2={a,b}, L3={ϵ} y L4={a,aa,aaa,aaaa,...}

  • L1L2= {aaa,aab}
  • L2L1= {aaa,baa}
  • L2L2= {aa,ab,ba,bb}
  • L2L3= {a,b}
  • L1L4= {aaa,aaaa,aaaaa,...}

52

53 of 69

L*

¿Si es posible concatenar dos lenguajes podemos pensar en la potencia de un lenguaje?

53

54 of 69

Cerraduras de lenguajes

  • L =⋃i=0Li (Cerradura estrella)

  • L+ =⋃i=1 Li (Cerradura más)

54

55 of 69

Stephen C. Kleene

55

56 of 69

Ejemplos de cerraduras

Para L={aa}

L = {ε ,aa,aaaa,aaaaaa,aaaaaaaa,...}

L+ = { aa,aaaa,aaaaaa,aaaaaaaa,...}

¿Cómo describirían este lenguaje?

56

57 of 69

Cerraduras notables

{ε}*={ε}

{ε}+={ε}

*={ε}

+={}

57

58 of 69

El poder de la cadena vacía y concatenación

{ε}L=L

L{ε}=L

{ε,...}L=({ε}∪Lr)L=({ε}L)∪(LrL)=L∪LrL

58

59 of 69

Además operaciones normales de conjuntos

  • Union: L1∪L2
  • Intersección: L1∩L2
  • Diferencia: L1−L2

  • Complemento: Σ*−L2

59

60 of 69

Unión

60

Σ*

Lenguaje uno

Lenguaje dos

L1 ∪ L2

61 of 69

Concatenación

caso sin cadena vacía en lenguaje

61

Σ*

Lenguaje uno

Lenguaje dos

L1 L2

62 of 69

Concatenación

caso con cadena vacía en un lenguaje

62

Σ*

Lenguaje uno

Lenguaje dos

L1 L2

63 of 69

Concatenación

caso con cadena vacía en ambos lenguajes

63

Σ*

Lenguaje uno

Lenguaje dos

L1 L2

64 of 69

Cerradura

64

Σ*

Lenguaje

L*

65 of 69

Complemento

65

Σ*

Lenguaje

L

66 of 69

Formas de hablar de lenguajes

  • Enumerando el lenguaje�{a,b,aa,ab,ba,bb,...}
  • Usando operaciones�L1∪L2
  • Describiendo una propiedad�{w | |w| es par}
  • De forma descriptiva�El lenguaje cuyas longitud de cadena es par

66

67 of 69

Gracias

¿Alguna pregunta ?

  • @ivanvladimir
  • ivanvladimir@turing.iimas.unam.mx

67

68 of 69

Resumen

Computadora como caja negra

Una entrada tipo cadena, y una salida tipo booleano

Conceptos de alfabeto, cadena y lenguaje

Operaciones sobre alfabetos

Operaciones sobre lenguajes

Formas de describir a un lenguaje

69 of 69