Está en la página 1de 45

El m etodo infalible para ganar a la ruleta en 21 d as. Llame YA!

Santiago Figueira
Universidad de Buenos Aires Facultad de Ciencias Exactas y Naturales Departamento de Computaci on

Charla de Borrachos 2005

Primera parte

Computabilidad

Historia de la Computabilidad
David Hilbert, 1900: Ac a les dejo 23 problemas. Es la matem atica completa? Es decir, puede ser demostrada o refutada cualquier sentencia matem atica? y es la matem atica consistente? Adem as, son las matem aticas decidibles?

Historia de la Computabilidad
David Hilbert, 1900: Ac a les dejo 23 problemas. Es la matem atica completa? Es decir, puede ser demostrada o refutada cualquier sentencia matem atica? y es la matem atica consistente? Adem as, son las matem aticas decidibles? Kurt G odel, 1931: Cualquier sistema formal sucientemente potente es inconsistente o incompleto. Adem as, si un sistema de axiomas es consistente, esta consistencia no puede demostrarse dentro del sistema formal.

Historia de la Computabilidad
David Hilbert, 1900: Ac a les dejo 23 problemas. Es la matem atica completa? Es decir, puede ser demostrada o refutada cualquier sentencia matem atica? y es la matem atica consistente? Adem as, son las matem aticas decidibles? Kurt G odel, 1931: Cualquier sistema formal sucientemente potente es inconsistente o incompleto. Adem as, si un sistema de axiomas es consistente, esta consistencia no puede demostrarse dentro del sistema formal.

David Hilbert: Chapeau!

Alan Turing, 1936: Hola, yo soy Alan. Constru un modelo formal de c omputo, la M aquina de Turing, y demostr e que hay problemas que esta m aquina no puede resolver.

Alan Turing, 1936: Hola, yo soy Alan. Constru un modelo formal de c omputo, la M aquina de Turing, y demostr e que hay problemas que esta m aquina no puede resolver. Alonzo Church, 1936: Yo hice lo mismo pero por un camino totalmente distinto. Me bas e en una notaci on formal, que denomin e c alculo lambda.

Alan Turing, 1936: Hola, yo soy Alan. Constru un modelo formal de c omputo, la M aquina de Turing, y demostr e que hay problemas que esta m aquina no puede resolver. Alonzo Church, 1936: Yo hice lo mismo pero por un camino totalmente distinto. Me bas e en una notaci on formal, que denomin e c alculo lambda. Stephen Kleene: Formul e la noci on de funci on computable de otra manera. Estudi e los grados de computabilidad de los conjuntos, la jerarqu a aritm etica, etc. Emil Post: Trabaj e en conjuntos recursivamente enumerables, reducibilidades y grados de computabilidad, etc.

Primer intento para m etodo efectivo: funciones primitivas recursivas


Las funciones primitivas recursivas s olo pueden usar: cero sucesor S (x ) = x + 1 composici on un tipo simple de recursi on: si g y h son funciones primitivas recursivas, entonces tambi en lo es f : f (x , 0) = g (x ) f (x , S (y )) = h(x , y , f (x , y ))

Primitivas recursivas = Programas con for


La funci on + es primitiva recursiva porque x +0 = x x + S (y ) = S (x + y ) Son funciones primitivas recursivas: el producto, la exponenciaci on las sumatorias, y predicados como esPrimo(x ) = 1 si x es primo 0 sino

Las funciones primitivas recursivas coinciden con los programas que no usan while pero s pueden usar for:
funci on factorial(n) r := 1 for i:=1 to n r := r*i return r

Con esto basta?

Se puede denir cualquier funci on computable (total) usando programas for? O sea: cualquier funci on (total) que programemos en una computadora es una funci on primitiva recursiva?

La funci on de Ackermann
si m = 0 n + 1 A(m, n) = A(m 1, 1) si m > 0 y n = 0 A(m 1, A(m, n 1)) si m > 0 y n > 0

La funci on de Ackermann
si m = 0 n + 1 A(m, n) = A(m 1, 1) si m > 0 y n = 0 A(m 1, A(m, n 1)) si m > 0 y n > 0 Para valores chicos de m, como 1, 2, o 3, A crece relativamente lento con respecto a n (a lo sumo exponencialmente). Para m 4, crece m as r apido: A(4, 2) 2 1019728 A(4, 3) > cantidad de part culas del universo

La funci on de Ackermann
si m = 0 n + 1 A(m, n) = A(m 1, 1) si m > 0 y n = 0 A(m 1, A(m, n 1)) si m > 0 y n > 0 Para valores chicos de m, como 1, 2, o 3, A crece relativamente lento con respecto a n (a lo sumo exponencialmente). Para m 4, crece m as r apido: A(4, 2) 2 1019728 A(4, 3) > cantidad de part culas del universo h(n) = A(n, n) crece m as que la funci on exponencial, el factorial... h crece m as que cualquier funci on primitiva recursiva!

Segundo intento para m etodo efectivo: m aquinas de Turing

Las m aquinas de Turing


Supongamos que la chica del slide anterior quiere calcular: 2 6 3 0 3 1 9 1 0 1 3 3 0 3

2 3 No es esencial:

mientras hace la cuenta est a tomando un caf e? escribe con l apiz o lapicera? importa el tama no del papel? Lo importante es que: hace marcas en un papel para saber qu e escribir en cada paso, le presta atenci on a lo que escribi o antes

Las m aquinas de Turing


Sin perder nada esencial, podemos suponer: 2 3 1 1 3 = 6 9 3 + 2 3 1 0 = 3 0 0 3 Empezamos con la multiplicaci on 2 3 1 1 3 = ...

Despu es de un tiempo, vamos a estar sumando 2 3 1 1 3 = 6 9 3 + 2 3 1 0 = ...

En cada paso de la computaci on s olo un peque no n umero de s mbolos reciben atenci on (en el ejemplo, 2) La acci on que se toma en cada paso depende s olo de los s mbolos que est an recibiendo atenci on y del estado actual de quien est a haciendo el c alculo (en el ejemplo, la se norita est a en estado multiplicando o sumando)

Entonces... qu e es un m etodo efectivo?

Resultado b asico de Teor a de la Computabilidad: Son equivalentes: f es programable en alg un lenguaje de programaci on (Java, C, etc.) f es computable por una m aquina de Turing f es recursiva parcial (como primitivas recursivas pero con minimizaci on, no lo vimos) f es denible en -c alculo (esto no lo vimos)

Conjuntos computables y recursivamente enumerables


Un conjunto A N es computable cuando hay una funci on computable f tal que f (n) = 1 0 nA n /A

Un conjunto A N es recursivamente enumerable (r.e.) cuando hay una funci on computable f tal que A = {f (n) : n N}

Conjuntos computables y recursivamente enumerables


Un conjunto A N es computable cuando hay una funci on computable f tal que f (n) = 1 0 nA n /A

Un conjunto A N es recursivamente enumerable (r.e.) cuando hay una funci on computable f tal que A = {f (n) : n N} Cada programa tiene un n umero que lo identica. K = {e : el e - esimo programa evaluado en e termina} Es un conjunto r.e. pero no es computable. Este es el famoso halting problem: el problema de saber si un programa arbitrario termina no es computable.

Qu e hay adem as de las funciones computables?

Funciones primitivas recursivas

Qu e hay adem as de las funciones computables?

Funciones primitivas recursivas

Funciones computables

Qu e hay adem as de las funciones computables?

C omputos con or aculo Funciones primitivas recursivas Funciones computables

C omputos con or aculo


Son programas con una peque na ayudita. Un programa con el or aculo para B N tiene una instrucci on nueva: est asEnB?(n) = 1 0 nB n /B

Un programa con or aculo para K es capaz de resolver el halting problem. Pero hay otros problemas que no se pueden resolver con la ayuda del or aculo K. Decimos B T C cuando podemos computar B con un or aculo para C . T se llama reducibilidad de Turing. Problema de Post: Hay un conjunto X r.e. tal que <T X <T K?

Segunda parte

Aleatoriedad
(despi ertense)

Aleatoriedad
Experimento: tirar una moneda 40 veces. Anotar 1 cara 0 ceca Cu ales de estas secuencias parecen la salida de este experimento?

A = 0000000000000000000000000000000000000000 B = 1010101010101010101010101010101010101010 C = 1100010100110011010001101011101000101101

Aleatoriedad
Experimento: tirar una moneda 40 veces. Anotar 1 cara 0 ceca Cu ales de estas secuencias parecen la salida de este experimento?

A = 0000000000000000000000000000000000000000 B = 1010101010101010101010101010101010101010 C = 1100010100110011010001101011101000101101

P (A) = P (B ) = P (C ) = 240

C omo se puede denir aleatoriedad?

Aleatoriedad = igual probabilidad para el 0 que para el 1. Eliminamos la posibilidad A = 0000000000000000000000000000000000000000 pero la secuencia B = 1010101010101010101010101010101010101010 ser a aleatoria. Demasiado d ebil.

Aleatoriedad = ausencia de patrones


La mayor a de las secuencias son aleatorias. Hay pocas secuencias con patrones reconocibles. Por eso, una secuencia como B = 1010101010101010101010101010101010101010 nos parece extraordinaria, pero una secuencia como C = 1100010100110011010001101011101000101101

no nos llama tanto la atenci on. Posibles ataques a la noci on de ausencia de patrones. Hay muchos, nosotros vamos a ver dos: 1. relacionado con juegos de azar, como la ruleta 2. relacionado con la compresi on de datos

Martingalas
Supongamos una ruleta (sin el cero). Anotamos 0 rojo 1 negro Idea: una secuencia (innita) S no es aleatoria cuando hay formas de ganar en una ruleta en la que sale la secuencia de colores S . Es f acil ganar en una ruleta que va sacando los colores: A = 0000000000000000000000000000000000000000 . . . B = 1010101010101010101010101010101010101010 . . .

Esas secuencias no son aleatorias porque hay estrategias computables para apostar y ganar tanta plata como uno quiera.

Aleatorio = inexistencia de martingalas


Una secuencia S no es aleatoria cuando existe una martingala computable que me permita ganar tanta plata como quiera, empezando con una cierta cantidad ja de plata y no pidiendo prestado.

Aleatorio = inexistencia de martingalas


Una secuencia S no es aleatoria cuando existe una martingala computable que me permita ganar tanta plata como quiera, empezando con una cierta cantidad ja de plata y no pidiendo prestado.

Una secuencia S es aleatoria cuando no existe ninguna martingala computable de esas caracter sticas.

Paradoja de Berry
Los n umeros pueden ser descriptos con oraciones: 235 = doscientos treinta y cinco 1048576 = un mill on cuarenta y ocho mil quinientos setenta y seis; dos a la veinte 3628800 = tres millones seiscientos veintiocho mil ochocientos; factorial de diez Como en castellano hay una cantidad nita de palabras, tiene que haber una cantidad nita de oraciones de menos de 15 palabras. Algunas de estas describen n umeros y otras no. el menor n umero que no puede ser descripto con menos de quince palabras. Por denici on, no hay ninguna oraci on de menos de 15 palabras que lo describa. Pero la oraci on de arriba lo describe y tiene 13 palabras!

Los programas describen palabras


Kolmogorov: los programas pueden ser vistos como descripciones algor tmicas de palabras. Puedo describir

101010101010101010101010101010101010101010101010101010101010 con los programas


return "101010101010 10101010101010101010 10101010101010101010 10101010" r := "" for i:=1 to 30 r := r ++ "10" return r

El primero tiene 69 caracteres, el segundo tiene 43.

Incompresibilidad
Idea: las secuencias aleatorias son dif ciles de comprimir. La secuencia innita S es aleatoria cuando no hay programas cortos que describan a los prejos de S .

A = 0000000000000000000000000000000000000000 . . . B = 1010101010101010101010101010101010101010 . . . C = 1100010100110011010001101011101000101101 . . .

Es f acil comprimir segmentos iniciales de A y B . Lo u nico que se me ocurre para describir los primeros 10 y 20 bits de C es codicar return "1100010100" return "11000101001100110100" la informaci on textual adentro del programa:

Aleatorio = incompre(n)sible

Una secuencia S es aleatoria cuando todos los prejos de S son incompresibles.

Aleatorio = incompre(n)sible

Una secuencia S es aleatoria cuando todos los prejos de S son incompresibles.

Una secuencia S no es aleatoria cuando puedo comprimir mucho los prejos de S (por medio de programas).

Ejemplo de secuencia aleatoria


Una secuencia de 0s y 1s se puede ver como un n umero real en [0, 1] escrito en binario. Chaitin prob o que = p no se cuelga es un real aleatorio. no hay forma de ganar con una martingala computable en una ruleta que va tirando los bits de no hay programas que describen de manera econ omica los prejos de Adem as T K K T . Entonces, codica al halting problem de manera muy compacta. 2|p| [0, 1]

El m etodo infalible para ganar a la ruleta Explicaci on

El m etodo infalible para ganar a la ruleta Explicaci on

El m etodo infalible para ganar a la ruleta


1. 2. 3. 4. 5. Apostar $1 al rojo. Si gan e, volver al paso 1. Sino, apostar $2 al rojo. Si gan e, volver al paso 1. Sino, apostar $4 al rojo. Si gan e, volver al paso 1. Sino, apostar $8 al rojo. ...

Si sale negro, negro, negro, negro, ya perd $1 + $2 + $4 + $8 = $15 Apuesto $16 al rojo. Si sale rojo, gano $16. Como hab a perdido $15, mi ganancia es de $1. Entonces, cada vez que sale rojo tengo $1 m as.

El m etodo infalible para ganar a la ruleta


1. 2. 3. 4. 5. Apostar $1 al rojo. Si gan e, volver al paso 1. Sino, apostar $2 al rojo. Si gan e, volver al paso 1. Sino, apostar $4 al rojo. Si gan e, volver al paso 1. Sino, apostar $8 al rojo. ...

Si sale negro, negro, negro, negro, ya perd $1 + $2 + $4 + $8 = $15 Apuesto $16 al rojo. Si sale rojo, gano $16. Como hab a perdido $15, mi ganancia es de $1. Entonces, cada vez que sale rojo tengo $1 m as. Les juro que esto funciona! (mi hermano lo hizo y con la plata que gan o se compr o una bicicleta) Por qu e no es una martingala de las que vimos antes?

El m etodo infalible para ganar a la ruleta


1. 2. 3. 4. 5. Apostar $1 al rojo. Si gan e, volver al paso 1. Sino, apostar $2 al rojo. Si gan e, volver al paso 1. Sino, apostar $4 al rojo. Si gan e, volver al paso 1. Sino, apostar $8 al rojo. ...

Si sale negro, negro, negro, negro, ya perd $1 + $2 + $4 + $8 = $15 Apuesto $16 al rojo. Si sale rojo, gano $16. Como hab a perdido $15, mi ganancia es de $1. Entonces, cada vez que sale rojo tengo $1 m as. Les juro que esto funciona! (mi hermano lo hizo y con la plata que gan o se compr o una bicicleta) Por qu e no es una martingala de las que vimos antes? Porque no hay l mite en la cantidad de plata que puedo perder en el medio. No hay garant as de que no me quede seco en la mitad del juego (mi hermano tuvo suerte...).