¡Origami!

¿Ves como las matemáticas sirven para algo? Dichosa topología… Si alguien quiere el programa del que se habla en el vídeo, está aquí.

De números aleatorios y seguridad

Me sé de al menos uno al que le va a gustar la entrada…

La seguridad informática es difícil. Muy difícil, de hecho. Y tiene el pequeño problema de que la cadena es tan débil como el más débil de los eslabones. De nada sirve implementar la criptografía más dura del mundo si tu usuario le regala su clave a cualquiera a cambio de un café… ni si tu generador de números aleatorios (esto es, generador de números pseudoaleatorios, de hecho) no es suficientemente aleatorio. Y eso es lo que pasó hace tiempo en la biblioteca OpenSSL, usada por Apache, entre otros (no, no todos los agujeros de seguridad vienen firmados por Microsoft. Ya sé que resulta sorprendente). El resultado: que muchos ataques de «fuerza bruta» requieren ahora mucha menos potencia de cálculo de la que en principio haría falta (hasta extremos que rozan lo ridículo, en algunos casos). La historia (verdaderamente como para no dormir, va a costar mucho tapar el agujero), en Technology Review.

PS 20080521 Para los interesados en ver la diferencia entre un buen generador de números aleatorios y no normalito, pasen y vean.

PS’ 2005021 Un postmortem del asunto interesante tanto para los que quieran saber más sobre entropía como para los que quieran saber más sobre el origen del fallo y las metodologías de desarrollo que se siguen en un proyecto de software libre. (Imperdibles, además, las dos tiras cómicas enlazadas en la entrada.)

Nota: Ayer alguien me comentaba que el agujero ponía en duda el funcionamiento del software libre. En mi opinión, no, para nada: pone de manifiesto que la seguridad es difícil, cometer un error y romperla relativamente fácil, a pesar de que se toman medidas para evitarlo, y que a veces esos errores son extremadamente difíciles de localizar. También significa que, aún cuando esos errores pueden tener consecuencias funestas (y el reducido catálogo de claves con que se mueven ahora mismo mucha gente y muchas aplicaciones debería provocar, cuando menos, pánico), cuando se cometen y se detectan es mucho mejor invertir esfuerzos en poner remedio a la situación y poner medidas para que no se repita que en señalar con el dedo al culpable (que siempre es una cadena considerable de culpables) y la organización para la que trabaja. Trabaje esta con código abierto o no.

El vector propio de los 25 millones de dólares

Disculpen, pero me pongo el gorro de matemático un ratito. No se preocupen que será breve. Los que lo deseen, pueden cambiar de canal un rato, pero si se quedan igual aprecian un poco más esas clases de álgebra lineal de primero de carrera que muchos sufrieron sin saber el porqué.

Uno hizo matemáticas en la universidad (no se preocupen, no es contagioso y estoy casi curado). Y también ha visto cómo se dan clases de matemáticas en diversas facultades de economía y escuelas de ingeniería. Igual mi experiencia es muy negativa, pero cuando llega el tema de la manipulación de matrices, a muchos estudiantes se les explica cómo «diagonalizar una matriz» pero, en mi experiencia, a muy pocos se les dice por qué narices deben aprender a hacerlo, con la excepción del argumento ad baculum (disculpas de nuevo, esta vez por el latinajo): porque va a caer en el examen y, si no lo sabes hacer, pillas. Yo fui de los afortunados y me dijeron que dos aplicaciones importantes eran que diagonalizar facilitaba mucho calcular numéricamente potencias de una matriz y obtener, también numéricamente, valores y vectores propios de matrices, especialmente si la matriz de marras es grande (curiosamente, esos dos argumentos son los que se siguen utilizando, al menos en la Wikipedia). La pregunta obvia es ¿y para qué necesito elevar una matriz a la veinticinco o encontrar los vectores propios de una matriz diez mil por diez mil? Al cabo de unos pocos (bueno, no tan pocos…) años de carrera encontré una respuesta para la primera parte de la pregunta: en procesos estocásticos (suena mal, pero es una parte de las matemáticas apasionante, de verdad) llega a ser interesante elevar una matriz a infinito (disculpas por tercera vez, esta por el abuso de lenguaje)…

Lo de los vectores y valores propios me costó algo más, pero también obtuve respuesta. Y es que uno de los mejores negocios del mundo se basa en el cálculo de vectores propios de una matriz descomunal. A finales del siglo pasado un ingeniero informático y un licenciado en matemáticas e informática, estudiantes de doctorado en Stanford, publicaban un artículo en el que hacían la siguiente definición:

Supongamos que para la página A existen páginas T1…Tn que apuntan a ella (i.e., son citaciones). El parámetro d es un factor de amortiguación que tiene un valor entre 0 y 1. Solemos asignarle el valor 0.85. Hay más detalles sobre d en la siguiente sección. También definimos C(A) como el número de enlaces que salen de la página A. El PageRank de una página A se da de la siguiente forma:

PR(A) = (1-d) + d (PR(T1)/C(T1) + … + PR(Tn)/C(Tn))

Nótese que los PageRanks forman una distribución de probabilidad sobre las páginas web, de forma que la suma de los PageRanks de todas las páginas web será uno.

(Sí, los estudiantes eran Sergey Brin y Lawrence Page.) En el siguiente párrafo añadían:

El PageRank o PR(A) puede calcularse usando un algoritmo iterativo simple y se corresponde con el vector propio principal de la matriz de enlaces normalizada de la web. Además, un PageRank para 26 millones de páginas web puede calcularse en pocas horas en una estación de trabajo de tamaño medio. Hay muchos otros detalles que van más allá del alcance de este artículo.

Pues eso. Aunque el ‘pagerank’ de hoy tiene muchas más componentes que el de entonces y que el pagerank no es ni de lejos el único ingrediente de la receta Google, el motor del buscador sigue teniendo en el corazón una maquinita que se dedica al cálculo del vector propio de trozos de una matriz que, la última vez que Google dio números, tenía algo más de sesenta y cuatro trillones de celdas…

O sea que si alguna vez alguien les pregunta que para qué sirve diagonalizar matrices (poco probable, lo sé :-P) siempre pueden contestar que hay dos tipos que «valen» dieciocho mil millones de dólares cada uno gracias a una diagonalización. Estarán exagerando un poco, pero no tanto :-).

Ah sí, se me olvidaba. Todo esto lo sabía desde hace años. Pero me lo ha recordado Kurt Bryan, un profe de matemáticas que ha escrito un artículo (disponible desde aquí) sobre las matemáticas del PageRank. Los que recuerden todavía las clases de diagonalización le pueden echar una ojeada. Y los que no, siempre pueden sacarle el polvo a los apuntes ;-).

Happy Pi Day

Aprovechado que hoy es 3/14 y que son las 15:55 (1592 si lo expresáramos en decimal)… :-)

Una tarta pi

The official web site for Pi Day, March 14th.

Foto (CC) Paul Adam Smith, http://www.flickr.com/photos/psmith/2190712270/.

La geometría de la música

Advertencia: la siguiente entrada podría contener trazas de contenido presuntamente matemático.

No dejará de sorprenderme que una revista ‘seria, formal y de gran tirada’ publique un artículo con temas divulgativomatemáticos. En esta ocasión es Time que se descuelga con The Geometry of Music, sobre el trabajo de Dmitri Tymoczko visualizando composiciones musicales y revelando el equilibrio que hay en muchas de ellas mediante ChordGeometries, una aplicación desarrollada con MAX/MSP.

Les dejo con una pieza de Chopin, que queda muy culto (en la web de Tymoczko también hay una visualización del riff de Smoke On The Water, para los más rockeros).