Está en la página 1de 69

4.

introduccin a los modelos de computacin

LENGUAJES
FORMALES
Y
AUTMATAS

introduccin
a los modelos
de computacin
1

CONTENIDO
Funciones: propiedades, comparacin del
tamao de conjuntos, cantidad de
funciones [H2.3], funciones de cifrados,
funciones hash [H2.3], funciones
recursivas [H3.2]. Lgica como modelo de
computacin [G1.5]. Lenguajes Formales:
caractersticas, descripciones,
operaciones, usos [G8.4]. Conjuntos
contables [H2.4]. Diagonalizacin [H2.4].
Lmites de la computabilidad [H2.4.3].

bibliografa

LENGUAJES
FORMALES
Y
AUTMATAS

introduccin
a los modelos
de computacin
2

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

propiedades de funciones (repaso)

LENGUAJES
FORMALES
Y
AUTMATAS

introduccin
a los modelos
de computacin
3

Sea f: AB una funcin. Diremos que f


es inyectiva si y slo si
x,yA xy 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

propiedades de funciones (repaso)

LENGUAJES
FORMALES
Y
AUTMATAS

introduccin
a los modelos
de computacin
4

Sea f: AB una funcin. Diremos que f


es sobreyectiva si y slo si
yB x A : f(x) = y.
Es decir, la imagen de f es igual al
codominio de la funcin.

propiedades de funciones (repaso)

LENGUAJES
FORMALES
Y
AUTMATAS

Una funcin es biyectiva si es inyectiva


y sobreyectiva a la vez.

introduccin
a los modelos
de computacin
5

Si f es biyectiva, entonces su inversa f-1


es tambin una funcin y adems
biyectiva.

propiedades de funciones (repaso)

LENGUAJES
FORMALES
Y
AUTMATAS

introduccin
a los modelos
de computacin
6

Ejemplos:
La funcin f : R Z definida como

f(x) = x+1
es sobreyectiva porque para cualquier
y Z existe un nmero en R, y 1 tal
que f(y 1) = y.
Pero f no es inyectiva porque, por
ejemplo, f(2.5) = f(2.6).

propiedades de funciones (repaso)

LENGUAJES
FORMALES
Y
AUTMATAS

introduccin
a los modelos
de computacin
7

Ejemplos:
La funcin f : Z Z definida como
f(x) = x+1
es sobreyectiva porque para cualquier
y Z existe un nmero en Z, y 1 tal
que f(y 1) = y.
Adems f es inyectiva porque, x,yA
xy 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.

propiedades de funciones (repaso)

LENGUAJES
FORMALES
Y
AUTMATAS

introduccin
a los modelos
de computacin
8

Ejercicios
Cules 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

la funcin modulo e inversas

LENGUAJES
FORMALES
Y
AUTMATAS

introduccin
a los modelos
de computacin
9

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 biyeccin si y slo si
el mcd(a,n)=1. Cuando esto ocurre, la
funcin inversa f-1 se define como
f-1 (x)=(kx+c) mod n
donde c es un entero tal que f(c)=0 y k
es un entero tal que 1 = ak + nm para
algn entero m.

principio del palomar

Si m palomas vuelan a
un palomar que
contiene n celdas
introduccin donde m> n entonces
a los modelos
de computacin una celda tendr dos
10
o ms palomas
LENGUAJES
FORMALES
Y
AUTMATAS

Si A y B son conjuntos finitos con |A| > |B|,


entonces toda funcin 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
funcin inyectiva de A a B.

principio del palomar

LENGUAJES
FORMALES
Y
AUTMATAS

introduccin
a los modelos
de computacin
11

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 da de
la semana.
3. En un conjunto de n+1 enteros
existen (al menos) dos que tendrn el
mismo resto al ser divididos por n.

funciones de cifrado

LENGUAJES
FORMALES
Y
AUTMATAS

introduccin
a los modelos
de computacin
12

Funcin de cifrado para traducir letras de


un alfabeto, donde cada letra se
codifica con un nmero del 0 al 26:
f(x)=(x+5) mod 27
La funcin f corre la letra 5 posiciones.
Ejemplo:
Codificamos la palabra hola como mtpf

funciones de cifrado

LENGUAJES
FORMALES
Y
AUTMATAS

introduccin
a los modelos
de computacin
13

Preguntas:
Es f una biyeccin?
Cmo decodificamos el mensaje?
f1(x) = (x 5) mod 27.
Sabemos f(26)=4
f1(4) = (4 5) mod 27 =(1) mod 27 =26

criptoanlisis y funciones de cifrado

Criptoanlisis (del griego


krypts, "escondido" y
analein, "desatar") es el
introduccin estudio de los mtodos
a los modelos
de computacin para obtener el sentido de
14
una informacin cifrada,
sin acceso a la informacin
secreta requerida para
obtener este sentido
normalmente.
LENGUAJES
FORMALES
Y
AUTMATAS

fuente: wikipedia

Fialka (M-125)

funciones de cifrado

La funcin f(x)=(x+5) mod 27 es un ejemplo


de funcin de cifrado aditiva.
Las funciones de cifrado aditivas son
introduccin
monoalfabtica: un carcter del alfabeto es
a los modelos
de computacin
15 siempre reemplazado por un mismo carcter
del alfabeto.
Dado mtpf podemos deducir fcilmente que
codifica la palabra hola.
Otra funciones de cifrado monoalfabticas son
las funciones de cifrado multiplicativas.
Ejemplo: g(x) = 3x mod 27
Es g una biyeccin?
LENGUAJES
FORMALES
Y
AUTMATAS

funciones de cifrado

LENGUAJES
FORMALES
Y
AUTMATAS

introduccin
a los modelos
de computacin
16

Otro ejemplo de funciones de cifrado


monoalfabticas son las funciones de
cifrado afines
Utilizan un par de claves: (M,A)
Ejemplo:
clave (4,5)
f(x) =(4x + 5) mod 27.
Pregunta:
Cmo desciframos los mensajes?

funciones de cifrado y puntos fijos

LENGUAJES
FORMALES
Y
AUTMATAS

introduccin
a los modelos
de computacin
17

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 no tiene puntos fijos si y slo
si mcd(a 1, n) no divide a b.

funciones de cifrado y puntos fijos

LENGUAJES
FORMALES
Y
AUTMATAS

introduccin
a los modelos
de computacin
18

Ejemplo
La funcin 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
a5
Por otra parte, la funcin de cifrado
f(x)=(4x + 6) mod 27
tiene puntos fijos. Cules son?

funciones hash

LENGUAJES
FORMALES
Y
AUTMATAS

introduccin
a los modelos
de computacin
19

Una funcin hash es una funcin


que mapea un conjunto S de
claves a un conjunto finito de
ndices 0, 1, . . . , n 1 de una
tabla.
Una tabla cuya informacin se
encuentra utilizando una funcin
de hash se denomina tabla hash.

funciones hash

LENGUAJES
FORMALES
Y
AUTMATAS

introduccin
a los modelos
de computacin
20

Ejemplo:
Mapear las abreviaturas de los meses
del ao utilizando la funcin de hash f:
S {0,1,,11} de la siguiente
manera.
f(XYZ) = (ord(X)+ord(Y)+ord(Z)) mod 12
donde ord(X) el cdigo ASCII de X.

funciones hash

LENGUAJES
FORMALES
Y
AUTMATAS

Colisiones:

introduccin
a los modelos
de computacin
21

Cmo asignar un nuevo valor?


Sondeo Lineal:
Buscar hasta encontrar un espacio libre:

(k + 1) mod n, (k + 2) mod n, , (k + n) mod n.

funciones hash

Preguntas:
Es posible encontrar una funcin inyectiva de
tal manera que no existan colisiones?
introduccin
a los modelos Si incrementamos el tamao de la tabla,
de computacin
22
sera ms simple encontrar una funcin
inyectiva?
Si el tamao de la tabla es incrementado,
podemos dispersar los elementos de tal
manera que las colisiones puedan ser
resueltas en menor tiempo?
LENGUAJES
FORMALES
Y
AUTMATAS

funciones hash

LENGUAJES
FORMALES
Y
AUTMATAS

introduccin
a los modelos
de computacin
23

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 = 4
k = 7:
11, 3, 7, 11, 3, 7, 11, 3, 7, 11, 3, 7.

Si queremos
encontrar una
biyeccin
Para n = 12 y g = 5
necesitamos
k=7
mcd(g,n)=1
0, 5, 10, 3, 8, 1, 6, 11, 4, 9, 2, 7. (1g<n)

funciones hash

LENGUAJES
FORMALES
Y
AUTMATAS

introduccin
a los modelos
de computacin
24

Aplicaciones de las funciones hash:


Acceso rpido a archivos.
Identificar archivos (por ejemplo, usado
en sistemas P2P).
Corroborar que un archivo no haya
cambiado (test de integridad).

funciones recursivas sobre naturales


(tema a verse en clase prctica)
LENGUAJES
FORMALES
Y
AUTMATAS

introduccin
a los modelos
de computacin
25

Sea suc la funcin sucesor


suc es tal que suc(x) = x+1.
Definicin recursiva de suma
Podemos definir la funcin suma
recursivamente como sigue:
suma(m,0) = m
suma (m, n+1) = suc (suma (m, n))

funciones recursivas sobre naturales


(tema a verse en clase prctica)
LENGUAJES
FORMALES
Y
AUTMATAS

introduccin
a los modelos
de computacin
26

Definicin recursiva de producto:


prod(n,0) = 0
prod(m, n+1) = suma (m,prod(m, n))

Definicin recursiva de exponenciacin:


exp(m,0) = 1
exp(m, n+1) = prod(m,exp(m, n))

Nota: usaremos +,* y para denotar suma,


producto y exponenciacin,
respectivamente.

funciones recursivas sobre naturales


(tema a verse en clase prctica)
LENGUAJES
FORMALES
Y
AUTMATAS

introduccin
a los modelos
de computacin
27

Suma de nmeros impares


f(n)=1 + 3 + + (2n + 1)
=(1 + 3 + + (2n 1)) + (2n + 1)
=(1 + 3 + + 2(n 1) + 1) + (2n +1)
= f (n 1) + 2n + 1.
Definicin recursiva de f
f (0) = 1,
f (n + 1) = f (n) + 2n + 3.

funciones recursivas sobre naturales


(tema a verse en clase prctica)
LENGUAJES
FORMALES
Y
AUTMATAS

introduccin
a los modelos
de computacin
28

Definicin recursiva de fibonacci


fib(0) = 0,
fib(1) = 1,
fib(n+2) = fib(n+1) + fib(n)

funciones recursivas sobre cadenas


(tema a verse en clase prctica)
LENGUAJES
FORMALES
Y
AUTMATAS

introduccin
a los modelos
de computacin
29

Al trabajar con cadenas, asumiremos


que nuestro alfabeto est compuesto
slo por los smbolos a y b.
Sea complemento una funcin definida
sobre cadenas tal que transforma las
as en bs y viceversa.
Definicin recursiva de complemento
comp() =
comp(a.w) = b.comp(w)
comp(b.w) = a.comp(w)

funciones recursivas sobre listas


(tema a verse en clase prctica)
LENGUAJES
FORMALES
Y
AUTMATAS

introduccin
a los modelos
de computacin
30

Notacin
L = [] representa la lista vaca
L = x :: T representa la lista L con
cabeza (primer elemento) x y cola T.
Definicin recursiva de longitud
longitud ([] ) = 0
longitud (a::T) = 1 + longitud (T) .

funciones recursivas sobre listas


(tema a verse en clase prctica)
LENGUAJES
FORMALES
Y
AUTMATAS

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


(c, 3)]

introduccin
a los modelos
de computacin
31

Definicin recursiva de pares


pares ([ ] ,[ ] ) =[ ] ,
pares (a :: T, b :: T) = (a, b) :: pares(T,T) .

lenguajes formales: definiciones bsicas

LENGUAJES
FORMALES
Y
AUTMATAS

introduccin
a los modelos
de computacin
32

Un alfabeto (o vocabulario) es un
conjunto finito no vaco de smbolos.
Una cadena sobre es una secuencia
finita de smbolos de .
* es el conjunto de todas las cadenas
sobre .
Un lenguajes sobre es un
subconjunto de *.
Una gramtica para un lenguaje puede
ser descripta definiendo su proceso
generativo.

gramticas para lenguajes formales

LENGUAJES
FORMALES
Y
AUTMATAS

introduccin
a los modelos
de computacin
33

Una gramtica estructura de frase


(tipo 0) es una 4-tupla
G= (VN, VT, S, P), donde

VN = conjunto de smbolos no terminales.


VT = conjunto de smbolos terminales.
S = smbolo inicial de la gramtica.
P = conjunto finito de producciones de la
forma donde es una cadena
sobre VN UVT con al menos un smbolo de
VN y es una cadena sobre VN UVT.
(usamos cuando es la cadena
nula)

derivaciones

LENGUAJES
FORMALES
Y
AUTMATAS

introduccin
a los modelos
de computacin
34

Sea G=(VN,VT, S, P) y sean w1 y w2


cadenas sobre VN U VT.
Decimos que w1 deriva directamente
w2, y lo notamos w1 w2 si
es una produccin en P,
w1 contiene una instancia de ,
w2 es obtenida a partir de w1
reemplazando esa instancia de con
.

derivaciones

LENGUAJES
FORMALES
Y
AUTMATAS

introduccin
a los modelos
de computacin
35

Si w1,w2,...,wn son cadenas sobre VN UVT


y w1 w2, w2 w3,... wn1 wn,
entonces w1 genera (deriva) wn,
+
Se escribe w1 wn
*
(por convencin, w1 w1)

lenguaje formal

LENGUAJES
FORMALES
Y
AUTMATAS

introduccin
a los modelos
de computacin
36

Dada una gramtica 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.
Observacin: Una vez que una cadena
w de terminales ha sido obtenida,
ninguna produccin puede ser aplicada
a w, y w no puede generar otras
palabras.

ejemplo de derivacin

LENGUAJES
FORMALES
Y
AUTMATAS

introduccin
a los modelos
de computacin
37

Sea L = {0n1n n 1}.


Una gramtica para L es G=(VN,VT, S,
P) donde VN = {S}, VT = {0, 1}, y P
consiste de las siguientes
producciones:
1. S 0S1
2. S 01
Podemos generar 0313 como sigue:
S 0S1
00S11
000111

ejemplo de derivacin

LENGUAJES
FORMALES
Y
AUTMATAS

introduccin
a los modelos
de computacin
38

Sea L = {anbncn n 1}.


Una gramtica 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 aSBC
2. S aBC
3. CB BC
4. aB ab
5. bB bb
6. bC bc
7. cC cc

ejemplo de derivacin

LENGUAJES
FORMALES
Y
AUTMATAS

introduccin
a los modelos
de computacin
39

Podemos generar la cadena a2b2c2


como sigue
S aSBC
aaBCBC
aaBBCC
aabBCC
aabbCC
aabbcC
aabbcc

clases de gramticas

LENGUAJES
FORMALES
Y
AUTMATAS

introduccin
a los modelos
de computacin
40

Estructura de frase (tipo 0): sin


restricciones.
Sensible al contexto (tipo 1): para
cada produccin (excepto S ),
|| | |.
Libre de contexto (tipo 2): para cada
produccin (excepto S),
VN.
Regular (tipo 3) para cada produccin
(excepto S), VN y es de
la forma t o tW, donde t VT y W VN.

clases de gramticas

LENGUAJES
FORMALES
Y
AUTMATAS

introduccin
a los modelos
de computacin
41

Ejercicios
Determinar qu lenguaje genera cada
una de las siguientes gramticas
G=(VN,VT, S, P) . Determinar su tipo.
1)
VN = {S},
VT =
P: S

clases de gramticas

LENGUAJES
FORMALES
Y
AUTMATAS

introduccin
a los modelos
de computacin
42

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

clases de gramticas

LENGUAJES
FORMALES
Y
AUTMATAS

introduccin
a los modelos
de computacin
43

4)
VN = {S,A},
VT = {a}
P : S | aA
A aS
5)
VN = {S},
VT = {a,b}
P : S | SS | aSb | bSa

clases de gramticas

LENGUAJES
FORMALES
Y
AUTMATAS

introduccin
a los modelos
de computacin
44

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

gramticas y lenguajes

LENGUAJES
FORMALES
Y
AUTMATAS

introduccin
a los modelos
de computacin
45

Un lenguaje se dice de tipo N si puede ser


generado por una gramtica de tipo N
tipo 0
tipo1
tipo 2
tipo 3

Noam Chomsky
(1928-)
Jerarqua de Chomsky

dispositivos computacionales

El dispositivo computacional ms general se


llama mquina de Turing (se ver en
Teora de Computabilidad) y se corresponde
introduccin
con los lenguajes de tipo 0.
a los modelos
de computacin
46 Los lenguajes reconocidos por mquinas de
Turing son los lenguajes de tipo 0.
El dispositivo computacional ms bsico se
llama autmata finito y se corresponde con
los lenguajes de tipo 3.
LENGUAJES
FORMALES
Y
AUTMATAS

dispositivos computacionales

LENGUAJES
FORMALES
Y
AUTMATAS

introduccin
a los modelos
de computacin
47

Existen dispositivos computacionales


con capacidad intermedia entre
aquellos reconocidos por autmatas
finitos y mquinas de Turing (se vern
en Teora de Computabilidad):
Autmatas a Pila para lenguajes de
tipo 2
Mquinas de Turing acotadas
linealmente para lenguajes de tipo 1.

operaciones sobre lenguajes

LENGUAJES
FORMALES
Y
AUTMATAS

introduccin
a los modelos
de computacin
48

Los lenguajes son conjuntos (finitos o


infinitos) de cadenas y por tal motivo
podemos operar sobre ellos:
Operaciones:
unin
interseccin
complemento
concatenacin
estrella de Kleene

operaciones

LENGUAJES
FORMALES
Y
AUTMATAS

introduccin
a los modelos
de computacin
49

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}

operaciones

Ejercicios
Sea = {a,b} y los siguientes lenguajes
definidos sobre
introduccin
n n | n > 0} y sea L2 = {bn | n > 0}
a los modelos Sea L1 = {a b
de computacin
50
Identificar:
L1 L2
L1 L2
L1 y L2
L1 L2
L1* y L2*
LENGUAJES
FORMALES
Y
AUTMATAS

gramticas regulares

LENGUAJES
FORMALES
Y
AUTMATAS

introduccin
a los modelos
de computacin
51

Las gramticas 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 ms
adelante)

gramticas regulares

LENGUAJES
FORMALES
Y
AUTMATAS

introduccin
a los modelos
de computacin
52

Ejemplos de lenguajes que pueden ser


generados por gramticas regulares:
L=. El lenguaje vaco.
L=*. para cualquier . El lenguaje
universal.
L={w| w {a,b}* donde w tiene m as
seguidas de n bs para m,n >0}.
L={w| w {0,1}* donde w tiene
exactamente tres 0s y tres 1s}.

gramticas libres de contexto

LENGUAJES
FORMALES
Y
AUTMATAS

introduccin
a los modelos
de computacin
53

Las gramticas libres de contexto tienen


ciertas caractersticas destacadas:
Son sencillas, reemplazan un smbolo
por vez.
Pueden ser utilizadas para describir la
sintaxis de los lenguajes de
programacin.
La derivacin de una gramtica libre
de contexto puede ser vista como un
rbol de derivacin.

gramticas libres de contexto

LENGUAJES
FORMALES
Y
AUTMATAS

introduccin
a los modelos
de computacin
54

Ejemplo de lenguajes que pueden ser


generados por gramticas libres de
contexto:
Todos los que pueden ser generados
por gramticas regulares
L ={anbn| n > 0}
L={w|w{(,)}* donde los parntesis
estn balanceados}
L={w| w {a,b}* y w=wr }.
Observacin: Si w = w1w2wn,
wi {a,b}, entonces wr = wnwn-1w1

conjuntos contables
(se ver al final del curso)
LENGUAJES
FORMALES
Y
AUTMATAS

introduccin
a los modelos
de computacin
55

Sean A y B conjuntos. Si existe una


biyeccin entre A y B denotaremos
este hecho escribiendo
|A| = |B|.
En este caso diremos que A y B tienen el
mismo tamao o la misma cardinalidad
o que son equipotentes.

conjuntos contables
(se ver al final del curso)
LENGUAJES
FORMALES
Y
AUTMATAS

introduccin
a los modelos
de computacin
56

Cardinalidad de un conjunto finito


Cul es la cardinalidad del conjunto A
definido como sigue?
A = {(x + 1)3 | 1 (x + 1)3 3000, x N}
Existe una biyeccin f:{0, 1, . . . , 13} A
donde f(x) = (x + 1)3.
Por lo tanto
|A| = |{0, 1, . . ., 13}|= 14.

conjuntos contables
(se ver al final del curso)
LENGUAJES
FORMALES
Y
AUTMATAS

introduccin
a los modelos
de computacin
57

Cardinalidad de un conjunto infinito


Sea Impar el conjunto de nmeros
naturales impares.
Sea f la funcin f : N Impar definida
como f(x) = 2x + 1. Dado que f es una
biyeccin, podemos concluir que el
conjunto Impar y N tienen el mismo
tamao. Es decir, |Impar| = |N|.

conjuntos contables
(se ver al final del curso)
LENGUAJES
FORMALES
Y
AUTMATAS

introduccin
a los modelos
de computacin
58

Un conjunto se dice contable si es finito


o si existe una biyeccin entre el
mismo y N. En el ltimo caso se dice
que el conjunto es infinitamente
contable.
En trminos de tamao decimos que un
conjunto S es contable si
|S| = |{0, 1, . . . , n 1}|
para algn nmero natural n o |S| = |N|.
Si un conjunto no es contable, decimos
que es incontable.

conjuntos contables
(se ver al final del curso)
LENGUAJES
FORMALES
Y
AUTMATAS

introduccin
a los modelos
de computacin
59

Propiedades de conjuntos contables


a. Todo subconjunto de N es contable.
b. S es contable si y slo si |S| |N|.
c. Cualquier subconjunto de un conjunto
contable es contable.
d. Cualquier imagen de un conjunto
contable es contable.

conjuntos contables
(se ver al final del curso)
LENGUAJES
FORMALES
Y
AUTMATAS

introduccin
a los modelos
de computacin
60

Teorema (Hein pgina 117-118)


N N es un conjunto contable.
Prueba:
Se describe una biyeccin 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

conjuntos contables
(se ver al final del curso)
LENGUAJES
FORMALES
Y
AUTMATAS

Teorema (Hein, pgina 118)

Si S0, S1, , Sn, es una secuencia de


conjuntos contables. Entonces la unin
introduccin
a los modelos
S0 S1 Sn
de computacin
61
es un conjunto contable.

clave: asociar cada tupla (m, n) en N N con un


elemento xmn en la unin de los conjuntos dados.

Ejemplos de conjuntos contables:


Los nmeros racionales
El conjunto * de cadenas sobre un
alfabeto finito .

diagonalizacin
(se ver al final del curso)

Sea A un alfabeto con dos o ms smbolos 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
introduccin
las filas de la siguiente matriz infinita
a los modelos

LENGUAJES
FORMALES
Y
AUTMATAS

de computacin
62

entonces existe una secuencia S=(a0, a1, , an,


) sobre A que no est en la lista original.

diagonalizacin
(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
introduccin
a los modelos
S0 en el elemento n-simo.
de computacin
63
Por ejemplo, tomando dos elementos x,y A
definimos
LENGUAJES
FORMALES
Y
AUTMATAS

x si ann = y
an =
y si ann y

conjuntos incontables
(se ver al final del curso)
LENGUAJES
FORMALES
Y
AUTMATAS

introduccin
a los modelos
de computacin
64

Ejercicio
Sea (0, 1) = {x R | 0 < x < 1} y sea R+
el conjunto de reales positivos.
Mostrar que la funcin f : (0, 1) R+
definida como

x
f(x) =
1 x
es una biyeccin.

conjuntos incontables
(se ver al final del curso)
Lema (Hein, pgina 120)
Los nmeros reales son incontables
Prueba
Es suficiente probar que U = (0,1) es incontable.
introduccin
Asumamos por el absurdo que U es contable.
a los modelos
de computacin
Entonces podemos listar todos los nmeros entre 0
65
y 1 como una secuencia contable r0,r1,r 2, rn,
Cada nmero real entre 0 y 1 puede ser
representado como un infinito decimal. Entonces
para cada n existe una representacin
rn = 0.dn0dn1. . . dnn. . . , donde cada dni es un dgito
decimal. Dado que rn puede representarse por la
secuencia (0.dn0dn1. . . dnn. . . ), entonces, por
diagonalizacin 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.
LENGUAJES
FORMALES
Y
AUTMATAS

conjuntos incontables
(se ver al final del curso)

Lema (Hein, pgina 121)


El conjunto F de funciones de N en N es
incontable
Prueba
introduccin
a los modelos
Asumamos por el absurdo que F es contable.
de computacin
66
Entonces podemos listar todas las funciones
de N en N como f0,f1,f 2, fn,
Cada funcin fn puede ser representada por
la secuencia de sus valores (fn(0)fn(1). . .
fn(n). . . ), entonces, por diagonalizacin,
podemos concluir que existe una funcin
que no est en la lista (ver construccin en
Hein).
Concluimos que F es incontable.
LENGUAJES
FORMALES
Y
AUTMATAS

lmites de la computabilidad
(se ver al final del curso)

Teorema (Hein, pgina 122)


El conjunto de programas que pueden ser
escritos utilizando un lenguajes de
programacin es infinitamente contable.
introduccin
a los modelos
de computacin Prueba:
67
Cada programa es una cadena finita de
smbolos sobre un alfabeto finito fijo. Sea Pn
el conjunto de todos los programas que son
cadenas de longitud n sobre A. El conjunto
de todos los programas es la unin de los
conjuntos P0, P1, , Pn, Dado que cada
Pn es finito y por lo tanto contable, podemos
concluir que la unin es contable.
LENGUAJES
FORMALES
Y
AUTMATAS

lmites de la computabilidad
(se ver al final del curso)
LENGUAJES
FORMALES
Y
AUTMATAS

introduccin
a los modelos
de computacin
68

Existe slo un nmero contable de


programas de computadora. Por lo
tanto existen lmites sobre lo que
puede ser computado.
Ejemplos
Dado que existe un nmero incontable
de funciones de N N no todas son
computables. Existen programa para
calcular slo un conjunto contable de
estas funciones.

lmites de la computabilidad
(se ver al final del curso)

Ejemplos (cont.)
No es posible computar cualquier real hasta
un nmero arbitrario de cifras decimales. La
razn es que existe un nmero contable de
introduccin
a los modelos
programas y un nmero incontable de
de computacin
69
reales.
Si extraemos los reales computables de R,
el conjunto restante sigue siendo incontable.
Por qu?
Los nmeros racionales pueden ser
computados.
Algunos nmeros irracionales pueden ser
computados (ejemplo: ).
LENGUAJES
FORMALES
Y
AUTMATAS

También podría gustarte