viernes, 27 de abril de 2007

Computación e información cuánticas

Tras n días sin escribir (cuando n tiende a un número muy gordo) vuelvo con un plato fuerte: la computación e información cuánticas. Aún no tengo claro cómo iré estructurando los distintos posts a partir de este momento, espero que seais comprensivos. Por cierto, he vuelto a "relajarme" en la regla aquella que dije sobre la longitud de los posts. Leedlo en dos o tres sesiones, si os satura mucho :)

Cuando uno lleva tanto tiempo sumergido en un tema y tiene que explicarlo es muy difícil hacerlo de forma que el nivel de la explicación se adecué a los lectores. Quizá haya cosas que pueda dar por obvias y no lo sean tanto y otras en las que me exceda con la explicación. Me gustaría que en los comentarios me fuerais guiando (y que nadie se corte de decir "no me he enterado de nada" o "eso que dices es tan obvio que prefiero leer elmundo.es"...).

Se puede decir que el origen de la computación cuántica se encuentra a finales de los años 70 y principios de los 80. En ese momento la miniaturización de la tecnología estaba comenzando. Una de las personas que abrió camino en ese campo (desde el punto de vista teórico) fue Richard Feynman. En sus propuestas no solo planteaba la posibilidad de construir máquinas microscópicas, sino que también teorizaba sobre la miniaturización de los computadores y su límite mínimo, que lo llevaba a proponer la utilización de un átomo por bit.

Pero miniaturizar no es un proceso tan simple como parece, no basta con reducir las dimensiones. Hoy en día todos los circuitos de los ordenadores están compuestos de transistores. Éstos, simplificando, lo único que hacen es enviar flujos de electrones en un sentido o en otro activando así otros transistores. Podría pensarse que una posible reducción de estos transistores, y quizá la mayor, sería aquella en la que los flujos fueran de un solo electron, que se movería entre tres átomos. Esta práctica tendría asociados unos problemas adicionales tremendos. Por ejemplo, la incertidumbre cuántica nos impediría conocer con precisión el movimiento y la localización del electrón, que además podría dar saltos aleatorios entre todas sus localizaciones, haciendo inútil el transistor. Pero no hace falta ir tan lejos. Actualmente los circuitos de silicio tienen serias dificultades de funcionamiento cuando se reduce su tamaño (una de las causas es la electromigración). La conclusión de esto es que para miniaturizar no basta con reducir el tamaño: también hay que resolver nuevos problemas y, a partir de ciertos límites, buscar nuevos paradigmas de funcionamiento. Feynman, con una de sus famosas analogías, equipara esta evolución a la ocurrida en aeronáutica cuando se dieron cuenta de que no se podrían superar ciertas velocidades con la propulsión mediante hélices (Ácido Cínico seguramente tendrá mas que decir en este punto ;). Ese límite no fue superado hasta que se encontró un nuevo paradigma: el reactor, que permitía alcanzar velocidades que hasta entonces parecían imposibles.

En computación cuántica ocurrió algo parecido. Se buscaron nuevos paradigmas para poder miniaturizar hasta el átomo por bit. Esto supuso la mayor revolución que nos ofrece este campo ya que nos permite utilizar una partícula por bit, pero además nos ofrece la posibilidad de utilizar en nuestro beneficio las particularidades de la mecánica cuántica. Nos olvidamos de los transistores y en su lugar utilizamos el estado de partículas individuales para representar los bits (por ejemplo, podríamos utilizar el sentido del spin de un electrón).

(... Perdonadme por los párrafos que vienen a continuación, pero es que no soy capáz de simplificar mas...)

Mientras que en computación convencional tenemos como unidad mínima el bit, en la computación cuántica utilizaremos lo que se conoce como el qubit. En mecánica cuántica, el estado "n" de una partícula se representa mediante un ket . Entonces, aplicando esto al terreno de la computación, definiremos dos estados ortogonales, que serán los equivalentes del "1" y el "0", que estarán representados por y .

La primera ventaja que nos ofrece la computación cuántica es la posibilidad de poder utilizar el principio de superposición cuántica, mediante el cual una partícula puede tener a la vez dos estados distintos. Esto quiere decir que nuestro estado no tiene porqué ser o sino que puede ser algo como

Es decir, tenemos un bit, que es 1 con probabilidad a² y 0 con probabilidad b² (evidentemente, a²+b²=1). Esto (además de liar un poco las cosas) nos permite hacer operaciones con ambos estados a la vez(¡!).

Pero también hay otra propiedad de la mecánica cuántica clave: el entrelazamiento cuántico. Que dos partículas estén entrelazadas se puede entender como que el estado de una depende directamente del estado de la otra. Es decir, dos bits separados podrán tener estados y , por ejemplo, y si los entrelazamos el estado pasa a ser único (pero sigue implicando a las dos partículas) y lo llamamos .

Si combinamos el entrelazamiento con el principio de superposición, tenemos estados compuestos, como por ejemplo:

Este estado contempla tan solo dos posibilidades, que ambos bits valgan 1, con probabilidad a², o que ambos bits valgan 0, con probabilidad b².

Estas dos propiedades de la computación cuántica nos permiten inicializar un registro con todas las opciones posibles al principio y realizar operaciones sobre todas al mismo tiempo. Por ejemplo, inicializamos el registro de tres bits:

Entonces, realizando operaciones sobre el registro podremos modificar las probabilidades (a²,b²,c²..., h²) de forma que el resultado correcto tenga una mayor probabilidad de aparecer cuando al final realicemos una lectura.

Esto deja entrever el primer problema que nos encontramos en la computación cuántica: los resultados son probabilísticos. Podemos hacer que la probabilidad del resultado correcto aumente mucho, pero siempre existirán posibilidades de leer un resultado incorrecto. Además no podemos saber qué probabilidad tenía el estado que hemos leido por lo que no sabremos que no es el correcto. En la práctica esto hace que los circuitos de corrección de errores sean, a falta de un mejor adjetivo, monstruosos; para trabajar con los 64 bits de la computación convencional actual necesitaríamos del orden de las decenas de miles de qubits.

Aquí lo dejo por el momento. Ya hay bastantes conceptos en el post como para pensar un buen rato en ello. Próximamente escribiré sobre algunos algoritmos específicos de computación cuántica que la convierten en un salto cualitativo con respecto a la tradicional. Mas tarde comenzaré con la primera aplicación madura de este campo: la criptografía cuántica.

lunes, 9 de abril de 2007

Trenes magnéticos

Siguiendo con la racha de vídeos, que os prometo que acabará pronto (estoy preparando un primer post de computación cuántica, pero no es sencillo de resumir...), quiero que veais hoy un juguete que me pido para reyes. En el vídeo explican el funcionamiento, pero para quien no domine mucho el inglés le diré que es básicamente un superconductor que cuando se enfría a -181ºC adquiere sus propiedades. De esta forma se puede enfriar sobre un material magnético y quedarse "fijo". Os recomiendo ver el vídeo hasta el final...



Si a alguno de los físicos le apetece meterse en explicaciones mas complejas, por favor, estáis en vuestro blog.