modelos de computacion - cs.uns.edu.ar
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