Nada

Noviembre 18, 2009

Me han regalado El libro de la nada, de John Barrow.

Lo primero que sentí al ver el título fue el temor (la esperanza) de que al abrirlo sólo encontraría páginas en blanco.

Pero no; encontré un libro lleno de capítulos, que promete una interesante lectura. Ya comentaré.


Un aporte algorítmico al “debate” cero a la cero

Agosto 7, 2009

Es curioso (y en cierto modo injusto) el hecho de que la igualdad 0^0 = 1 sea tan discutida en ciertos ámbitos.

No niego que este resultado pueda ser poco intuitivo al principio, sobre todo si primero nos enseñan que 0^n = 0 para n > 0, pero una vez que se demuestra, resulta de lo más natural en innumerables contextos.

Se pueden dar demostraciones de todo tipo (por ejemplo, la del Topo Lógico, basada en la teoría de conjuntos, es de las más lindas que vi); pero como yo soy menos riguroso y me gustan las computadoras, se me ocurrió darle al asunto un enfoque más orientado hacia la “elegancia algorítmica” (sea eso lo que sea).

Idea básica: aplicación iterada

Supongamos que necesitamos una función que tome dos números naturales y calcule su producto, usando la definición de producto como acumulación de sumas. Una manera iterativa de implementarla será algo así (en Python):

def producto(x, y):
    # comenzamos con el elemento neutro de la suma
    t = 0
    # ahora aplicamos y veces el sumando x
    for i in range(y):
        t += x
    return t

Y una manera recursiva, en Haskell por ejemplo:

producto x 0 = 0
producto x y = x + (producto x (y-1))

Aunque quizá no sean tremendamente eficientes, ambas funcionan perfectamente en todos los casos, e ilustran la definición del producto como aplicación repetida de la suma.

Extendiendo la idea

Supongamos que ahora nos piden que definamos la potencia de dos números naturales, usando la misma idea de acumulación, aunque ahora de productos en lugar de sumas.
Un programador que se precie usará el mismo patrón que antes, pero cambiando la operación aplicada y el elemento neutro.

La versión iterativa quedaría entonces así:

def potencia(x, y):
    # comenzamos con el elemento neutro de la multiplicacion
    t = 1
    # ahora aplicamos y veces el factor x
    for i in range(y):
        t *= x
    return t

Y la versión recursiva, así:

potencia x 0 = 1
potencia x y = x * (potencia x (y-1))

Y ambas dan la respuesta correcta para 0^0.

¿No es bello? Además de haber ahorrado trabajo aplicando un patrón ya implementado, se logra la capacidad para definir funciones cada vez más “avanzadas”, cada una extendiendo un nivel la función anterior. Pero ese es tema para otro post…


La belleza algorítmica de las plantas

Mayo 29, 2009

Tal es el título de un libro que estoy leyendo en estos días. Se puede conseguir gratuitamente en este sitio (en formato pdf).

El libro describe técnicas de modelado matemático de muchas estructuras que aparecen en el mundo vegetal. Todas son interesantes y muchas son muy fáciles de implementar, con algoritmos elegantes y breves (yo mismo he encontrado muy sencillo implementar una variante en mi programejo garabatos).

La existencia de estos modelos es muy evocativa y sugiere que la aparición de estructuras complejas no requiere de fuerzas misteriosas o leyes complicadas, sino de la aplicación reiterada de reglas sencillas a una cantidad muy pequeña de información inicial.

Recomiendo el libro a todos aquellos que amen las plantas y/o la matemática, y a los que estén interesados en la visión computacional del universo.


Edad capicúa

Mayo 19, 2009

Hace un rato me enteré de un grato detalle palindrómico: mi edad es aproximadamente 35.53 años.

¿Durante cuánto tiempo se dará dicha situación? Obviamente, redondeando a dos decimales.


La funcioncita

Mayo 16, 2009

La funcioncita es un juego que solíamos jugar con amigos en la facultad.

Un jugador define en secreto una función real de una variable; por ejemplo, f(x)=cos(x)+x . El otro jugador va preguntando el valor de f(x) para distintos valores de x , hasta que adivina cuál es la función elegida por su oponente. Luego intercambian roles; el que adivina pidiendo menos datos es el ganador. Es un lindo juego, aunque requiere un sistema de honor difícil de formalizar, por la dificultad intrínseca de definir cuáles funciones “valen” y cuáles no.

Hace unas semanas discutíamos variantes con un amigo, y se nos ocurrió una versión “acumulativa”, donde las funciones elegidas por un jugador pudieran ser usadas por su oponente en las siguientes rondas como componentes de nuevas funciones. Esto pone (presumiblemente) un límite a la complejidad, como ocurre en la payada a dos voces, donde cada payador continúa los versos del rival y debe tener mucho cuidado al usar rimas complicadas, pues él mismo deberá enfrentarlas cuando le toque nuevamente.

No llegamos a probar esta variante, pero la mecánica promete generar todo tipo de bucles y dilemas. Si alguien la prueba, no deje de comentarlo.


Los dos sobres

Abril 26, 2009

Hay una paradoja clásica pero deliciosa, que encuentro aperiódicamente en mis lecturas: la paradoja de los dos sobres.

Nos dan a elegir entre dos sobres con dinero, diciéndonos que uno tiene el doble de dinero que el otro. Una vez que elegimos uno, nos dan la opción de cambiarlo por el otro.

Pensamos: “Sea D_1 la cantidad de dinero de este sobre. Si lo cambio por el otro, mi esperanza es de D_1 + \frac{1}{4} D_1, la cual es claramente mayor que D_1. Por lo tanto, me conviene cambiar.”

Tomamos el otro sobre. Pero antes de abrirlo, pensamos: “Sea D_2 la cantidad de dinero de este sobre. Si lo cambio por el otro, mi esperanza es de D_2 + \frac{1}{4} D_2, la cual es claramente mayor que D_2. Por lo tanto, me conviene cambiar…”

Y así siguiendo. ¿Cómo salir de semejante bucle?

Hay algún tipo de fallo en los razonamientos, pero no es tan claro cuál sea. Aquí pueden encontrar algunas argumentaciones razonables al respecto.


Libro gödeliano

Abril 16, 2009

Gran noticia: Gustavo Piñeiro y Guillermo Martínez han escrito el libro Gödel para todos. Lo presentarán el viernes 24 de abril a las 21 hs en la sala Julio Cortázar de la Feria del Libro de Buenos Aires, y estamos todos invitados. Más información, aquí.

Tanto el libro como la presentación prometen ser muy interesantes. Espero ver por allí a todos los amantes del tema.

Update: tengo el libro. Procedo a la lectura. Iré comentando.


Aleatoriedad

Enero 4, 2009

La generación de números aleatorios es demasiado importante para dejarla librada al azar.

Robert R. Coveyou, 1969


Restorán de Peano: resultados finales

Septiembre 17, 2008

He aquí los resultados finales del concurso. No habrá más rondas aquí en Bucles, pero seguramente habrá una competencia más formalizada en Bits en el Ring.

Las reservas fueron estas:

  • Mesa 1: Leto
  • Mesa 2: Fernando, Luis
  • Mesa 3: Graciela, Kirthar, Juan Luis, Odin, Cynthia
  • Mesa 4: Iñigo, Jorge, Angel, Pablo
  • Mesa 5: Diego, Carlos
  • Mesa 6: Andmujika
  • Mesa 7: Ricardo

Recordemos que cada mesa tiene tantos asientos como su número indica, y que los mozos sólo atienden las mesas en que no haya asientos libres ni personas paradas.

Por lo tanto, los ganadores son Leto (mesa 1), Fernando y Luis (mesa 2), Iñigo, Jorge, Angel y Pablo (mesa 4). ¡Felicitaciones!


El restorán de Peano: resultados

Septiembre 10, 2008

Ha sido un emocionante concurso. Pensábamos que no iba a haber ganadores; por suerte no fue así.

Las reservas fueron estas:

  • Mesa 1: Lucía, Oooa, Haya y Kirthar.
  • Mesa 2: Fernando e Iván.
  • Mesa 3: Graciela.
  • Mesa 4: Bernard.
  • Mesa 5: Wertygol.
  • Mesa 7: Leonardo.
  • Mesa 9: Carlos.

Recordemos que cada mesa tiene tantos asientos como su número indica, y que los mozos sólo atienden las mesas en que no haya asientos libres ni personas paradas.

Por lo tanto, tenemos dos ganadores: Fernando e Iván, que eligieron la mesa 2 y fueron atendidos por los mozos.

¿Les gustó el juego? Hagamos otra ronda. Presumiblemente habrá más participantes, así que quizá quieran modificar sus estrategias…

Pueden hacer sus reservaciones en los comentarios o por mail.