La computación cuántica no es magia, es simplemente física, computación y matemáticas unidas para pensar en un nueva forma de hacer computaciones. Para implementarla, se aprovechan propiedades físicas conocidas, específicamente física cuántica, para construir una computadora con una arquitectura diferente a la que tiene la computadora digital que conocemos. Se programa diferente y permite trabajar cierto tipo de problemas que son difíciles de resolver con una computadora digital tradicional. Definitivamente es una nueva manera de utilizar la naturaleza, para hacer cálculos mediante algunos principios computacionales nuevos, y otros ya conocidos.
Este es un tema algo complicado, y no hay respuestas sencillas. La respuesta corta, es que la computadora cuántica, utiliza principios de física cuántica, para permitir ampliar las posibilidades de la computación.
Ahora la respuesta un poco más larga.
Cuando hablamos de información, describimos una forma de contar el número de formas distintas en que puede organizarse un sistema; a cada una de estas formas le llamamos un estado.
La computación cuántica permite pensar en la computación como algo más profundo, y está relacionado a cómo representamos cantidades con máquinas que utilizan energía para guardar y transformar información paso a paso. La computadora digital utiliza el código binario como base, y para ello interpreta los voltajes eléctricos como dos estados posibles. Sin embargo, si tenemos cualquier cosa que puede estar en dos estados, también en principio podría estar en una mezcla de esos dos estados, o estados intermedios. La computadora cuántica aprovecha las propiedades de la naturaleza a nivel atómico para representar mayor cantidad de información de forma más “compacta” por así decirlo.
Primero: El Bit
El Bit en una computadora es simplemente como un contenedor. En la computadora digital este contenedor puede tener electricidad de 4.5 a 5 voltios (voltaje alto), o puede tener un voltaje 0.1 voltios o menos (voltaje bajo). El voltaje alto representa un 1, y el bajo un 0. Un bit entonces puede estar en cualquier de dos estados, y siempre está en uno de ellos (con probabilidad de 100%),
Los transistores son los que ayudan a construir lo que se llaman compuertas lógicas, y de allí que la computadora digital utiliza lógica como base de la computación universal.
Computadora universal significa que es una computadora que se puede reprogramar para realizar cualquier tarea, que sea posible realizar en una computadora. Todo lo que vemos y utilizamos en una computadora, absolutamente todo, se maneja como secuencias de bits, de 0s y 1s. Es decir todo lo que conocemos en las computadoras, no es más que almacenamiento y manipulación lógica de 0 y 1s, físicamente son transistores y otros circuitos eléctricos que manejan voltajes altos y bajos.
Dicho de otro modo, una computadora digital, es simplemente una máquina que maneja electricidad, y cuyos estados se interpretan como dígitos binarios, que llamamos Bits. Las computadoras hoy trabajan con 64 Bits que les permite manejar suficientes instrucciones y números por unidad de tiempo, y por eso hoy en día prácticamente no nos quejamos de la capacidad de una computadora, incluso una de bajo costo.
Hay problemas que son difíciles de resolver con una computadora digital, y esta arquitectura electrónica se nos queda corta. Entre esos problemas están la de cálculos con número muy grandes, o de simulaciones muy complejas que requieren tantos cálculos que representan tiempos de cómputo que van más allá de lo práctico.
Segundo: El QuBit
Como vimos, un Bit simplemente es un estado de información, que puede ser 1 o 0. De forma similar, el QuBit es la unidad de información de una computadora cuántica. A diferencia de un Bit, que podríamos decir es un cable con electricidad, un QuBit es directamente un electrón, un fotón, o hasta el núcleo de un átomo que lo utilizamos para representar información, y es esto lo que hace interesante y poderosa a la computadora cuántica.
La manipulación de un electrón, que eso no lo voy a detallar, permite que éste represente más estados de los que un bit puede representar (que son sólo 2), y no sólo eso, un QuBit puede representar varios estados al mismo tiempo. Puede representar 1 y 0 como el Bit, pero también una combinación de ellos al mismo tiempo, como lo muestro en la siguiente figura,
Para entender esos múltiples estados, noten como en la figura escribimos estado = a (0) + b (1). Con esto lo que indicamos es que el estado de un Qubit tiene que ver con una combinación de la probabilidad de que esté en 0 (coeficiente a), o en 1 (coeficiente b). Es decir, un Qubit contiene bastante más información que un Bit. Mientras que el Bit sólo tiene un parámetro de información, el estar en 0 o en 1, un Qubit tiene dos parámetros de información a y b, que determinan su estado. Existe un tercer parámetro que no incluímos aquí por facilidad, llamado la fase del estado cuántico, que es la que permite hacer muchas más cosas que con una computadora normal.
Debido a esto, si tengo 2 QuBits, ocuparía 4 Bits para representar la misma información, con 10 Qubits serían 1024 Bits equivalentes, pero ya con 500 QuBits ocuparíamos más Bits que átomos en todo el universo conocido.
Es decir, con un número razonable de QuBits, podríamos hacer cómputos extremadamente grandes y complejos considerablemente más rápido que con una computadora tradicional digital equivalente.
Hoy en día la computadora con mayor número de QuBits es la de IBM que tiene 127
Programación de Computadoras Cuánticas
Aunque para programar computadoras cuánticas se utilizan lenguajes similares a Python, en la programación en realidad se aplican funciones que son de muy bajo nivel, dicho de otro modo, muy cercano a manipular Qubits directamente. Básicamente se programa la manipulación de QuBits para crear diferentes estados y así construir algoritmos útiles (cálculo de factores primos, encriptación, simulaciones químicas, entre otros). No es programación de software, como muchos conocen en la programación digital. El interés de programarla es hacia resolver problemas complejos donde usar una computadora cuántica es ventajoso, no el desarrollo de software en el sentido tradicional.
El uso de una computadora cuántica no es con un teclado y monitor en frente de un CPU cuántico, como en una computadora tradicional, más bien es con una computadora digital que controla el funcionamiento de una unidad de control cuántico, o algo así.
Imágen tomada de New Scientist
En resúmen, la programación de una computadora cuántica consiste en preparar una serie de instrucciones para crear circuitos cuánticos que pueden correr en una computadora cuántica. Esos circuitos cuánticos son los que permiten entonces calcular cosas como factorizar un número grande, que a una computadora digital le tomaría muchísimo tiempo hacer, y que es importante para muchos de los métodos de encripción que se utilizan.
Implicaciones de todo esto
Las computadoras cuánticas no son un reemplazo de la computadora digital. Las computadoras tradicionales seguirán siendo utilizadas en las cosas que comúnmente conocemos. La computadora cuántica lo que permitirá es resolver algunos problemas que toman mucho tiempo en resolver en una computadora tradicional. También permitirán crear simulaciones del universo mismo, que serían imposibles de hacer con otro tipo de computadora.
Para los físicos la computación cuántica tiene otra perspectiva, su interés es modelar la realidad física del universo con una computadora. Qué mejor que una computadora cuántica para modelar los fenómenos cuánticos mismos. Para nosotros los de computación y otras áreas, el interés es la posibilidad de resolver cierta clase de problemas que son muy complicados de resolver en una computadora tradicional, y pensar en otras formas de computación, aparte de ver el funcionamiento mismo del universo como un proceso computacional.
En un país como Costa Rica, difícilmente construiremos una computadora cuántica en el corto plazo, pero sí podemos involucrarnos en su funcionamiento y programación, para eso de hecho no ocupamos tener una, pues podemos pensar en algoritmos, probarlos a baja escala en alguna de las computadoras disponibles en la nube.
Para eso debemos irnos preparando para poder trabajar con ellas, pues como dicen: “preparemos para carreras de futuro”, y la computación cuántica hoy nos muestra lo que podremos hacer en el futuro, entonces preparemos a nuevas generaciones para esto de una vez… y con prepararnos me refiero a fortalecer física, computación y matemáticas en las carreras de ciencias y de computación.
Un agradecimiento muy especial al Dr. Santiago Núñez-Corrales, investigador del National Center for Supercomputing Applications, de la Universidad de Illinois, y miembro del consejo de investigación de la Universidad Cenfotec, por sus comentarios y aportes a este artículo. También al MSc. José Esteban Perez Hidalgo, físico y experto en sistemas complejos, Profesor Escuela de Física del TEC, por sus comentarios al manuscrito.
Director de la Escuela de Sistemas InteligentesTomás de Camino Beck
Universidad CENFOTEC