#67 Computación Cuántica (Quantum Computing)

Hola, soy @samuelgil, Partner en JME Ventures

Bienvenido a mi newsletter semanal, un lugar donde nos reunimos aquellos que creemos que la tecnología transforma juegos de suma cero en juegos de Suma Positiva.


Creo que no exagero cuando digo que la computación cuántica es una tecnología que puede revolucionar el mundo tal y como lo conocemos.

Gracias a su capacidad de realizar en pocos segundos los cálculos que llevarían a los ordenadores ‘clásicos’ más potentes millones de años, los ordenadores cuánticos pueden ser la herramienta que nos permita dar auténticos pasos de gigante en campos tan importantes como la física, la química, la biología, la medicina, la farmacia, la inteligencia artificial, las finanzas o la ciberseguridad, por mencionar algunos.

Y lo mejor de todo es que esta gran revolución es posible que se produzca en los próximos diez años.

Como ocurre frecuentemente con tecnologías complejas y verdaderamente revolucionarias—otros ejemplos como Bitcoin/blockchain e inteligencia artificial me vienen a la mente—los espejismos y el humo se mezclan con demasiada frecuencia con el rigor, creando importantes—y justificadas—dosis de confusión y desconfianza.

Por todo ello, en la edición de hoy trataremos de aclaran y entender un poco mejor las bases de la tecnología, su potencial, limitaciones, aplicaciones y estado del arte.

Buena semana,

Samuel

PD1: Si estás trabajando en este campo, me encantaría hablar contigo.

PD2: Mis agradecimientos a Enrique Lizaso y a Sergio Gago por compartir conmigo sus increíbles conocimientos sobre la materia y por haber revisado y comentado los primeros borradores de este artículo. Si queréis manteneros informados sobre el mundo de la computación cuántica, os recomiendo que os suscribáis a la newsletter de Sergio Quantum Pirates.


Esta edición de Suma Positiva ha sido patrocinada por:

¿Eres de los que no paran hasta que lo consiguen? Buscamos mentes inquietas, hambrientos e inconformistas dispuestos a dar lo mejor de sí mismos, siempre.

Porque para sobrevivir en el mundo startup tienes que ser sencillamente el mejor. Mejora tus skills analíticas y de management con los cursos Agile Management, Data Visualization, Design Thinking y Product Analytics.

Solo 6 semanas, online y compatible con el trabajo. 100% práctico con profesores top de Mango, Trivago, Jeff o Destinia.

Si los Reyes no te han traído formación, regálatela tú.

❤️ ¿Quieres patrocinar Suma Positiva? Toda la información aquí.


Computación Cuántica

Un ordenador cuántico es una máquina programable que aprovecha las propiedades de la mecánica cuántica para realizar algunas operaciones de cómputo de forma más eficiente que un ordenador clásico.

Hay mucha tela que cortar en la definición anterior. Vamos por partes.

La máquina

Un ordenador cuántico no se parece ni en su exterior ni en su interior a un ordenador clásico.

Su apariencia, en una de las múltiples implementaciones existentes, es más bien la versión futurista de una tarta nupcial invertida o de una lámpara de araña, como se muestra en la imagen a continuación.

Toda esa parafernalia es necesaria fundamentalmente para crear las especialísimas condiciones físicas (temperatura próxima al cero absoluto y máximo aislamiento ante cualquier tipo de radiación o interferencia) en las que podemos crear y explotar a nuestra conveniencia los estados cuánticos de ciertos elementos (electrones, átomos, fotones) en los que codificaremos y procesaremos la información.

Debido a estos requerimientos, no esperéis ver ordenadores cuánticos encima de vuestro escritorio ni en vuestro bolsillo, al menos a medio plazo. La forma de acceder a ellos será—de hecho ya es—con la ayuda de un ordenador clásico conectado a la nube.

Mecánica cuántica

A principios de siglo XX la física se mostró incapaz de describir lo que ocurría tanto a escala cósmica como a escala atómica. Como respuesta a ambos retos se desarrollaron las teorías de la relatividad y la mecánica cuántica, respectivamente, que complementaron a lo que a partir de entonces se comenzó a llamar física ‘clásica’.

Posteriormente se demostraría que la física clásica o newtoniana es compatible tanto con la teoría de la relatividad como con la mecánica cuántica, siendo una simplificación o caso particular de ambas teorías sólo válido en ciertas condiciones (que son, ni más ni menos, las condiciones en las que normalmente vivimos).

La mecánica cuántica es a día de hoy, más que una teoría puramente física, una teoría matemática que sirve para describir cómo funciona la Naturaleza a escala de las partículas fundamentales.

Una de las principales diferencias con respecto a la física clásica es que sus resultados son probabilísticos en lugar de deterministas. Esto quiere decir que, cuando queremos calcular el valor de una variable de nuestro interés (e.g. la posición de un electrón), en lugar de darnos un único resultado, las ecuaciones de la mecánica cuántica nos dan como resultado un conjunto de resultados ponderados por su probabilidad, en lo que se denomina una ‘función de onda’.

Para terminar de hacer que nos explote la cabeza, lo que la función de onda quiere decir no es que seamos incapaces de determinar por completo en qué estado está la variable, sino que realmente la variable en cuestión está, antes de que la midamos, en una superposición simultánea de todos los estados posibles. Más llamativo aún es que en el momento que la midamos u observemos, la variable recaerá—‘colapsará’—en uno de estos estados con la probabilidad especificada por la función de onda, estado en el que a partir de entonces permanecerá.

Efectivamente, cada vez que medimos, alteramos irreversiblemente el estado cuántico. La razón por la que esto ocurre es, de momento, desconocida y es uno de los principales retos a los que nos tendremos que enfrentar desde el punto de vista computacional (¿de qué sirve calcular algo cuyo resultado no podemos leer?).

La interpretación física de la mecánica cuántica no es nada intuitiva—no lo ha sido ni para algunas de las mentes más brillantes de la historia—, en parte debido a que los fenómenos cuánticos no son apreciables en el mundo macroscópico que nosotros percibimos. Algunos de los resultados que la teoría produce, aunque comprobadísimos experimentalmente, dan lugar a ciertas consideraciones filosóficas (“Dios no juega con el universo a los dados” dijo Einstein) sobre las cuales los científicos aún no se han puesto de acuerdo. Eso no impide que hayamos llegado a un nivel de conocimiento que nos permite emplearla con éxito no sólo con fines descriptivos, sino que también nos ha servido para crear artilugios que nos permiten manipular la Naturaleza a escala cuántica en nuestro beneficio. La mejor prueba de ello son precisamente los ordenadores cuánticos.

Complejidad y eficiencia computacional

“The theory of computation has traditionally been studied almost entirely in the abstract, as a topic in pure mathematics. This is to miss the point of it. Computers are physical objects, and computations are physical processes. What computers can or cannot compute is determined by the laws of physics alone, and not by pure mathematics.” — David Deutsch

“Nature isn’t classical, dammit, and if you want to make a simulation of nature, you’d better make it quantum mechanical, and by golly it’s a wonderful problem, because it doesn’t look so easy.” — Richard Feynman

Dado que la Naturaleza es cuántica y no clásica, mientras que un ordenador cuántico puede simular todo lo que un ordenador clásico puede hacer, la inversa no es siempre cierta.

Cuando, para un problema determinado, el rendimiento de un ordenador cuántico supere al de un ordenador clásico se dice que, para ese problema, habremos alcanzado la supremacía cuántica. No obstante, es importante recalcar que, para la mayoría de aplicaciones, la computación clásica será siendo más eficiente que la cuántica, al menos en el futuro previsible. Así, mientras que tu SaaS preferido seguirá siendo ejecutado por la CPU de un servidor en la nube, es posible que tenga sentido enviar ciertas cargas de trabajo a una QPU (Quantum Processing Unit), del mismo modo que ahora empleas una GPU para entrenar a una red neuronal.

En resumen: la computación cuántica ha venido para complementar más que para sustituir a la clásica. La supremacía cuántica será la excepción más que la regla.

Pero vaya excepción.

A pesar de que nos podría parecer que los ordenadores clásicos lo pueden o podrán todo con el tiempo—y no es de extrañar pues el progreso realizado en los últimos 60 años es verdaderamente asombroso—, la realidad es que existen un montón de problemas muy importantes que ni el mejor supercomputador del mundo con el mejor algoritmo conocido puede—ni previsiblemente va a poder—resolver en un tiempo de cómputo finito.

Hablamos de problemas tan relevantes como la creación de carteras de inversión óptimas, cálculo de rutas logísticas óptimas, ruptura de claves criptográficas o simulaciones físico-químicas a nivel molecular.

Estos problemas tienen en común que presentan lo que en teoría de computación se denomina complejidad de orden exponencial, lo que significa que los recursos que su resolución requiere (tiempo, capacidad de cómputo) crecen exponencialmente con el tamaño del problema. Como veremos, gracias a su gran eficiencia en el procesamiento paralelo de información, los ordenares cuánticos, dados el hardware y los algoritmos apropiados, son capaces de transformar problemas de complejidad exponencial en problemas de complejidad polinómica, lineal o logarítmica. Ese es su principal atractivo.

En otras palabras, los ordenadores cuánticos van a revolucionar, por mencionar tan solo algunos, campos tan importantes como las finanzas, la energía, el transporte, la inteligencia artificial, las comunicaciones o el desarrollo de medicamentos.

Impresionante, ¿no? Sólo hay un pequeño problema: que, para algunos de estos problemas, aún no tenemos el hardware con la potencia requerida ni todo el software necesario para ello. Peor aún. La realidad es que no tenemos la certeza—aunque sí cada vez más indicios—de que vayamos a ser capaces de construir el hardware necesario. Los retos de ingeniería a los que nos enfrentamos son monumentales…pero yo nunca apuesto contra el ingenio humano.

“Quantum Computing is the Physicists dream, the engineers nightmare and a huge opportunity for business.”

Computación Cuántica

Computar no significa otra cosa que introducir en un sistema unos datos que representan el problema a resolver, transformar esos datos mediante la ejecución de una secuencia de operaciones—a la que llamaremos algoritmo—y devolver de nuevo una serie de datos que representan la solución al problema.

Computación clásica

Bits

La unidad fundamental de computación en el mundo clásico es el bit (abreviatura de binary digit), un elemento que puede estar únicamente en dos estados a los que por conveniencia llamamos 0 y 1. A las matemáticas que utilizamos para su manipulación se las llama lógica binaria o álgebra de Boole.

A la hora de elegir elementos físicos para la implementación de un bit, buscamos optimizar tres parámetros:

  1. Que representen este comportamiento binario.

  2. Que ocupen el menor espacio posible, para poder empaquetar el máximo número de ellos en el menor espacio posible.

  3. Que los podamos manipular con la mayor velocidad y precisión posible en condiciones ambientales normales.

Actualmente empleamos para ello microchips—procesadores y memorias—con miles de millones de transistores y capacitores, componentes electrónicos microscópicos que representan los estados binarios mediante micro-corrientes o micro-cargas eléctricas o magnéticas.

Cualquier tipo de información con la que queramos trabajar—ya sea números, palabras, imágenes o sonidos—puede ser codificada y procesada en forma binaria por un ordenador. Esta es la base del mundo digital.

Por sorprendente que nos parezca al, por ejemplo, jugar a un videojuego, todo lo que el ordenador está haciendo realmente es modificar miles de millones de veces por segundo un estado compuesto por miles de millones de bits. La velocidad y precisión con la que lo hace es lo que provoca la magia a la que nos hemos malacostumbrado.

Todo esto es posible gracias al empaquetamiento de esta formidable complejidad en sucesivas capas de componentes físicos y lógicos que permiten al programador abstraerse de la gigantesca orquesta para la que está escribiendo una partitura cuando escribe código.

Puertas lógicas

En en nivel de abstracción más bajo, únicamente por encima de la física de semiconductores, nos encontramos las puertas lógicas, que no son más que un puñado de transistores ordenados convenientemente para desempeñar una función lógica. Estos dispositivos toman como entrada uno o dos bits y realizan las operaciones propias del álgebra de Boole como por ejemplo AND, OR, NOT o combinaciones de las anteriores.

Combinando estas puertas de forma astuta podemos realizar todo tipo de operaciones aritméticas. Conviene comenzar con la más sencilla de todas, la suma. Una vez que sabemos sumar, también sabremos por iteración multiplicar y dividir, lo que nos lleva a que también sabremos, de nuevo por iteración, calcular potencias y raíces.

Esto es una muestra de cómo a partir de elementos muy sencillos—transistores—vamos construyendo elementos más y más complejos que nos permiten ir abstrayéndonos de la complejidad subyacente hasta llegar a los lenguajes de alto nivel y pasando por códigos máquina, ensambladores, etc.

Computación cuántica

Cúbits

En el mundo cuántico, la unidad fundamental de computación es el cúbit o bit cuántico.

A diferencia del bit que sólo podía estar en los estados 0 y 1, el cúbit puede estar tanto en algunos de los estados básicos (a los que llamaremos |0> y |1> empleando la notación de Dirac, uno de los padres de la mecánica cuántica) como en una superposición de ambos, descrita matemáticamente como una combinación lineal de los estados básicos, como por ejemplo: a |0> + b |1>.

Eso sí, como advertíamos al hablar de mecánica cuántica, cuando observemos el estado de la máquina, sólo obtendremos uno de los estados básicos |0> ó |1>. Así, observaremos |0> con una probabilidad a^2 y |1> con una probabilidad b^2 ( lo cual, al tratarse de probabilidades, impone la restricción de que a^2 + b^2 = 1).

Los estados posibles de una máquina de dos bits son: 00, 01, 10 y 11. Conociendo el valor de cada uno de los dos bits podemos describir perfectamente el estado de la máquina, lo que equivale a decir que el estado de la máquina contiene 2 bits de información. Sin embargo, para describir estado de una máquina de dos cúbits (a|00> + b|01> + c|10> + d|10>) necesitamos conocer cuatro coeficientes (a, b, c y d) llamados amplitudes. Siguiendo con este razonamiento se puede generalizar fácilmente que, mientras que el estado de una máquina de n bits almacena n bits de información, el estado de una máquina de n cúbits almacena 2^n números complejos. Aquí radica la potencia para el procesamiento paralelo de las computadoras cuánticas. Para entender de qué estamos hablando—las cifras exponenciales escapan rápidamente a nuestra razón—, valga con que digamos que necesitaríamos todos los átomos del universo para representar el estado de una máquina de 300 cúbits.

Si bien para la implementación física de un bit se empleaba típicamente un transistor o un condensador, para la implementación física de un cúbit emplearemos las propiedades cuánticas de ciertas partículas elementales, como por ejemplo el espín de un electrón, cuyo comportamiento es análogo—y obviamente no es casualidad—al que empleábamos para la descripción del cúbit desde el punto de vista lógico.

A día de hoy, a pesar de todo el despliegue de medios del que hablábamos al inicio, no somos capaces de crear máquinas con muchos cúbits ni de mantener estados cuánticos estables por mucho tiempo. Estamos limitados tanto en la cantidad de información que podemos almacenar como en el número de operaciones que podemos realizar antes de que el sistema pierda la coherencia.

La enorme dificultad estriba en que tenemos que crear un sistema de cúbits totalmente aislado de cualquier perturbación externa—imaginad lo difícil que es evitar que algo perturbe el estado de un electrón—, pero, a su vez, tenemos que poder perturbarlo desde fuera a nuestra voluntad para manejarlo. Tal es la dificultad del asunto que muchos expertos calificaron al problema como imposible de resolver, lo que hizo que mucha gente perdiese el interés en el campo.

En uno de los avances más importantes del campo, a finales de los años noventa, surgió una nueva rama de la disciplina llamada corrección de errores cuántica, que permitía codificar y procesar de forma arbitrariamente fiable cualquier cantidad información, independientemente de la calidad de los cúbits, a costa de aumentar el número de cúbits necesarios—el overhead—para codificar la información con la redundancia necesaria.

Hasta ahora, hemos hablado de ordenadores cuánticos de propósito general, capaces de resolver cualquier tipo de problema. Merece la pena que hagamos un breve inciso para mencionar el otro gran tipo de ordenadores cuánticos existente: los quantum annealers. Estos ordenadores, a pesar de “sólo” servir para resolver dos tipos de problemas (optimización y muestreo probabilístico, que tiene aplicación en machine learning), apenas sufren del problema de pérdida de coherencia que mencionábamos. Esto se debe a que, en lugar de manipular sucesivamente el estado cuántico del sistema, su enfoque está basado en crear un estado cuántico inicial para dejar posteriormente que este evolucione naturalmente hasta su estado de energía mínima—lo que todo sistema físico hace naturalmente—el cual, si lo hemos programado bien, contendrá la solución al problema que buscábamos. Gracias a emplear este enfoque más sencillo—pero restringido—el número de cúbits útiles de un quantum annealer es hoy en día un par de órdenes de magnitud superior al de los ordenadores cuánticos de propósito general (aunque ambos tipos de cúbits no son del todo comparables) y es en este tipo de máquinas donde probablemente veremos las primeras aplicaciones reales de la computación cuántica.

Puertas cuánticas

Además de codificar cantidades ingentes de información en un puñado de cúbits, los ordenadores cuánticos nos permiten procesar dicha información con elementos análogos a las puertas lógicas: las puertas cuánticas.

De forma similar a como operan las puertas lógicas, las puertas cuánticas toman como input uno o dos cúbits y realizan sobre ellos determinadas operaciones matemáticas. Pero, en lugar de operaciones lógicas simples como AND o NOT, las puertas cuánticas son matrices unitarias invertibles que multiplican a los vectores unitarios que representan a los estados cuánticos. Efectivamente, hemos pasado de operar con números binarios y el álgebra de Boole a operar con vectores, matrices y todo el poder del álgebra lineal (esta es la palabrería matemática que nos dice de nuevo lo buenos que son los ordenadores cuánticos trabajando con muchos datos en paralelo).

A continuación mostramos algunas de las puertas cuánticas más importantes y las matrices que las representan:

Algoritmos cuánticos

Así, un algoritmo o circuito cuántico consistirá en ir combinando estas puertas con astucia, para poner los cúbits en estados de superposición o entrelazamiento, amplificar o atenuar amplitudes o realizar cualquier otra operación que queramos para resolver el problema que tenemos entre manos.

El algoritmo cuántico más famoso es el algoritmo de Shor, que permite la descomposición de un número en factores primos de manera computacionalmente eficiente.

El interés de este algoritmo proviene de que la criptografía de clave pública que utilizamos en internet para asegurar comunicaciones y transacciones—RSA—se basa precisamente en que ningún ordenador clásico es capaz de resolver este problema en tiempo finito para números grandes. A pesar de lo interesante que es en la teoría y la cantidad de titulares que suscita, no debemos preocuparnos demasiado por esto en la práctica. Por un lado, para romper la criptografía de internet, el algoritmo de Shor necesitaría ordenadores cuánticos con aproximadamente un millón de cúbits (el estado del arte actual es de unos 50). Por otro lado, gracias precisamente a este descubrimiento, se está desarollando la criptografía post-cuántica, que, una vez desplegada en las máquinas conectadas a internet, nos volverá de nuevo inmunes a este problema.

Otro de los algoritmos que no podemos dejar de mencionar es el de Grover, que nos sirve para buscar un dato en una base de datos no ordenada con un aumento en la eficiencia considerable (de raíz cuadrada) aunque no exponencial como en el caso de Shor.

Como acabamos de ver, un algoritmo cuántico puede existir perfectamente en el mundo abstracto de las matemáticas, esperando a que en algún momento se desarrolle (si lo hace) el hardware necesario para su aplicación a problemas reales.

En el mundo del desarrollo software cuántico no se han desarrollado aún grandes abstracciones sobre esta capa más básica, lo que fuerza al programador a cambiar por completo su forma de pensar sobre cómo resolver problemas. Aunque normalmente es una inconveniencia, esto está derivando en ocasiones en la invención de nuevos algoritmos que también se podrían ejecutar en ordenadores clásicos. A este tipo de algoritmos se les llama ‘quantum inspired’ por lo que es probable que veamos una polinización cruzada muy interesante entre ambas ramas de la computación en los próximos años.

Aprendizajes principales

Científicos e ingenieros de todo el mundo han construido dispositivos reales que utilizan las reglas de la mecánica cuántica para permitir un nuevo tipo de computación.

Las computadoras cuánticas siguen reglas diferentes a las de las computadoras clásicas, lo que les brinda el potencial de resolver algunos problemas—no todos, pero algunos de ellos extremadamente importantes—de manera significativamente más rápida.

Esta aceleración en la resolución de problemas es sorprendente porque las computadoras cuánticas operan a velocidades de reloj mucho más lentas que cualquier PC portátil. Sin embargo, son capaces de compensar esta lentitud con su capacidad de codificar una gran cantidad de información en bits cuánticos y utilizar propiedades especiales de éstos para procesar mucha más información en muchos menos pasos.

La computación cuántica está todavía en su infancia, similar a como estaban los ordenadores clásicos en los años 50. Los científicos piensan que en el futuro las computadoras cuánticas pueden cambiar el mundo, pero no es en absoluto una garantía, hay mucho retos importantes sin una solución evidente, aunque con grandísimas expectativas de progreso en los próximos años.

Es un campo en el que todo está aún por hacer y en el que las recompensas pueden ser astronómicas. Enorme riesgo, enorme rentabilidad…¿de qué me suena esto? 😉

Como decía al inicio, si estás trabajando en algo relacionado con la computación cuántica, me encantaría hablar contigo.


Gracias por leer Suma Positiva.

Si te ha gustado esta edición, no te olvides de dar al ❤️ y de compartirla por email o redes sociales con otras personas a las que les pueda gustar.

Si quieres patrocinar una próxima edición, aquí tienes toda la información.