23 de septiembre de 2009

Computación Cuántica, Teoría de Tipos y Lógicas Cuánticas

Más de uno me ha preguntado por el significado del subtítulo del blog: "Computación Cuántica, Teoría de Tipos y Lógicas Cuánticas", así que trataré de resumirlo aquí en un lenguaje lo más entendible posible (y cualquier cosa que no quede clara, pregunten en los comentarios (o corríjanme si encuentran algún error))

Este es mi tema de investigación del doctorado. Existen muchas lógicas matemáticas diferentes, como por ejemplo (y estas son sólo algunas): Lógica proposicional, Lógica de primer orden, Lógica de segundo_orden, Lógica difusa, Lógica relevante, Lógica no monotónica, Lógica intuicionista, Lógica modal, Lógica temporal y hasta incluso existe una llamada Lógica cuántica.

Por otro lado, existe una teoría llamada Teoría de Tipos, que, en su forma más básica, permite caracterizar un algoritmo sin necesidad de ejecutarlo. O sea, tenemos un algoritmo y podemos definir qué "tipo" tiene ese algoritmo, lo cual nos da alguna información relevante que queremos saber sobre el resultado al finalizar la ejecución de dicho algoritmo.

La idea es que uno tiene ciertas reglas que dicen cómo decidir si un algoritmo tiene cierto tipo. Veamos un ejemplo sencillo de regla: siempre que tengamos un algoritmo, vamos a llamarlo A1, de "tipo" booleano (cuando tiene tipo booleano lo que estamos diciendo es que su resultado puede ser uno de dos valores: "verdadero" o "falso" y no por ejemplo un número) y otro algoritmo, A2, también booleano, entonces el algoritmo "A1 and A2" tendrá también tipo booleano. Esto se escribe en símbolos así:
A1:Bool     A2:Bool
--------------------
A1 and A2: Bool

Vamos con un ejemplo un poco más complicado:
F: Bool => Numero   A: Bool
-------------------------------
F(A): Numero

Esto dice que si tengo una función que toma un booleano y devuelve un número, entonces la función aplicada a un booleano, será de tipo número.

Y qué tiene que ver esto con lógica?

Bien, la idea es que cada conjunto de reglas define una lógica. Esto fue descubierto por el matemático Haskell Curry y el lógico William Howard y se lo llama la correspondencia de Curry-Howard. Cómo funciona? Pongamos por ejemplo la segunda regla escrita arriba:
F: Bool => Numero   A: Bool
-------------------------------
F(A): Numero

 Si nos olvidamos de los "algoritmos" y nos quedamos sólo con los tipos, la regla quedaría así:
Bool => Numero   Bool
----------------------
Numero


La cual no es más que la regla lógica de implicación: Si Bool implica Número y tengo Bool, entonces tengo Número.

Diferentes reglas de tipado nos darán diferentes lógicas. La correspondencia nos asegura que por cada "fórmula bien formada" en nuestra lógica, tendremos un "algoritmo" capaz de producir una salida con ese tipo.

Y qué tiene que ver esto con computación cuántica?

Como mencioné antes, existe una lógica cuántica, pero esa lógica fue inventada mucho antes de la computación cuántica; fue desarrollada en base a la mecánica cuántica, de manera ad-hoc, tratando de capturar su comportamiento. Luego, con el advenimiento de la computación cuántica, se ha tratado intensamente de hacer una correspondencia entre los algoritmos cuánticos y la lógica cuántica, para lo cual se ha ido modificando la lógica a medida que avanzan las investigaciones de manera de adecuarla a los algoritmos.

Mi trabajo de investigación es empezar por el otro lado desde cero: ya hay lenguajes cuánticos definidos1, por lo tanto, si puedo definir un sistema de tipos para él, tendré una lógica cuántica definida directamente desde los lenguajes cuánticos (y con ello se podría analizar diferentes algoritmos a partir de su lógica).

Espero se haya entendido la explicación, y sino, sientanse libres de preguntar en los comentarios del blog.

----------------------------------------------
1 En particular hay lo que se llama un lambda cálculo, que es una especie de lenguaje muy básico que permite expresar cualquier algoritmo. En realidad, hay varios, yo en particular uso el Linear-Algebraic Lambda-Calculus de Pablo Arrighi y Gilles Dowek.

28 de agosto de 2009

Reporte desde la escuela: audios

Los audios (y en algunos casos los slides) de la Canadian Quantum Information Summer School 2009 han sido subidos a www.fields.utoronto.ca/audio (además allí se pueden bajar audios de distintos eventos que se han realizado en el Fields Institut, muchos de ellos sobre computación cuántica). Ya actualicé mis posts del Reporte desde la Escuela agregando los links al lado de cada comentario de cada charla.

21 de agosto de 2009

Reporte desde la escuela: 5to día

Quinto y último día de escuela, y aquí va el reporte de hoy:

Por la mañana tuvimos otra clase de Jonathan Baugh (audio de la clase aquí), esta vez hizo un resúmen sobre varias de las implementaciones experimentales más populares de la computación cuántica (aparte del MNR que explicó en detalle ayer):

El esquema básico se puede leer desde este paper: Quantum Computations with Cold Trapped Ions (disponible gratis aquí). Y sobre cómo se realizan mediciones en este esquema está detallado en este otro paper: High-fidelity readout of trapped-ion qubits.
Mostró además los experimentos que se han realizado en varios laboratorios y cuáles son los problemas actuales, ahora que están enfrentando el desafío de meter muchas trampas de iones en chips de silicio.

El esquema básico está detallado en este paper: Superconducting qubits. Y los artículos más recientes e influyentes (de esos que llegan a la revista Nature) son:
La propuesta original está en Quantum Computation with Quantum Dots. Y algunos de los artículos más recientes e influyentes (en Nature, Science y Nature Physics) son:
Además dejó un link donde se pueden encontrar varios tutoriales sobre información cuántica en general y sobre implementaciones en particular: www.iqc.ca/publications/tutorials.php.

Luego fue el turno de Norbert Lütkenhaus (audio aquí), quien habló durante dos horas sobre Quantum Key Distribution. En particular explicó el BB84, con mucho detalle, más de lo que yo conocía. Por ejemplo, explicó el tema de que hay dos ataques que el BB84 no soporta: DoS y Man-in-the-middle. DoS (Denegación de Servicio) es claro que no lo puede soportar desde el punto de vista teórico, porque desde el protocolo, no hay forma de evitar que alguien nos "corte la línea" por ejemplo. Ahora, el man-in-the-middle si tiene una posible solución: El man-in-the-middle funciona de esta manera, supongamos que Alice se quiere contactar con Bob para transmitir la clave. El BB84 es muy seguro, pero resulta que Eve se pone en el medio y Eve se contacta con Alice haciéndole creer que es Bob y con Bob haciéndole creer que es Alice. Entonces, la generación de la clave privada no será secreta, ya que Eve podrá tener una clave k1 con Alice y otra k2 con Bob y lo único que debe hacer es, al recibir un mensaje de Alice, desencriptarlo con la clave k1 y encriptarlo con la clave k2 para reenviárselo a Bob.
Lo que se necesita para evitar este ataque es alguna manera de chequear que Alice y Bob tienen la misma clave. Para hacer esto, simplemente al finalizar de generar la clave, usan algo como RSA o algún método clásico de criptografía para enviarse parte de las claves generadas, una parte que luego descartarán (i.e. previamente tienen que tener las claves públicas de RSA de la otra persona) y todo funciona. Un momento... ¿no es que el RSA no es seguro ya que basa su seguridad en la potencia de las computadoras para factorizar números?, bueno sí, pero para romper el RSA al menos se deberían necesitar unos minutos (bueno, se calcula que se necesitarían años, pero supongamos que Eve cuenta con una computadora muy potente), y ese delay delataría a Eve! O sea: si lo envía como viene y estaba en el medio, Alice y Bob notarán que k1 y k2 son distintas. Si lo envía luego de romper la clave RSA para codificarlo de nuevo, Alice y Bob notarán el delay. Si sólo estaba escuchando y no interviniendo, no importa que rompa la clave RSA, ya que con esa clave sólo se encriptó un pedazo de la clave del BB84 que se descartará.
Lo que siguió fue una explicación del Entanglement based QKD y QKD sobre canales con ruido, de lo que se puede leer un poco más en este paper: Shor and Preskill's and Mayers's security proof for the BB84 quantum key distribution protocol (no lo encontré con acceso libre, así que lo subo a megaupload).
La última hora la dedicó a las implementaciones ópticas del QKD, y dejó este paper: Unconditionally secure one-way quantum key distribution using decoy pulses (también en arXiv:quant-ph/0610015)

El último curso, de dos horas, estuvo a cargo de Daniel Lidar (audio y slides aquí (primera parte) y aquí (segunda parte)). Hablo sobre un método para prevenir y corregir los errores en los experimentos cuánticos llamado Hybrid quantum error prevention, reduction and correction. Los slides aún no están disponibles, pero en su página están los slides de este mismo curso dictado hace unos años. La verdad que de este curso entendí poco y nada porque dio demasiados detalles de la implementación física que no manejo.

Bueno, para finalizar, les cuento que todos los slides y las grabaciones de audio de las charlas van a ser (han sido) puestas en www.fields.utoronto.ca/audio (allí además se pueden encontrar grabaciones y slides de otras charlas dictadas en el Fields Institut). En cuanto estén disponibles, actualizo mis posts para agregar los links a cada una de las charlas. (hecho)

Por último, me queda agradecer por el financiamiento al Fields Institut, a mi grupo de investigación por medio del proyecto QICS y a la escuela doctoral de la Université de Grenoble.