RSS

Borges, Terabytes y php

24 Ago

Les comparto un delirio que escribí alguna vez, corregido y aumentado:

Tomo prestada una idea salida de dos textos de Borges: “La biblioteca de Babel” y “La biblioteca total”. Mucho se ha escrito sobre el primero, un poco menos sobre el segundo. Con diferencias, en ambos textos se menciona la posibilidad de una biblioteca que contuviera a todos los libros, escritos o por escribirse, mediante un método que ahora llamaríamos fuerza bruta: agotar todas las combinaciones posibles de caracteres. En ella,

cada libro es de cuatrocientas diez páginas; cada página, de cuarenta renglones; cada renglón, de unas ochenta letras de color negro.

Borges

Borges, por Grete Stern (1951)

No es absurda la idea: los libros de más de 410 páginas ocuparían varios tomos; un libro de 100 páginas tendría las últimas 310 páginas formadas por espacios en blanco. En “La biblioteca total”, Borges sugiere, siguiendo a Huxley (no sé si abuelo, padre, o cuál de sus hijos) que los libros podrían estar generados al azar, por un mono inmortal, provisto de una máquina de escribir. La cantidad de libros distintos que podrían generarse es inmensa, pero finita.
Ahora bien, podríamos imaginar que esos libros se generasen por computadora, mediante algún algoritmo (propongo uno al final del post), y se guardaran en formato “texto plano” (como el nano o gedit de GNU/Linux o el Bloc de notas de Windows). La pregunta es ¿qué cantidad de almacenamiento necesito? ¿Cuántos TeraBytes? Para que se den una idea, el disco rígido de la máquina en donde están leyendo esto, probablemente almacene entre medio y unos pocos TeraBytes. (El prefijo tera significa, en griego, monstruo. Creo que a Borges le habría gustado.)
¿Cuántas “letras” (caracteres) hay? Siguiendo de nuevo a Borges, en “La biblioteca total”:

El número de tales elementos -letras, espacios, llaves, puntos suspensivos, guarismos- es reducido y puede reducirse algo más. El alfabeto puede renunciar a la cu (que es del todo superflua), a la equis (que es una abreviatura) y a todas las letras mayúsculas. Pueden eliminarse los algoritmos del sistema decimal de numeración o reducirse a dos, como en la notación binaria de Leibniz. Puede limitarse la puntuación a la coma y al punto. Puede no haber acentos, como en latín. Afuerza de simplificaciones análogas, llega Kurd Lasswitz a veinticinco símbolos suficientes (veintidós letras, el espacio, el punto, la coma) cuyas variaciones con repetición abarcan todo lo que es dable expresar: en todas las lenguas. El conjunto de tales variaciones integraría una Biblioteca Total, de tamaño astronómico.

¿Cuántos caracteres conforman un libro?
410 págs * 40 renglones/pág * 80 caracteres/renglón= 1.312.000 caracteres
Para saber cuántos libros distintos hay, habría que conocer de cuántas formas es posible combinar los 25 caracteres para formar series de 1.312.000. Respuesta: 25^1.312.000 (25 elevado a la 1.312.000-ésima potencia).
Se sabe que la cantidad de caracteres en texto plano equivale, por lo general a la cantidad de Bytes. Para saber cuántos TeraBytes ocupará, hay que dividir por 2^40. Así es que la “Biblioteca Total” ocupará

La respuesta a esta potencia se nos escapa, es demasiado grande. Sin embargo, podemos expresar dicho resultado como potencia de 10:

Con un procedimiento similar, obtenemos que
1 312 000 = 10^6,118
así como 2^40 = 10^12,0412
Entonces, la fórmula anterior queda:

Es decir, la Biblioteca ocuparía 10^1.834.091 Terabytes. Ese número sería un uno seguido por 1.894.091 ceros.
Es difícil pensar números tan grandes, encontrar puntos de comparación. Se me ocurre uno: según este blog, el Universo tiene 10^80 átomos…
¿Llegaremos algún día a semejante capacidad de almacenamiento? Todo hace pensar que no, toda vez que estamos hablando de un número mucho mayor a la cantidad de electrones que hay en el Universo. Pero… ¿hasta dónde llegará la humanidad? Varios de los teléfonos que tenemos en nuestros bolsillos eran una fantasía inalcanzable hace unos pocos años.
Ahora, podemos hacernos otra pregunta: ¿cuánto ocuparía la Biblioteca comprimida? (Como los archivos .zip, .tar.gz, o .rar). Al fin y al cabo, comprimir un archivo es determinar una manera de regenerarlo, es decir, un algoritmo. Programado en el lenguaje php, ese algoritmo podría ser el que está más abajo: la Biblioteca de Babel, comprimida, no alcanza a ocupar 1KB…

<?php
/*Es indispensable conocer el concepto de recursividad para entender el algoritmo*/
genere_libro();

function genere_libro($libro) {
for ($i=1;$i<26;$i++) {
	//Le agrego una letra al libro:	
	$libro.=alfabeto($i);
	//Si se completó el libro...	
	if(strlen($libro)==(410*80*40)) guardar_libro($libro)
	//Si no, recursividad:	
	else genere_libro($libro);
	//Le saco al libro la última letra agregada, para generar una nueva combinación:	
	$libro=substr($libro,0,strlen($libro)-1);
}
}


function alfabeto($num) {
   switch ($num) {
      case 1:
         $letra='a'; break;
      case 2:
         $letra='b'; break;
       //etc, etc
       case 22:
         $letra='z'; break;
       case 23:
         $letra=' '; break;
       case 24:
         $letra=','; break;
       case 25:
     $letra='.';
   }
return $letra;
}

function guardar_libro($libro){
/*Simplemente lo muestra por pantalla, podría guardarse de cualquier otro modo*/
echo "$libro <br>";
}
?>
 
4 comentarios

Publicado por en 24/08/2011 en Libros

 

Etiquetas: , , , , , , ,

4 Respuestas a “Borges, Terabytes y php

  1. Juan

    24/08/2011 at 18:23

    Interesante excepto que “El hombre sabe que hay en el alma tintes más desconcertantes, más innumerables y más anónimos que los colores de una selva otoñal… cree, sin embargo, que esos tintes, en todas sus fusiones y conversiones, son representables con precisión por un mecanismo arbitrario de gruñidos y de chillidos. Cree que del interior de un bolsista salen realmente ruidos que significan todos los misterios de la memoria y todas las agonias del anhelo” –Chesterton

     
  2. hicsuntdracones

    01/05/2015 at 21:16

    Creo que no es cosa de preocuparse por la memoria requerida para la Biblioteca de Babel, dado que basta con generar el libro en el momento preciso en que se requiera. Está claro que no es posible almacenar 25^{1312000}, dado que el número estimado de átomos del universo está en torno a 10^{80}. La solución pasa por generar el libro que corresponde a una posición determinada de la biblioteca, tal como la estructura Borges: hexágono, pared, estante, volumen. Recomiendo el examen de la libraryofbabel de Jonathan Basile.

     
  3. hicsuntdracones

    01/05/2015 at 21:17

    Corrijo: donde dije “almacenar 25^{1312000}” debí decir “almacenar 25^{1312000} libros”.

     

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

 
A %d blogueros les gusta esto: