Búsqueda de la solución correcta. Imagen tomada por Lynne Hand. |
Esta semana el tema que escogido es la computación cuántica. Este es un tema complicado, por lo que el objetivo de esta entrada es otorgar una visión intuitiva del proceso y las posibilidades que éste abre a la computación. Para ello es necesario introducir ciertas nociones acerca de los sistemas cuánticos. Como esto es Internet, reino de los gatos, el ejemplo con el que comenzamos es el experimento mental llevado a cabo por Erwin Schrödinger en 1935. Sí señores, vamos a hablar del gato de Schrödinger.
Como este experimento ha sido explicado hasta la saciedad en distintos blogs, intentaré ser breve. Imaginemos que se dispone de una caja, en la cual se ha depositado un gato. Además se ha incluido un emisor de partículas alfa con su correspondiente detector, un martillo y un frasco de veneno. El proceso es el siguiente: cuando se detecta una partícula, el detector libera el martillo que golpea el frasco de veneno, lo cual libera su contenido, matando al animal. No obstante, hay que tener en cuenta los siguientes puntos:
- El gato no puede interferir en la emisión de las partículas, ni impedir que si se detecta alguna, la botella se rompa.
- La caja se encuentra completamente aislada del mundo exterior. No es posible saber lo que está sucediendo o lo que ha sucedido sin abrirla.
- El emisor de partículas en cada instante de tiempo puede, con la misma probabilidad, tanto emitir una partícula como no hacerlo.
Por ahora se ha visto que un sistema cuántico tiene un estado interno el cual no está completamente determinado y un estado observado, el cual se aprecia tras efectuar la medida correspondiente. Olvidémonos un rato del gato y asumamos que tenemos dos estados abstractos, 0 y 1. Realmente no importa el nombre, la clave es que sean mutuamente excluyentes. El significado de cada uno de los valores se deja a la imaginación del lector, puede significar vivo o muerto, encendido o apagado, verdadero o falso, etc.
Mediante dos estados claramente diferenciados, es posible almacenar un bit de información. Este sistema constituye el pilar de la teoría de la información en la computación clásica, por ello los ordenadores convencionales manejan bits, que pueden tomar valores de 0 o 1. Por el contrario, en la computación cuántica disponemos de otra unidad de información, el qubit, que se corresponde con un sistema cuántico regido por la siguiente expresión:
Hay una enorme similaridad estructural con la expresión que determinaba el estado del gato, de hecho sólo cambia el nombre de los estados (vivo ha pasado a llamarse cero y muerto ha pasado a llamarse uno), además de que los pesos pueden tomar cualquier valor. De hecho, el sistema cuántico del gato de Schrödinger sólo necesita un qubit para ser representado. La potencia de la expresión anterior viene de que un qubit puede encontrarse en una superposición continua. Entendemos por superposición a que los valores que puede tomar son una combinación de las posibles situaciones. Esta combinación también viene determinada por los valores que toman alfa y beta, que determinan la probabilidad del resultado de la medición. Es decir, si alfa toma un valor de 0.9 y beta de 0.1, al realizar la medición del sistema, 9 de cada 10 veces el resultado será cero y 1 de cada 10, será 1.
El primer reto que debe superar la computación cuántica es cómo operar con sus unidades básicas de información. En la computación clásica, las operaciones elementales son aquellas que provienen de la lógica, por lo general, un 1 representa cierto y un 0 representa falso, por lo que puede calcularse la conjunción de dos bits (a Y b), la disyunción (a O b) y la negación (NO a). En principio, con esas tres operaciones puede construirse cualquiera más compleja. Por eso se dice que esas tres operaciones, y su implementación física, son universales.
Ahora bien, en el mundo cuántico un qubit puede contener información acerca de los dos estados simultáneamente, por lo que existen operaciones más complejas que aprovechen esta naturaleza. Por lo tanto, los algoritmos cuánticos deben aprovechar que un qubit puede estar tanto en el 0 como en el 1 para realizar cálculos en paralelo.
Este tipo de paralelismo se basa en que mientras, por así decirlo, no "miremos" el estado, la información puede estar repartida en varios sitios a la vez. Un algoritmo que maneje un qubit podrá manejar dos valores en paralelo, pero si es de dos qubits el número se duplica, pasando a ser cuatro. En general, se incrementa el número de qubits en una unidad, las posibilidades se ven duplicadas. Esto incrementa el grado de paralelismo hasta niveles inimaginables por los computadores tradicionales. Eso si, al igual que cuando abríamos la caja del gato la magia desaparecía y conocíamos la salud del gato, aquí sucede lo mismo, por lo que las operaciones a realizar deben realizarse sin realizar observaciones sobre el estado.