TARDÍGRADOS

Ciencia en español -ʟᴀ ʀᴀᴢóɴ ᴇsᴛá ᴀʜí ғᴜᴇʀᴀ-

Posts Tagged ‘pixel’

¿Es posible comprimir 4 terabytes de datos en tan sólo 16 bytes?

Posted by Albert Zotkin en mayo 12, 2016

La respuesta a la pregunta del título es sí. Hola amigos de Tardígrados. Hoy voy a hablar de un método poco estándar de comprimir información binaria sin perdida. Este método es simplemente una curiosidad que se me ocurrió el otro día. Lo llamaré Compresión Estocástica de Datos Binarios, CEDaBit.

Supongamos que tenemos el siguiente archivo jpg de la Mona Lisa:

Mona_Lisa

que es una imagen de 560 pixels de ancho por 864 de alto. Es decir, sin comprimir, en total tenemos 483.840 pixels, y si cada pixel se puede describir por 3 bytes, tendremos en total una imagen de 1.451.520 bytes, y como cada byte consiste en 8 bits, tendremos una imagen de 11.612.160 bits. Pero esa imagen está codificada y comprimida en un archivo JPG, por lo tanto no son raw data (datos primarios), el tamaño es mucho menor. En dicho archivo existen también datos de cabecera y cola en los que se almacena más información. Si queremos “comprimir” en un CEDaBit todo el archivo JPG, debemos “comprimir” una cadena de 46.474 bytes. ¿Cömo lo haremos?.

Supongamos que queremos comprimir a un CEDaBit de 16 bytes. Para ello, lo primero que tenemos que hacer es calcular un hash de esos datos. Yo usaré un hash muy conocido llamado MD5, y para calcular dicho hash usaré una página online que posea una herramienta de cálculo, por ejemplo esta: Online MD5.

Subo el archivo a dicha página, y me calcula el siguiente hash para dicho archivo: 9E00544CEE3B677CA2E826980D9CF02A. Es decir, me da una cadena de 16 bytes, que es su MD5, es como la huella característica de ese archivo en concreto. Cada archivo de datos binarios posee un hash que casi es único, digo casi porque en realidad conjuntos de datos muy distintos pueden poseer el mismo hash, y a eso se le llama colisión. Pero, es muy probable que para ese archivo de ese tamaño que he usado no existan muchas colisiones de su hash MD5. Existen miles de páginas en internet y aplicaciones que calculan todo tipo de hashes para cadenas de bytes, pero no encontrarás ninguna que haga la tarea inversa. Es decir, calcular una cadena de bytes desde su hash no es trivial. De hecho, existen infinitas cadenas que resultarían de un mismo hash. ¿Cómo podemos saber cual es nuestro archivo al expandir un hash en una determinada cadena de bytes?. Tenemos que saber por otros medios cual es el tamaño del archivo que queremos recuperar. Por ejemplo el archivo jpg de la Mona Lisa de arriba sabemos que posee 46.474 bytes, ni uno más ni uno menos. Por lo tanto, tenemos 371792 bits, es decir, tenemos un número binario de 371792 bits. Así pues para recuperar nuestra Mona Lisa desde su Hash 9E00544CEE3B677CA2E826980D9CF02A, sólo tenemos que ir variando los ceros y los unos de esa cadena de 371792 bits y a cada paso calcular un hash y ver si coincide con el del archivo. ¿Cuántas variaciones de ceros y unos posee una cadena de 371792 bits?. Pues, precisa y exactamente posee tantas variaciones como representa ese mismo número binario. Por ejemplo, el número binario 111, que son 3 bits, representa al número 8, que es 23, y posee exactamente 8 variaciones de ceros y unos, es decir, 000, 001, 010, 011, 100, 101, 110, 111. Por lo tanto, nuestra Mona Lisa posee exactamente 2371792 variaciones de ceros y unos. Un número muy superior al de partículas subatómicas en nuestro universo observable. Supongamos que tenemos un superordenador capaz de calcular un trillón de esas variaciones binarias por segundos y de decidir a cada paso si ha encontrado una solución (coincidencia de hash). Incluso a esa velocidad de cálculo, tendríamos que esperar miles de trillones de veces la edad de nuestro universo (13 mil millones de años) para ver completadas todas las variaciones binarias, y poder afirmar con seguridad que hemos recuperado nuestra Mona Lisa desde su hash. El número 2371792 posee 111.921 dígitos en el sistema decimal, y por muy rápido y potente que sea nuestro super ordenador, la tarea de expandir ese hash en la cadena original de bytes es una tarea imposible. Pero, si nuestro ordenador es un ordenador cuántico de más de 371792 qubits, ese cálculo se podría hacer en unos pocos minutos, con lo cual, posiblemente, mediante esa computación cuántica, obtendríamos una carpeta de colisiones, con unos pocos archivos de igual tamaño, y todos con el mismo hash. Uno de ellos sería nuestra Mona Lisa.

Anuncios

Posted in curiosidades y analogías, informática, Matemáticas, Mecánica Cuántica | Etiquetado: , , , , , , , , , , , , , , , , , | Leave a Comment »

Un intento de investigar la profundidad computacional de nuestro universo

Posted by Albert Zotkin en septiembre 16, 2015

fractal-univser

Hace ya algún tiempo hice una pequeña animación en flash, en la que mostraba cómo una pequeña simulación de interacción gravitatoria entre dos cuerpos es suficiente para convencernos de que existe pérdida de información, y eso se traduce en decaimiento orbital (acortamiento del periodo orbital, estrechamiento de la órbita): Aquí os dejo una pequeña captura del programa SWF en acción, que he subido a youtube:

Esa animación está gobernada por un sencillo programa informático (escrito en actionscript). En dicho programa uso la clásica ecuación de Newton de la gravitación universal para el cálculo de la aceleración. Las coordenadas espaciales de los dos cuerpos, calculadas fotograma a fotograma, deberían de dar trayectorias elípticas estables según las leyes de Kepler, pero se observa cómo poco a poco los cuerpos aproximan sus periastros hasta llegar a colisionar. Lo curioso de todo eso es que esa aproximación progresiva, que se puede traducir como pérdida de energía gravitacional, no está programada en el actionscript, sino que emerge por la imprecisión de los registros informáticos que almacenan los datos de la computación. Es decir, aunque las ecuaciones matemáticas que expresan la ley de gravitación son exactas y dan órbitas estables, su ejecución en un ordenador con registros finitos deja de ser exacta para pasar a mostrar degeneración orbital a lo largo del periodo de evolución del sistema gravitacional binario que simula.

Para los incrédulos, mostraré sucintamente las rutinas que escribí en el actionscript de la animación. En primer lugar presento la función que actualiza las coordenadas espaciales de cada uno de los dos cuerpos del sistema binario (podría ser un pulsar binario, como el PSR B1913+16, por ejemplo). Esta rutina es llamada siempre antes de que el programa dibuje cada fotograma:

function update2(m)
{

var cm_x;
var cm_y;
if(_root.r_frame==null){
cm_x=Stage.width/2;
cm_y=Stage.height/2;
}else{
cm_x=_root.r_frame._x;
cm_y=_root.r_frame._y;
}

var r = Math.sqrt(Math.pow((m._x-m.target_body._x),2)+Math.pow((m._y-m.target_body._y),2));
var accel = 30*m.mass*m.target_body.mass/Math.pow(r,2);
var cosx=(m._x-m.target_body._x)/r;
var cosy=(m._y-m.target_body._y)/r;
var accel_x = accel*cosx;
var accel_y = accel*cosy;
var s=1;
m.speed.x-=accel_x;
m.speed.y-=accel_y;
m._x+=m.speed.x-cm_x+Stage.width/2;
m._y+=m.speed.y-cm_y+Stage.height/2;

s=(m._y-m.target_body._y)<0?-1:1;
m._rotation=s*Math.acos(cosx)*180/Math.PI-90;

}

y seguidamente, presento las rutinas de lo que tiene que hacer cada cuerpo en cada frame, así como sus condiciones iniciales:

onClipEvent (load) {
speed = new Object;
speed.x=0;
speed.y=0.1;
mass=3.0;
density =1;
_width=20*Math.pow((3/(4*Math.PI))*mass/density,1/3);
_height=_width;
/*
_width=mass*4;
_height=mass*4;
*/
target_body=_root.a2;
//_visible=false;
body_type=1;//2 star, 1 planet
gotoAndStop(body_type);
this.rx=this._x;
this.ry=this._y;

}

onClipEvent (enterFrame) {
if(this, hittest(this.target_body))
_root.pause=true;

if(_root.pause or !_visible)return;
_root.update2(this);
}

Señoras y señores, en otras palabras. Lo que hasta ahora se viene llamando ondas gravitacionales es simplemente una falacia más. Dichas ondas no existen en nuestro universo. El decaimiento de las órbitas de los sistemas binarios, y por extensión, de cualquier sistema gravitatorio, es simple y llanamente debido a una pérdida de información cuántica en la computación que la naturaleza hace. Aunque nuestro universo podría ser infinito y eterno, el aumento de entropía en él sería un signo inequívoco de esa pérdida de información cuántica. Nuestro universo es un holograma, un autómata celular, no es la última realidad profunda. Pero, alguien podría preguntarse : “¿cómo es posible que si el universo es infinito y eterno pueda ser al mismo tiempo un holograma, un autómata celular?. Esos automatas celulares requerirían unos registros cuánticos infinitos”. Esa pregunta es muy razonable, pero un universo infinito y eterno no está en contradicción con que sea una simulación ejecutada desde registros cuánticos finitos. Sólo se requiere que la simulación del universo sea un holograma fractal. Veamos, este video de Musicians With Guns en el que nos presenta un fractal infinito, pero obviamente ejecutado desde un ordenador (cuyos registros, sabemos sin duda, que son de capacidad finita):

Un fractal, como el que nos ha presentado Musicians With Guns, no es más que una sencillita ecuación matemática acompañada de una lista de condiciones de inclusividad, y todo ello define lo que es el conjunto fractal (es decir, un conjunto de elementos que cumplen ciertas condiciones). Cuando dibujamos el fractal, los pixeles pertenecientes al fondo (elementos que no pertenecen al conjunto fractal) se pintan con un color y los pixeles que representan a elementos del conjunto se pintan de otro color que contraste con el primero, de modo que podamos destacar con facilidad el fractal del fondo.

Saludos

Posted in Astrofísica, Autómatas celulares, Cosmología, Gravedad Cuántica, informática, Inteligencia artificial, Matemáticas, Mecánica Cuántica, Relatividad | Etiquetado: , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , | Leave a Comment »

 
A %d blogueros les gusta esto: