modelos de computacion - cs.uns.edu.ar

69
introducción a los modelos de computación LENGUAJES FORMALES Y AUTÓMATAS 4. introducción a los modelos de computación CONTENIDO Funciones: propiedades, comparación del tamaño de conjuntos, cantidad de funciones [H2.3], funciones de cifrados, funciones hash [H2.3], funciones recursivas [H3.2]. Lógica como modelo de computación [G1.5]. Lenguajes Formales: características, descripciones, operaciones, usos [G8.4]. Conjuntos contables [H2.4]. Diagonalización [H2.4]. Límites de la computabilidad [H2.4.3]. 1

Upload: others

Post on 27-Nov-2021

3 views

Category:

Documents


0 download

TRANSCRIPT

introduccióna los modelos

de computación

LENGUAJESFORMALES

YAUTÓMATAS

4. introducción a los modelos de computación

CONTENIDOFunciones: propiedades, comparación del

tamaño de conjuntos, cantidad de funciones [H2.3], funciones de cifrados, funciones hash [H2.3], funciones recursivas [H3.2]. Lógica como modelo de computación [G1.5]. Lenguajes Formales: características, descripciones, operaciones, usos [G8.4]. Conjuntos contables [H2.4]. Diagonalización [H2.4]. Límites de la computabilidad [H2.4.3].

1

introduccióna los modelos

de computación

LENGUAJESFORMALES

YAUTÓMATAS

bibliografía

GERSTING, JUDITH L. “Mathematical Structures for Computer Science: A Modern Approach to Discrete Mathematics”. W H Freeman & Co, 2006.

HEIN, JAMES. Discrete Structures, Logic and Computability. Jones and Bartlett Publishers. 1995 - 2001

2

introduccióna los modelos

de computación

LENGUAJESFORMALES

YAUTÓMATAS

propiedades de funciones (repaso)

Sea f: A→B una función. Diremos que f es inyectiva si y sólo si

x,yA x≠y → f(x) ≠ f(y).Es decir, a elementos distintos del

conjunto de partida le corresponden elementos distintos del codominio,

o lo que es lo mismo

x,yA f(x) = f(y) → x=y

3

introduccióna los modelos

de computación

LENGUAJESFORMALES

YAUTÓMATAS

propiedades de funciones (repaso)

Sea f: A→B una función. Diremos que f es sobreyectiva si y sólo si

yB x A : f(x) = y.Es decir, la imagen de f es igual al

codominio de la función.4

introduccióna los modelos

de computación

LENGUAJESFORMALES

YAUTÓMATAS

propiedades de funciones (repaso)

Una función es biyectiva si es inyectiva y sobreyectiva a la vez.

Si f es biyectiva, entonces su inversa f-1es también una función y además biyectiva.

5

introduccióna los modelos

de computación

LENGUAJESFORMALES

YAUTÓMATAS

propiedades de funciones (repaso)

Ejemplos:La función f : R → Z definida como

f(x) = ┌x+1┐

es sobreyectiva porque para cualquier y Z existe un número en R, y – 1 tal

que f(y – 1) = y.Pero f no es inyectiva porque, por

ejemplo, f(2.5) = f(2.6).

6

introduccióna los modelos

de computación

LENGUAJESFORMALES

YAUTÓMATAS

propiedades de funciones (repaso)

Ejemplos:La función f : Z → Z definida como

f(x) = x+1es sobreyectiva porque para cualquier

y Z existe un número en Z, y – 1 tal que f(y – 1) = y.

Además f es inyectiva porque, x,yA x≠y → f(x) ≠ f(y).

Concluimos que f es biyectiva.La inversa de f, f-1: Z → Z se define

como f-1 (y) = y-1.

7

introduccióna los modelos

de computación

LENGUAJESFORMALES

YAUTÓMATAS

propiedades de funciones (repaso)

EjerciciosCuáles de las siguientes funciones son

inyectivas, sobreyectivas o biyectivas (si es biyectiva encontrar la inversa):

1. f:N3 →N3 definida como f(x)=2x mod 3.2. Sea Σ={a,b}

f:Σ* → N definida como f(w)=|w|.f:Σ* → Z definida como f(w)=|w|.f:Σ* → Σ* definida como f(w)=aw

8

introduccióna los modelos

de computación

LENGUAJESFORMALES

YAUTÓMATAS

la función modulo e inversas

Lema:Sea n > 1 y sea f : Nn→ Nn definida

como sigue, donde a y b son enteros:f(x) = (ax + b) mod n.

Entonces f es una biyección si y sólo si el mcd(a,n)=1. Cuando esto ocurre, la función inversa f-1 se define como

f-1 (x)=(kx+c) mod ndonde c es un entero tal que f(c)=0 y k

es un entero tal que 1 = ak + nm para algún entero m.

9

introduccióna los modelos

de computación

LENGUAJESFORMALES

YAUTÓMATAS

principio del palomar

Si m palomas vuelan a un palomar que contiene n celdas donde m> n entonces una celda tendrá dos o más palomas

Si A y B son conjuntos finitos con |A| > |B|, entonces toda función de A a B mapea al menos dos elementos de A a un único elemento de B. Esto es lo mismo que decir que no se puede definir una función inyectiva de A a B.

10

introduccióna los modelos

de computación

LENGUAJESFORMALES

YAUTÓMATAS

principio del palomar

Ejemplos:1. El juego de la silla, cuando juegan m

personas y quedan m-1 sillas.2. En un grupo de 8 personas dos

deben haber nacido el mismo día de la semana.

3. En un conjunto de n+1 enteros existen (al menos) dos que tendrán el mismo resto al ser divididos por n.

11

introduccióna los modelos

de computación

LENGUAJESFORMALES

YAUTÓMATAS

funciones de cifrado

Función de cifrado para traducir letras de un alfabeto, donde cada letra se codifica con un número del 0 al 26:

f(x)=(x+5) mod 27La función f “corre” la letra 5 posiciones.Ejemplo:Codificamos la palabra hola como mtpf

12

introduccióna los modelos

de computación

LENGUAJESFORMALES

YAUTÓMATAS

funciones de cifrado

Preguntas:¿Es f una biyección?¿Cómo decodificamos el mensaje?f−1(x) = (x – 5) mod 27.Sabemos f(26)=4f−1(4) = (4 – 5) mod 27 =(–1) mod 27 =26

13

introduccióna los modelos

de computación

LENGUAJESFORMALES

YAUTÓMATAS

criptoanálisis y funciones de cifrado

Criptoanálisis (del griego kryptós, "escondido" y analýein, "desatar") es el estudio de los métodos para obtener el sentido de una información cifrada, sin acceso a la información secreta requerida para obtener este sentido normalmente.

Fialka (M-125)fuente: wikipedia

14

introduccióna los modelos

de computación

LENGUAJESFORMALES

YAUTÓMATAS

funciones de cifrado

La función f(x)=(x+5) mod 27 es un ejemplo de función de cifrado aditiva.Las funciones de cifrado aditivas son monoalfabética: un carácter del alfabeto es siempre reemplazado por un mismo carácter del alfabeto. Dado mtpf podemos deducir fácilmente que codifica la palabra hola.Otra funciones de cifrado monoalfabéticas son las funciones de cifrado multiplicativas.Ejemplo: g(x) = 3x mod 27¿Es g una biyección?

15

introduccióna los modelos

de computación

LENGUAJESFORMALES

YAUTÓMATAS

funciones de cifrado

Otro ejemplo de funciones de cifrado monoalfabéticas son las funciones de cifrado afines

Utilizan un par de claves: (M,A)Ejemplo:clave (4,5)f(x) =(4x + 5) mod 27.Pregunta:¿Cómo desciframos los mensajes?

16

introduccióna los modelos

de computación

LENGUAJESFORMALES

YAUTÓMATAS

funciones de cifrado y puntos fijos

LemaSea n > 1 y sea f : Nn → Nn definida

como sigue donde a y b son enterosf(x) = (ax + b) mod n.

Entonces f no tiene puntos fijos si y sólo si mcd(a – 1, n) no divide a b.

17

introduccióna los modelos

de computación

LENGUAJESFORMALES

YAUTÓMATAS

funciones de cifrado y puntos fijos

EjemploLa función de cifrado

f(x)=(4x + 5) mod 27 no tiene puntos fijos porque:mcd(4-1,27)=mcd(3,27)=3, y 3 no divide

a 5Por otra parte, la función de cifrado

f(x)=(4x + 6) mod 27tiene puntos fijos. ¿Cuáles son?

18

introduccióna los modelos

de computación

LENGUAJESFORMALES

YAUTÓMATAS

funciones hash

Una función hash es una función que mapea un conjunto S de claves a un conjunto finito de índices 0, 1, . . . , n – 1 de una tabla.

Una tabla cuya información se encuentra utilizando una función de hash se denomina tabla hash.

19

introduccióna los modelos

de computación

LENGUAJESFORMALES

YAUTÓMATAS

funciones hash

Ejemplo:Mapear las abreviaturas de los meses

del año utilizando la función de hash f: S → {0,1,…,11} de la siguiente manera.

f(XYZ) = (ord(X)+ord(Y)+ord(Z)) mod 12donde ord(X) el código ASCII de X.

20

introduccióna los modelos

de computación

LENGUAJESFORMALES

YAUTÓMATAS

funciones hash

Colisiones:

¿Cómo asignar un nuevo valor?

Sondeo Lineal:Buscar hasta encontrar un espacio libre:(k + 1) mod n, (k + 2) mod n, …, (k + n) mod n.

21

introduccióna los modelos

de computación

LENGUAJESFORMALES

YAUTÓMATAS

funciones hash

Preguntas:¿Es posible encontrar una función inyectiva de

tal manera que no existan colisiones?¿Si incrementamos el tamaño de la tabla,

sería más simple encontrar una función inyectiva?

¿Si el tamaño de la tabla es incrementado, podemos dispersar los elementos de tal manera que las colisiones puedan ser resueltas en menor tiempo?

22

introduccióna los modelos

de computación

LENGUAJESFORMALES

YAUTÓMATAS

funciones hash

Sondeo lineal utilizando huecos (gaps)Buscar hasta encontrar un espacio libre:(k + g) mod n,(k + 2g) mod n,...,(k + ng) mod n.

Ejemplos:Para n = 12 y g = 4k = 7:11, 3, 7, 11, 3, 7, 11, 3, 7, 11, 3, 7.

Para n = 12 y g = 5k=70, 5, 10, 3, 8, 1, 6, 11, 4, 9, 2, 7.

Si queremos encontrar unabiyección necesitamosmcd(g,n)=1 (1≤g<n)

23

introduccióna los modelos

de computación

LENGUAJESFORMALES

YAUTÓMATAS

funciones hash

Aplicaciones de las funciones hash: Acceso rápido a archivos. Identificar archivos (por ejemplo, usado

en sistemas P2P). Corroborar que un archivo no haya

cambiado (test de integridad).

24

introduccióna los modelos

de computación

LENGUAJESFORMALES

YAUTÓMATAS

funciones recursivas sobre naturales (tema a verse en clase práctica)

Sea suc la función sucesorsuc es tal que suc(x) = x+1.

Definición recursiva de sumaPodemos definir la función suma

recursivamente como sigue:suma(m,0) = msuma (m, n+1) = suc (suma (m, n))

25

introduccióna los modelos

de computación

LENGUAJESFORMALES

YAUTÓMATAS

funciones recursivas sobre naturales(tema a verse en clase práctica)

Definición recursiva de producto:prod(n,0) = 0prod(m, n+1) = suma (m,prod(m, n))

Definición recursiva de exponenciación:exp(m,0) = 1exp(m, n+1) = prod(m,exp(m, n))

Nota: usaremos +,* y ↑ para denotar suma, producto y exponenciación, respectivamente.

26

introduccióna los modelos

de computación

LENGUAJESFORMALES

YAUTÓMATAS

funciones recursivas sobre naturales(tema a verse en clase práctica)

Suma de números imparesf(n)=1 + 3 + ··· + (2n + 1)

=(1 + 3 + ··· + (2n − 1)) + (2n + 1)=(1 + 3 + ··· + 2(n − 1) + 1) + (2n +1)= f (n − 1) + 2n + 1.

Definición recursiva de ff (0) = 1,f (n + 1) = f (n) + 2n + 3.

27

introduccióna los modelos

de computación

LENGUAJESFORMALES

YAUTÓMATAS

funciones recursivas sobre naturales(tema a verse en clase práctica)

Definición recursiva de fibonaccifib(0) = 0,fib(1) = 1,fib(n+2) = fib(n+1) + fib(n)28

introduccióna los modelos

de computación

LENGUAJESFORMALES

YAUTÓMATAS

funciones recursivas sobre cadenas(tema a verse en clase práctica)

Al trabajar con cadenas, asumiremos que nuestro alfabeto está compuesto sólo por los símbolos a y b.

Sea complemento una función definida sobre cadenas tal que transforma las a’s en b’s y viceversa.

Definición recursiva de complementocomp(λ) = λcomp(a.w) = b.comp(w)comp(b.w) = a.comp(w)

29

introduccióna los modelos

de computación

LENGUAJESFORMALES

YAUTÓMATAS

funciones recursivas sobre listas(tema a verse en clase práctica)

Notación L = [] representa la lista vacía L = x :: T representa la lista L con

cabeza (primer elemento) x y cola T.Definición recursiva de longitud

longitud ([] ) = 0longitud (a::T) = 1 + longitud (T) .

30

introduccióna los modelos

de computación

LENGUAJESFORMALES

YAUTÓMATAS

funciones recursivas sobre listas(tema a verse en clase práctica)

pares([a, b, c], [1, 2, 3]) = [(a, 1), (b, 2), (c, 3)]

Definición recursiva de parespares ([ ] ,[ ] ) =[ ] ,pares (a :: T, b :: T’) = (a, b) :: pares(T,T’) .

31

introduccióna los modelos

de computación

LENGUAJESFORMALES

YAUTÓMATAS

lenguajes formales: definiciones básicas

Un alfabeto (o vocabulario) Σ es un conjunto finito no vacío de símbolos.

Una cadena sobre Σ es una secuencia finita de símbolos de Σ.Σ* es el conjunto de todas las cadenas

sobre Σ.Un lenguajes sobre Σ es un

subconjunto de Σ*.Una gramática para un lenguaje puede

ser descripta definiendo su proceso generativo.

32

introduccióna los modelos

de computación

LENGUAJESFORMALES

YAUTÓMATAS

gramáticas para lenguajes formales

Una gramática estructura de frase(tipo 0) es una 4-tuplaG= (VN, VT, S, P), donde

VN = conjunto de símbolos no terminales. VT = conjunto de símbolos terminales. S = símbolo inicial de la gramática. P = conjunto finito de producciones de la

forma donde es una cadena sobre VN UVT con al menos un símbolo de VN y es una cadena sobre VN UVT. (usamos cuando es la cadena nula)

33

introduccióna los modelos

de computación

LENGUAJESFORMALES

YAUTÓMATAS

derivaciones

Sea G=(VN,VT, S, P) y sean w1 y w2cadenas sobre VN U VT.

Decimos que w1 deriva directamentew2, y lo notamos w1 w2 si

es una producción en P, w1 contiene una instancia de , w2 es obtenida a partir de w1

reemplazando esa instancia de con .

34

introduccióna los modelos

de computación

LENGUAJESFORMALES

YAUTÓMATAS

derivaciones

Si w1,w2,...,wn son cadenas sobre VN UVTy w1 w2, w2 w3,... wn1 wn, entonces w1 genera (deriva) wn,

Se escribe w1 wn (por convención, w1 w1)

+*35

introduccióna los modelos

de computación

LENGUAJESFORMALES

YAUTÓMATAS

lenguaje formal

Dada una gramática G, el lenguaje L generado por G, denotado L(G), es el conjunto L = {w VT

*| S w}.En otras palabras, L es el conjunto de

todas las cadenas de terminales generadas a partir de S.

Observación: Una vez que una cadena w de terminales ha sido obtenida,ninguna producción puede ser aplicada a w, y w no puede generar otras palabras.

+

36

introduccióna los modelos

de computación

LENGUAJESFORMALES

YAUTÓMATAS

ejemplo de derivación

Sea L = {0n1n n 1}. Una gramática para L es G=(VN,VT, S,

P) donde VN = {S}, VT = {0, 1}, y Pconsiste de las siguientes producciones: 1. S 0S12. S 01

Podemos generar 0313 como sigue:S 0S1

00S11 000111

37

introduccióna los modelos

de computación

LENGUAJESFORMALES

YAUTÓMATAS

ejemplo de derivación

Sea L = {anbncn n 1}. Una gramática para L es G=(VN,VT, S,

P) donde VN = {S, B, C}, VT = {a, b, c}, y P consiste de las siguientes producciones: 1. S aSBC2. S aBC3. CB BC4. aB ab5. bB bb6. bC bc7. cC cc

38

introduccióna los modelos

de computación

LENGUAJESFORMALES

YAUTÓMATAS

ejemplo de derivación

Podemos generar la cadena a2b2c2

como sigue S aSBC

aaBCBC aaBBCC aabBCC aabbCC aabbcC aabbcc

39

introduccióna los modelos

de computación

LENGUAJESFORMALES

YAUTÓMATAS

clases de gramáticas

Estructura de frase (tipo 0): sin restricciones.

Sensible al contexto (tipo 1): para cada producción (excepto S ), || ≤ | |.

Libre de contexto (tipo 2): para cada producción (excepto S), VN.

Regular (tipo 3) para cada producción (excepto S), VN y es de la forma t o tW, donde t VT y W VN.

40

introduccióna los modelos

de computación

LENGUAJESFORMALES

YAUTÓMATAS

clases de gramáticas

EjerciciosDeterminar qué lenguaje genera cada

una de las siguientes gramáticas G=(VN,VT, S, P) . Determinar su tipo.

1)VN = {S}, VT = P: S

41

introduccióna los modelos

de computación

LENGUAJESFORMALES

YAUTÓMATAS

clases de gramáticas

2)VN = {S}VT = P = 3)VN = {S} VT = {a}P : S a | aS

42

introduccióna los modelos

de computación

LENGUAJESFORMALES

YAUTÓMATAS

clases de gramáticas

4)VN = {S,A}, VT = {a}P : S | aA

A aS5)VN = {S}, VT = {a,b}P : S | SS | aSb | bSa

43

introduccióna los modelos

de computación

LENGUAJESFORMALES

YAUTÓMATAS

clases de gramáticas

6)VN = {S}, VT = {a,b}P : S aS

aS bbb7)VN = {S}, VT = {a,b}P : S aS

aS b

44

introduccióna los modelos

de computación

LENGUAJESFORMALES

YAUTÓMATAS

gramáticas y lenguajes

Un lenguaje se dice de tipo N si puede ser generado por una gramática de tipo N

tipo 3

tipo 2tipo1

tipo 0

Jerarquía de Chomsky

Noam Chomsky(1928-)

45

introduccióna los modelos

de computación

LENGUAJESFORMALES

YAUTÓMATAS

dispositivos computacionales

El dispositivo computacional más general se llama máquina de Turing (se verá en Teoría de Computabilidad) y se corresponde con los lenguajes de tipo 0.

Los lenguajes reconocidos por máquinas de Turing son los lenguajes de tipo 0.

El dispositivo computacional más básico se llama autómata finito y se corresponde con los lenguajes de tipo 3.

46

introduccióna los modelos

de computación

LENGUAJESFORMALES

YAUTÓMATAS

dispositivos computacionales

Existen dispositivos computacionales con capacidad intermedia entre aquellos reconocidos por autómatas finitos y máquinas de Turing (se verán en Teoría de Computabilidad):

Autómatas a Pila para lenguajes de tipo 2

Máquinas de Turing acotadas linealmente para lenguajes de tipo 1.

47

introduccióna los modelos

de computación

LENGUAJESFORMALES

YAUTÓMATAS

operaciones sobre lenguajes

Los lenguajes son conjuntos (finitos o infinitos) de cadenas y por tal motivo podemos operar sobre ellos:

Operaciones: unión intersección complemento concatenación estrella de Kleene

48

introduccióna los modelos

de computación

LENGUAJESFORMALES

YAUTÓMATAS

operaciones

Sean L1 y L2 dos lenguajes sobre un alfabeto Σ :

L1 L2 = {w | w L1 ó w L2}L1 L2 = {w | w L1 y w L2}L1’ = {w | w Σ* y w L1}L1 L2 = {w1w2 | w1 L1 y w2 L2}L1* = {w1w2 … wn | wi L1, n ≥ 0}

49

introduccióna los modelos

de computación

LENGUAJESFORMALES

YAUTÓMATAS

operaciones

EjerciciosSea Σ = {a,b} y los siguientes lenguajes

definidos sobre ΣSea L1 = {anbn | n > 0} y sea L2 = {bn | n > 0}Identificar: L1 L2 L1 L2 L1’ y L2’ L1 L2 L1* y L2*

50

introduccióna los modelos

de computación

LENGUAJESFORMALES

YAUTÓMATAS

gramáticas regulares

Las gramáticas regulares sirven para generar:

Cualquier lenguaje finito (aunque puede volverse una tarea tediosa).

Lenguajes infinitos que presentan ciertas regularidades que pueden ser expresada de manera sencilla utilizando las llamadas expresiones regulares (como veremos más adelante)

51

introduccióna los modelos

de computación

LENGUAJESFORMALES

YAUTÓMATAS

gramáticas regulares

Ejemplos de lenguajes que pueden ser generados por gramáticas regulares:

L=. El lenguaje vacío. L=Σ*. para cualquier Σ. El lenguaje

universal. L={w| w {a,b}* donde w tiene m a’s

seguidas de n b’s para m,n >0}. L={w| w {0,1}* donde w tiene

exactamente tres 0’s y tres 1’s}.

52

introduccióna los modelos

de computación

LENGUAJESFORMALES

YAUTÓMATAS

gramáticas libres de contexto

Las gramáticas libres de contexto tienen ciertas características destacadas: Son sencillas, reemplazan un símbolo

por vez. Pueden ser utilizadas para describir la

sintaxis de los lenguajes de programación.

La derivación de una gramática libre de contexto puede ser vista como un árbol de derivación.

53

introduccióna los modelos

de computación

LENGUAJESFORMALES

YAUTÓMATAS

gramáticas libres de contexto

Ejemplo de lenguajes que pueden ser generados por gramáticas libres de contexto:

Todos los que pueden ser generados por gramáticas regulares

L ={anbn| n > 0} L={w|w{(,)}* donde los paréntesis

están balanceados} L={w| w {a,b}* y w=wr }.

Observación: Si w = w1w2…wn,wi {a,b}, entonces wr = wnwn-1…w1

54

introduccióna los modelos

de computación

LENGUAJESFORMALES

YAUTÓMATAS

conjuntos contables(se verá al final del curso)

Sean A y B conjuntos. Si existe una biyección entre A y B denotaremos este hecho escribiendo

|A| = |B|.En este caso diremos que A y B tienen el

mismo tamaño o la misma cardinalidad o que son equipotentes.

55

introduccióna los modelos

de computación

LENGUAJESFORMALES

YAUTÓMATAS

conjuntos contables(se verá al final del curso)

Cardinalidad de un conjunto finito¿Cuál es la cardinalidad del conjunto A

definido como sigue?A = {(x + 1)3 | 1 ≤ (x + 1)3 ≤ 3000, x N}

Existe una biyección f:{0, 1, . . . , 13} →Adonde f(x) = (x + 1)3. Por lo tanto|A| = |{0, 1, . . ., 13}|= 14.

56

introduccióna los modelos

de computación

LENGUAJESFORMALES

YAUTÓMATAS

conjuntos contables(se verá al final del curso)

Cardinalidad de un conjunto infinitoSea Impar el conjunto de números

naturales impares.Sea f la función f : N → Impar definida

como f(x) = 2x + 1. Dado que f es una biyección, podemos concluir que el conjunto Impar y N tienen el mismo tamaño. Es decir, |Impar| = |N|.

57

introduccióna los modelos

de computación

LENGUAJESFORMALES

YAUTÓMATAS

conjuntos contables(se verá al final del curso)

Un conjunto se dice contable si es finito o si existe una biyección entre el mismo y N. En el último caso se dice que el conjunto es infinitamente contable.

En términos de tamaño decimos que un conjunto S es contable si

|S| = |{0, 1, . . . , n – 1}|para algún número natural n o |S| = |N|. Si un conjunto no es contable, decimos

que es incontable.

58

introduccióna los modelos

de computación

LENGUAJESFORMALES

YAUTÓMATAS

conjuntos contables(se verá al final del curso)

Propiedades de conjuntos contablesa. Todo subconjunto de N es contable.b. S es contable si y sólo si |S| ≤ |N|.c. Cualquier subconjunto de un conjunto

contable es contable.d. Cualquier imagen de un conjunto

contable es contable.

59

introduccióna los modelos

de computación

LENGUAJESFORMALES

YAUTÓMATAS

conjuntos contables(se verá al final del curso)

Teorema (Hein página 117-118)N N es un conjunto contable.Prueba: Se describe una biyección como sigue(0, 0), ↔ 0,(0, 1), (1, 0), ↔ 1, 2(0, 2), (1, 1), (2, 0), ↔ 3, 4, 5,

(0, n), · · · ↔ (n2 + n)/2,· · ·

clave: f(x,y) =((x + y)2 + 3x + y)/2

60

introduccióna los modelos

de computación

LENGUAJESFORMALES

YAUTÓMATAS

conjuntos contables(se verá al final del curso)

Teorema (Hein, página 118)Si S0, S1, …, Sn, … es una secuencia de

conjuntos contables. Entonces la unión S0 S1 … Sn …

es un conjunto contable.

Ejemplos de conjuntos contables: Los números racionales El conjunto Σ* de cadenas sobre un

alfabeto finito Σ.

clave: asociar cada tupla (m, n) en N × N con un elemento xmn en la unión de los conjuntos dados.

61

introduccióna los modelos

de computación

LENGUAJESFORMALES

YAUTÓMATAS

diagonalización(se verá al final del curso)

Sea A un alfabeto con dos o más símbolos y sea S0, S1, …, Sn, … un listado contable de secuencias de la forma Sn =(an0, an1, …, ann, …), donde ani A. Las secuencias son listadas como las filas de la siguiente matriz infinita

entonces existe una secuencia S=(a0, a1, …, an, …) sobre A que no está en la lista original.

62

introduccióna los modelos

de computación

LENGUAJESFORMALES

YAUTÓMATAS

diagonalización(se verá al final del curso)

Podemos construir S a partir de la lista de elementos diagonales (a00, a11, …, ann, …) cambiando cada elemento de tal manera que an≠ ann para cada n. Entonces S difiere de cada S0 en el elemento n-ésimo.

Por ejemplo, tomando dos elementos x,y A definimos

ysiyysix

nn

nnn a

aa

63

introduccióna los modelos

de computación

LENGUAJESFORMALES

YAUTÓMATAS

conjuntos incontables(se verá al final del curso)

EjercicioSea (0, 1) = {x R | 0 < x < 1} y sea R+

el conjunto de reales positivos. Mostrar que la función f : (0, 1) → R+

definida como

es una biyección.

x1xf(x)

64

introduccióna los modelos

de computación

LENGUAJESFORMALES

YAUTÓMATAS

conjuntos incontables(se verá al final del curso)

Lema (Hein, página 120)Los números reales son incontablesPruebaEs suficiente probar que U = (0,1) es incontable.Asumamos por el absurdo que U es contable.

Entonces podemos listar todos los números entre 0 y 1 como una secuencia contable r0,r1,r 2,… rn, …Cada número real entre 0 y 1 puede ser representado como un infinito decimal. Entonces para cada n existe una representaciónrn = 0.dn0dn1. . . dnn. . . , donde cada dni es un dígito decimal. Dado que rn puede representarse por la secuencia (0.dn0dn1. . . dnn. . . ), entonces, por diagonalización podemos concluir que existe un decimal infinito que no está en la lista (ver Hein).

Concluimos que U es incontable y por lo tanto R es incontable.

65

introduccióna los modelos

de computación

LENGUAJESFORMALES

YAUTÓMATAS

conjuntos incontables(se verá al final del curso)

Lema (Hein, página 121)El conjunto F de funciones de N en N es

incontablePruebaAsumamos por el absurdo que F es contable.

Entonces podemos listar todas las funciones de N en N como f0,f1,f 2,… fn, …Cada función fn puede ser representada por la secuencia de sus valores (fn(0)fn(1). . . fn(n). . . ), entonces, por diagonalización, podemos concluir que existe una función que no está en la lista (ver construcción en Hein).

Concluimos que F es incontable.

66

introduccióna los modelos

de computación

LENGUAJESFORMALES

YAUTÓMATAS

límites de la computabilidad(se verá al final del curso)

Teorema (Hein, página 122)El conjunto de programas que pueden ser

escritos utilizando un lenguajes de programación es infinitamente contable.

Prueba:Cada programa es una cadena finita de

símbolos sobre un alfabeto finito fijo. Sea Pnel conjunto de todos los programas que son cadenas de longitud n sobre A. El conjunto de todos los programas es la unión de los conjuntos P0, P1, … , Pn, … Dado que cada Pn es finito y por lo tanto contable, podemos concluir que la unión es contable.

67

introduccióna los modelos

de computación

LENGUAJESFORMALES

YAUTÓMATAS

límites de la computabilidad(se verá al final del curso)

Existe “sólo” un número contable de programas de computadora. Por lo tanto existen límites sobre lo que puede ser computado.

Ejemplos Dado que existe un número incontable

de funciones de N → N no todas son computables. Existen programa para calcular sólo un conjunto contable de estas funciones.

68

introduccióna los modelos

de computación

LENGUAJESFORMALES

YAUTÓMATAS

límites de la computabilidad(se verá al final del curso)

Ejemplos (cont.) No es posible computar cualquier real hasta

un número arbitrario de cifras decimales. La razón es que existe un número contable de programas y un número incontable de reales.

Si extraemos los reales computables de R, el conjunto restante sigue siendo incontable. ¿Por qué?

Los números racionales pueden ser computados.

Algunos números irracionales pueden ser computados (ejemplo: π).

69