¿Qué podría hacer un programador con una computadora cuántica?

Si tuvieras una computadora cuántica de propósito general con un par de miles de qubits, y nadie lo supiera, en combinación con los “piratas informáticos clásicos” inmediatamente te convertirás en la persona más poderosa de la Tierra : podrás descifrar toda comunicación que dependa del número la factorización es difícil, que es la mayor parte (porque, para una computadora cuántica, la factorización numérica no es difícil). El requisito de que nadie lo sepa es porque hay otros algoritmos de cifrado que dependen de otros problemas, que son seguros contra las computadoras cuánticas; si supieran que en realidad tienes una computadora cuántica funcional, escalable, simplemente cambiarían a estos otros algoritmos. Por supuesto, las cosas en la red de comunicación cuántica de China aún serían inaccesibles para usted, pero ese es solo un país entre ~ 200.

Si husmear no es para ti, hay muchas otras formas de hacerte útil: Quantum Algorithm Zoo. Podrá resolver algunos problemas de optimización bastante difíciles, apuesto a que muchas industrias lo amarán 🙂

Pero si solo está interesado en programar computadoras cuánticas, y no insiste en poder resolver problemas para tamaños de problemas útiles, puede comenzar ahora mismo: no necesita esperar hardware y gastar decenas de millones de dólares en él. ; solo usa un simulador. Por ejemplo, aquí está el algoritmo de Shor que factoriza el número 15, ejecutándose completamente en su navegador web, en su GPU: Quantum Computing Playground. QCP es el “JSFiddle” de Quantum Computing, pero también hay alternativas más sofisticadas como Quipper, que el usuario ya le recomendó; Quipper también puede manejar computadoras cuánticas reales (el simulador es solo uno de los posibles “backends”). La diferencia es que QCP es “ensamblador cuántico”, mientras que Quipper es un lenguaje de programación cuántica de alto nivel (piense en “Java cuántico”, o tal vez más como “ensamblador macro cuántico”, pero definitivamente un nivel más alto que QCP).

Hay mucho que hacer para el programador de sistemas en lo que respecta a la computación cuántica. Sí, ya existe una programación cuántica. La gente ha construido lenguajes que pueden usarse en el futuro para instruir a las computadoras cuánticas. Aparte de esto, una característica importante de la mayoría de estos lenguajes es generar el circuito cuántico dado un algoritmo en forma de programa. Algunos ejemplos incluyen Quipper (he usado esto), QCL y LIQui.

Dicho esto, los requisitos de un lenguaje de programación cuántico típico son significativamente diferentes en muchos aspectos de un lenguaje de programación clásico. Sin entrar en muchos detalles, mencionaría algunos de los parámetros más destacados:

  1. Concepto de qubit
  2. Tipos de operaciones permitidas
  3. Tipo de conjunto de puerta utilizado
  4. Medición

Estas son solo algunas cosas que hacen que las cosas sean complicadas e interesantes. Sin embargo, no muchos de estos idiomas se usan directamente. Lo mejor que sé es una computadora de 5 qubits desarrollada por 2–3 grupos en el mundo. Tuve la oportunidad de presenciar una de esas computadoras y estaban usando principalmente Igor para instruir a su computadora.

Si está buscando recursos para comenzar a aprender sobre la información cuántica y la computación cuántica, consulte: La respuesta de Aditya Jain a ¿Qué consejo le daría a un joven de 17 años que quiere convertirse en un científico informático cuántico?

Yo también estoy muy interesado en la computación cuántica. Planeo tomar clases de mecánica cuántica en la universidad. No sé mucho, pero esto es lo que puedo ofrecer.

Por lo que he reunido, hacer que las computadoras cuánticas sean “programables” en la forma en que las PC son programables es muy difícil. Debido a cosas extrañas como la “superposición” y el “enredo”, no podemos “programar” de manera confiable las computadoras cuánticas de la manera en que lo hacemos ahora (todo esto es una conjetura; en realidad no tenemos computadoras cuánticas, simplemente máquinas de recocido cuántico en el mejor de los casos) .

Considera esto:

En la programación regular de la computadora, programamos una computadora mediante declaraciones ejecutadas secuencialmente; incluso cuando se consideran hilos, los programas aún se ejecutan de esta manera. Pero, ¿cómo escribiríamos un programa cuántico? En la mecánica cuántica, tenemos propiedades extrañas de enredo y superposición. El último simplemente afirma que las partículas individuales pueden estar en dos estados a la vez. Esto significa que un bit podría ser 0, 1 o ambos al mismo tiempo. Solo cuando intentamos discernir cuál es el bit, se conoce su valor. Esto va en contra de todo lo que sabemos sobre programación. La única razón por la que los programas funcionan es porque esperamos que los bits mantengan su estado una vez que se les asigna uno. Esto en sí mismo es un obstáculo difícil de cruzar.

A continuación tenemos enredos. Esta es quizás la cosa más difícil de superar. El entrelazamiento esencialmente establece que cada bit que se usa está interconectado. Cuando un bit colapsa, es decir, cuando determinamos el estado de un bit, también se determina otro bit en algún lugar. Esto significa que, no solo tenemos que envolver nuestras cabezas alrededor de bits individuales que no mantienen su estado dado, sino que también tenemos que preocuparnos de que otros bits interconectados no mantengan su estado.

Si quisiéramos crear un lenguaje de programación cuántico, ese lenguaje tendría que tener en cuenta estas dos facetas importantes incluso para los programas más simples. Nada de lo que dije está considerando siquiera mantener los estados cuánticos generales de bits (ya que incluso la menor cantidad de cualquier perturbación hará que todo esto se desmorone; la luz, el calor y la electricidad adicionales se arruinarán con todo esto, por eso el las cosas que tenemos deben mantenerse en cero absoluto).

Entonces, ¿qué podría hacer esto? Bueno, a pesar de todos los problemas, por lo que he reunido (de nuevo, no es un experto, se requieren muchos granos de sal), parece que muchas personas piensan que este tipo de tecnología solo podría ser bueno para ciertos problemas. Por mi parte, creo en una computadora personal cuántica.

Creo que con esto podríamos simular nuestro universo desde la estrella más grande, hasta ti sentado frente a tu computadora, en tiempo real. Creo que esta es la puerta de entrada a algo que no podemos comenzar a imaginar.

Pero primero quitemos la parte difícil, ¿eh?

Espero que esto ayude 🙂

Si las computadoras cuánticas se vuelven escalables, lo más probable es que adopten la forma de chips o placas especiales que agregue a la placa base de una computadora clásica, o posiblemente a dispositivos externos. El uso consistiría en escribir un programa tradicional que, en algún momento, llame a la QCU como una biblioteca. Puede usarlo para factorizar un gran número, buscar un conjunto de datos grande o minimizar de manera probabilística alguna función complicada. Lo más probable es que no todos vayan a necesitar uno, al menos no uno con todas las funciones, ya que la mayoría de las cosas que hacemos y queremos usar para una computadora, las computadoras cuánticas no funcionan mejor que las clásicas.

Lo que pasa con los algoritmos cuánticos es que deben ser reversibles. Eso significa que no
“If”, sin “y” o “o” compuertas (“xor” y varias operaciones cuánticas están bien), no hay bucles que no tengan un número predeterminado de pasos. Es extremadamente útil para ciertas tareas, como descifrar códigos o simular otros sistemas cuánticos, pero es bastante inútil para cualquier cosa para la que desee una computadora convencional.

Si conoce uno o más de Python, C ++ o Matlab, ya tiene una ventaja en la programación de computadoras cuánticas.

La investigación de IBM ha puesto a disposición de los programadores una de sus computadoras cuánticas, y seguramente es compatible con Python. Microsoft también es compatible con Matlab y C ++.