Jugando con letras II: Todas las codificaciones
Después de una pequeña serie de post zapping vuelvo con un poco de programación y juegos de palabras. El segundo de esta serie de posts sobre caracteres lo he dedicado a las combinaciones de letras. Hace tiempo ya, cuando la carrera aun me enseñaba muchas cosas y volvía a casa sorprendido y excitado ante los desafíos y pensamientos que allí me encontraba, (es decir, cuando daba cosas como Autómatas y Lenguajes formales, Tipos Abstractos de datos, Recursividad, Programación Declarativa, Traductores, Compiladores e Interpretes….) leí el que hasta ahora es mi relato favorito de Borges. Este relato es La biblioteca de Babel* y habla sobre una biblioteca ¿infinita? (=>NO. Podría ser cíclica, pero no infinita, como veremos ahora) que contiene volúmenes con una estructura fija, y cuyo contenido son caracteres aleatorios. Así dicho suena absurdo, pero reflexionando un poco, si tenemos todas las combinaciones posibles de caracteres que forman un libro tendremos todos los libros jamás escritos o por escribir. Y sobre esto Borges hace mucha mejor literatura que la mía.
Un poco a menor escala, pues las cifras de Borges, pese a no ser infinitas, serían astronómicas, he hecho un pequeño programa-ejercicio que me devuelve todas las combinaciones de N letras posibles. Las combinaciones se hacen con el alfabeto ASCII en mayúsculas, es decir, las letras de nuestro alfabeto sin la Ñ (en total 26). Este programa, por tanto, construye todas las posibles palabras de N letras que existen o existirán alguna vez con esos 26 caracteres. Entre ellas se encuentran palabras en español, en frances, en inglés… en todos los idiomas que usen este alfabeto. Por supuesto también habrá palabras como AAAAA, BBTUY o AATTA, pero tal vez eso sean palabras alguna vez ;)
Vayamos con algunas cifras. ¿Cuántas palabras hay en cada categoría? Pues si revisamos nuestros conocimientos de Probabilidad veremos que lo que tenemos es 26 elementos para N huecos, con repetición, importa el orden: Variaciones con Repetición 26,n. (VR26,N) Y por tanto habrá 26^N palabras. Esto es:
- Las palabras de 1 letra son las 26 letras del alfabeto.
- Las palabras de 2 letras son 26^2= 676. (Aquí están por ejemplo LA, EL, LO, LE, DE, IT, HE, WE, etc…)
- Hay : 26^3 = 17576 palabras de 3 letras. De cuatro hay 456976.
Y así sucesivamente… Como verán, y como indica la fórmula de las VR, el crecimiento es exponencial, pero siempre es calculable. Ésta es la razón por la que la biblioteca de Babel de Borges ES finita, aunque podría ser cíclica si al autor se le antoja, y por su puesto tendría unas dimensiones inimaginables. Y esa es la razón, también, por la que está vez no colgaré el programa que calcula las VR: Porque es un programa potencialmente peligroso. Ya que manda todas las palabras a un archivo, y si ponemos un número mayor de 5, no solo tratará de monopolizar el ordenador durante un buen rato, sino que puede que lo deje sin memoria. 5 letras serían 11881376 palabras, que a 58 caracteres por linea y 35 líneas por página nos da unas 34.000 páginas. El programa crea un archivo de unos 69 MB. Para seis serían 1.7 GB. y para 8 serían 1.3 TB. Así que imaginaros la biblioteca de Borges…
Como regalo final os dejo un par de enlaces:
Todas las combinaciones para 4 letras (2.2mb). Podéis buscar palabras que conozcáis, aquí dentro están DEDO,CASA, GATO, LOOP, LIKE, LOVE, etc, etc.
(*)La Biblioteca de Babel. de Jorge Luis Borges





Esta muy chulo eso que dices, es interesante, aunque no entiendo para qué sirve exactamente. Sólo se me ocurre la utilidad de hacer trampas en el juego del scrable :P
Un beso, y sigue haciendo cosas que te entusiasmen así.
Comment by princess — 2 April, 2007 @ 23:28
jejeje, en realidad no sirve para nada, solo para hacer un poco de reflexión sobre aleatorierdad y combinatoria. Esta serie de post es un poco de CPI supongo.
Comment by Juanmi — 4 April, 2007 @ 11:29
Basandose en lo mismo que comentas en tu post hace tiempo lei en alguna parte que si pusieras a un mono inmortal en una maquina de escribir el suficiente tiempo (millones de años tal vez) escribiría todas las novelas que se han escrito y todas las que se puedan llegar a escribir en un futuro.
Perdona el Off topic. ¿Como has insertado el filtro anti-spam para la publicación de comentarios? En mi blog me estan achicharrando a spam y ya va siendo hora de ponerle fin.
Saludos
Comment by brausoft — 5 April, 2007 @ 10:53
buenas brausoft, gracias por comentar y espero que vuelvas ;) La historia de los monos aparece varias veces en los simpsons, en teoría es la misma base, solo que, realmente el mono no pulsaría las letras aleatoriamente (el mono podría cogerle manía a la ‘d’, la ‘h’ y la ‘l’ por ejemplo, y no pulsarlas nunca).
En lo del filtro anti-spam siento no poder ayudarte pero es un servicio que ofrece blogsome desde hace un tiempo, es todo automático. Solo que yo puedo cambiar las plantillas y las he traducido, pero no sé nada más :(
Comment by Juanmi — 5 April, 2007 @ 13:59
Querido amigo,
me interesa tu programa de generación de palabras y me gustaria experimentar con el.
Si quieres escríbeme a mi mail. Deberias explicarme las precauciones para operar con el programa y las experiencias que ya has realizado con el.
Un saludo cordial
Albert Girós
Comment by Albert Girós — 13 April, 2007 @ 17:01