Programación cuántica

format_list_bulleted Contenido keyboard_arrow_down
ImprimirCitar
Programación informática para computadoras cuánticas

La programación cuántica es el proceso de diseñar o ensamblar secuencias de instrucciones, llamadas circuitos cuánticos, utilizando puertas, interruptores y operadores para manipular un sistema cuántico para obtener el resultado deseado o los resultados de un experimento determinado. Los algoritmos de circuitos cuánticos se pueden implementar en circuitos integrados, realizarse con instrumentación o escribirse en un lenguaje de programación para su uso con una computadora cuántica o un procesador cuántico.

Con los sistemas basados en procesadores cuánticos, los lenguajes de programación cuánticos ayudan a expresar algoritmos cuánticos utilizando construcciones de alto nivel. Este campo está profundamente arraigado en la filosofía de código abierto y, como resultado, la mayor parte del software cuántico analizado en este artículo está disponible gratuitamente como software de código abierto.

Las computadoras cuánticas, como las basadas en el protocolo KLM, un modelo de computación cuántica óptica lineal (LOQC), utilizan algoritmos (circuitos) cuánticos implementados con electrónica, circuitos integrados, instrumentación, sensores y/o mediante otros medios físicos.

Otros circuitos diseñados para la experimentación relacionada con sistemas cuánticos pueden estar basados en instrumentación y sensores.

Conjuntos de instrucciones cuánticas

Los conjuntos de instrucciones cuánticas se utilizan para convertir algoritmos de nivel superior en instrucciones físicas que se pueden ejecutar en procesadores cuánticos. A veces, estas instrucciones son específicas de una plataforma de hardware determinada, p. trampas de iones o qubits superconductores.

CQASM

cQASM, también conocido como QASM común, es un lenguaje ensamblador cuántico independiente del hardware que garantiza la interoperabilidad entre todas las herramientas de simulación y compilación cuántica. Fue presentado por el QCA Lab de TUDelft.

Pluma

Quil es una arquitectura de conjunto de instrucciones para la computación cuántica que introdujo por primera vez un modelo de memoria cuántica/clásica compartida. Fue presentado por Robert Smith, Michael Curtis y William Zeng en Una arquitectura práctica de conjuntos de instrucciones cuánticas. Muchos algoritmos cuánticos (incluidos los algoritmos de teletransportación cuántica, corrección de errores cuánticos, simulación y optimización) requieren una arquitectura de memoria compartida.

OpenQASM

OpenQASM es la representación intermedia introducida por IBM para su uso con Qiskit e IBM Q Experience.

Mirlo

Blackbird es un conjunto de instrucciones cuánticas y una representación intermedia utilizada por Xanadu Quantum Technologies y Strawberry Fields. Está diseñado para representar programas cuánticos de variable continua que pueden ejecutarse en hardware cuántico fotónico.

Kits de desarrollo de software cuántico

Los kits de desarrollo de software cuántico proporcionan colecciones de herramientas para crear y manipular programas cuánticos. También proporcionan los medios para simular los programas cuánticos o prepararlos para ejecutarlos utilizando dispositivos cuánticos basados en la nube y dispositivos cuánticos autohospedados.

SDK con acceso a procesadores cuánticos

Los siguientes kits de desarrollo de software se pueden utilizar para ejecutar circuitos cuánticos en prototipos de dispositivos cuánticos, así como en simuladores.

Percepción

Un proyecto de código abierto creado por Quandela [fr] para diseñar circuitos cuánticos fotónicos y desarrollar Algoritmos cuánticos, basados en Python. Las simulaciones se ejecutan en la propia computadora del usuario o en la nube. Perceval también se utiliza para conectarse al procesador cuántico fotónico basado en la nube de Quandela.

Océano

Un conjunto de herramientas de código abierto desarrollado por D-Wave. Escrito principalmente en el lenguaje de programación Python, permite a los usuarios formular problemas en los formatos Ising Model y Quadratic Unconstrained Binary Optimization (QUBO). Los resultados se pueden obtener enviándolos a una computadora cuántica en línea en Leap, el entorno de aplicaciones cuánticas en tiempo real de D-Wave, máquinas propiedad del cliente o muestreadores clásicos.

Un código de muestra usando proyectoq con Python

ProyectoQ

Un proyecto de código abierto desarrollado en el Instituto de Física Teórica de ETH, que utiliza el lenguaje de programación Python para crear y manipular circuitos cuánticos. Los resultados se obtienen mediante un simulador o enviando trabajos a dispositivos cuánticos de IBM.

Qrisp

Qrisp es un proyecto Open Source coordinado por la Fundación Eclipse y desarrollado en programación Python por Fraunhofer FOKUS Qrisp es un lenguaje de programación de alto nivel para crear y compilar algoritmos cuánticos. Su modelo de programación estructurado permite un desarrollo y mantenimiento escalables. La sintaxis expresiva se basa en variables en lugar de qubits, con QuantumVariable como clase principal y funciones en lugar de puertas. Herramientas adicionales, como un simulador de alto rendimiento y un cálculo automático, complementan el amplio marco. Además, es independiente de la plataforma, ya que ofrece una compilación alternativa de funciones elementales hasta el nivel del circuito, basada en conjuntos de puertas específicos del dispositivo.

Qiskit

Un proyecto de código abierto desarrollado por IBM. Los circuitos cuánticos se crean y manipulan utilizando Python. Los resultados se obtienen utilizando simuladores que se ejecutan en el propio dispositivo del usuario, simuladores proporcionados por IBM o prototipos de dispositivos cuánticos proporcionados por IBM. Además de la capacidad de crear programas utilizando operaciones cuánticas básicas, se encuentran disponibles herramientas de nivel superior para algoritmos y evaluaciones comparativas dentro de paquetes especializados. Qiskit se basa en el estándar OpenQASM para representar circuitos cuánticos. También admite el control del nivel de pulso de sistemas cuánticos a través del estándar QiskitPulse.

Qibo

Una API completa de código abierto para simulación cuántica, control y calibración de hardware cuántico desarrollada por múltiples laboratorios de investigación, incluidos QRC, CQT e INFN. Qibo es un marco modular que incluye múltiples backends para simulación cuántica y control de hardware. Este proyecto tiene como objetivo proporcionar un marco de control de hardware cuántico independiente de la plataforma con controladores para múltiples instrumentos y herramientas para la calibración, caracterización y validación cuántica. Este marco se centra en dispositivos cuánticos autohospedados al simplificar el desarrollo de software requerido en los laboratorios.

Bosque

Un proyecto de código abierto desarrollado por Rigetti, que utiliza el lenguaje de programación Python para crear y manipular circuitos cuánticos. Los resultados se obtienen utilizando simuladores o prototipos de dispositivos cuánticos proporcionados por Rigetti. Además de la capacidad de crear programas utilizando operaciones cuánticas básicas, el paquete Grove dispone de algoritmos de nivel superior. Forest se basa en el conjunto de instrucciones de Quil.

T|ket>

Un entorno de programación cuántica y un compilador de optimización desarrollado por Cambridge Quantum Computing dirigido a simuladores y varios back-ends de hardware cuántico, lanzado en diciembre de 2018.

Campos de fresas

Una biblioteca Python de código abierto desarrollada por Xanadu Quantum Technologies para diseñar, simular y optimizar circuitos ópticos cuánticos de variable continua (CV). Se proporcionan tres simuladores: uno basado en Fock, otro que utiliza la formulación gaussiana de la óptica cuántica y otro que utiliza la biblioteca de aprendizaje automático TensorFlow. Strawberry Fields es también la biblioteca para ejecutar programas en el hardware fotónico cuántico de Xanadu.

PennyLane

Una biblioteca Python de código abierto desarrollada por Xanadu Quantum Technologies para la programación diferenciable de computadoras cuánticas. PennyLane ofrece a los usuarios la posibilidad de crear modelos utilizando TensorFlow, NumPy o PyTorch, y conectarlos con backends de computadoras cuánticas disponibles en IBMQ, Google Quantum, Rigetti, Quantinuum y Alpine Quantum Technologies.

Kit de desarrollo cuántico

Un proyecto desarrollado por Microsoft como parte de .NET Framework. Los programas cuánticos se pueden escribir y ejecutar en Visual Studio y VSCode utilizando el lenguaje de programación cuántica Q#. Los programas desarrollados en QDK se pueden ejecutar en Azure Quantum de Microsoft y en computadoras cuánticas de Quantinuum, IonQ y Pasqal.

Círculo

Un proyecto de código abierto desarrollado por Google, que utiliza el lenguaje de programación Python para crear y manipular circuitos cuánticos. Los programas escritos en Cirq se pueden ejecutar en IonQ, Pasqal, Rigetti y Alpine Quantum Technologies.

Lenguajes de programación cuántica

Hay dos grupos principales de lenguajes de programación cuántica: lenguajes de programación cuántica imperativos y lenguajes de programación cuántica funcionales.

Idiomas imperativos

Los representantes más destacados de los lenguajes imperativos son QCL, LanQ y Q|SI>.

Ket

Ket es un lenguaje integrado de código abierto diseñado para facilitar la programación cuántica, aprovechando la sintaxis familiar y la simplicidad de Python. Sirve como un componente integral de la plataforma de programación Ket Quantum, integrándose perfectamente con una biblioteca de tiempo de ejecución de Rust y un simulador cuántico. Mantenido por Quantuloop, el proyecto enfatiza la accesibilidad y la versatilidad para investigadores y desarrolladores. El siguiente ejemplo demuestra la implementación de un estado Bell usando Ket:

desde Ket importación *a, b = quant()2) # Asignar dos bits cuánticosH()a) # Poner qubit `a` en una superposicióncnot()a, b) # Entangle the two qubits in the Bell statem_a = Medida()a) # Measure qubit `a`, collapsing qubit `b` as wellm_b = Medida()b) # Cubito de medición `# Afirme que la medición de ambos codos siempre será igualafirmación m_a.valor == m_b.valor

CCL

El lenguaje de computación cuántica (QCL) es uno de los primeros lenguajes de programación cuántica implementados. La característica más importante de QCL es la compatibilidad con operadores y funciones definidos por el usuario. Su sintaxis se asemeja a la sintaxis del lenguaje de programación C y sus tipos de datos clásicos son similares a los tipos de datos primitivos en C. Se puede combinar código clásico y código cuántico en el mismo programa.

Pseudocódigo cuántico

El pseudocódigo cuántico propuesto por E. Knill es el primer lenguaje formalizado para la descripción de algoritmos cuánticos. Se introdujo y, además, se relacionó estrechamente con un modelo de máquina cuántica llamada Máquina Cuántica de Acceso Aleatorio (QRAM).

P#

Un lenguaje desarrollado por Microsoft para ser utilizado con el kit de desarrollo Quantum.

Q|SI>

Q|SI> es una plataforma integrada en el lenguaje .Net que admite la programación cuántica en una extensión cuántica del lenguaje while. Esta plataforma incluye un compilador del lenguaje while cuántico y una cadena de herramientas para la simulación de computación cuántica, optimización de circuitos cuánticos, análisis de terminación de programas cuánticos y verificación de programas cuánticos.

Lenguaje Q

Q Language es el segundo lenguaje de programación cuántica imperativo implementado. Q Language se implementó como una extensión del lenguaje de programación C++. Proporciona clases para operaciones cuánticas básicas como QHadamard, QFourier, QNot y QSwap, que se derivan de la clase base Qop. Se pueden definir nuevos operadores utilizando el mecanismo de clase C++.

La memoria cuántica está representada por la clase Qreg.

Qreg x1; // 1-cubit quantum registro con valor inicial 0Qreg x2()2,0); // Registro de cuántico de 2 codos con valor inicial 0

El proceso de cálculo se ejecuta utilizando un simulador proporcionado. Se pueden simular entornos ruidosos utilizando los parámetros del simulador.

QGCL

El lenguaje de comando protegido cuántico (qGCL) fue definido por P. Zuliani en su tesis doctoral. Se basa en el lenguaje de comandos protegido creado por Edsger Dijkstra.

Puede describirse como un lenguaje de especificación de programas cuánticos.

QMASM

Quantum Macro Assembler (QMASM) es un lenguaje de bajo nivel específico para recocidos cuánticos como el D-Wave.

Andamio

Scaffold es un lenguaje similar a C, que se compila en QASM y OpenQASM. Está construido sobre la infraestructura del compilador LLVM para realizar optimizaciones en el código Scaffold antes de generar un conjunto de instrucciones específico.

Silq

Silq es un lenguaje de programación de alto nivel para computación cuántica con un fuerte sistema de tipo estático, desarrollado en ETH Zürich.

LQP

La Lógica de Programas Cuánticos (LQP) es una lógica cuántica dinámica, capaz de expresar características importantes de mediciones cuánticas y evoluciones unitarias de estados multipartitos, y proporciona caracterizaciones lógicas de diversas formas de entrelazamiento. La lógica se ha utilizado para especificar y verificar la exactitud de varios protocolos en computación cuántica.

Lenguajes funcionales

Se están realizando esfuerzos para desarrollar lenguajes de programación funcionales para la computación cuántica. Los lenguajes de programación funcionales son muy adecuados para razonar sobre programas. Los ejemplos incluyen QPL de Selinger y el lenguaje QML similar a Haskell de Altenkirch y Grattage. Van Tonder, Selinger y Valiron y Arrighi y Dowek han propuesto lenguajes de programación cuántica de orden superior, basados en el cálculo lambda.

QFC y QPL

QFC y QPL son dos lenguajes de programación cuántica estrechamente relacionados definidos por Peter Selinger. Sólo difieren en su sintaxis: QFC usa una sintaxis de diagrama de flujo, mientras que QPL usa una sintaxis textual. Estos lenguajes tienen un flujo de control clásico pero pueden operar con datos cuánticos o clásicos. Selinger ofrece una semántica denotacional para estos lenguajes en una categoría de superoperadores.

QML

QML es un lenguaje de programación cuántica similar a Haskell por Altenkirch y Grattage. A diferencia de la QPL de Selinger, este lenguaje toma duplicación, en lugar de descartar, de información cuántica como una operación primitiva. La duplicación en este contexto se entiende que es la operación que mapa Silencioφ φ . . {displaystyle TENSIphi rangle } a Silencioφ φ . . ⊗ ⊗ Silencioφ φ . . {displaystyle tenciónphi rangle otimes tenciónphi rangle }, y no debe confundirse con el funcionamiento imposible de la clonación; los autores afirman que es similar a cómo el compartir se modela en idiomas clásicos. QML también introduce a los operadores de control clásico y cuántico, mientras que la mayoría de los otros idiomas dependen del control clásico.

Se proporciona una semántica operativa para QML en términos de circuitos cuánticos, mientras que una semántica denotacional se presenta en términos de superoperadores, y se demuestra que estos concuerdan. Tanto la semántica operativa como la denotacional se han implementado (clásicamente) en Haskell.

LÍQUIDO|>

LÍQUIDO|> (pronunciado líquido) es una extensión de simulación cuántica en el lenguaje de programación F#. Actualmente está siendo desarrollado por el Grupo de Computación y Arquitecturas Cuánticas (QuArC) como parte de los esfuerzos de StationQ en Microsoft Research. LÍQUIDO|> busca permitir a los teóricos experimentar con el diseño de algoritmos cuánticos antes de que las computadoras cuánticas físicas estén disponibles para su uso.

Incluye un lenguaje de programación, algoritmos de optimización y programación y simuladores cuánticos. LÍQUIDO|> se puede utilizar para traducir un algoritmo cuántico escrito en forma de programa de alto nivel en instrucciones de máquina de bajo nivel para un dispositivo cuántico.

Cálculos lambda cuánticos

Los cálculos lambda cuánticos son extensiones del cálculo lambda clásico introducido por Alonzo Church y Stephen Cole Kleene en la década de 1930. El propósito de los cálculos lambda cuánticos es ampliar los lenguajes de programación cuántica con una teoría de funciones de orden superior.

El primer intento de definir un cálculo lambda cuántico fue realizado por Philip Maymin en 1996. Su cálculo lambda-q es lo suficientemente potente como para expresar cualquier cálculo cuántico. Sin embargo, este lenguaje puede resolver eficientemente problemas NP-completos y, por lo tanto, parece ser estrictamente más fuerte que los modelos computacionales cuánticos estándar (como la máquina cuántica de Turing o el modelo de circuito cuántico). Por lo tanto, el cálculo lambda-q de Maymin probablemente no se pueda implementar en un dispositivo físico.

En 2003, André van Tonder definió una extensión del cálculo lambda adecuada para demostrar la corrección de los programas cuánticos. También proporcionó una implementación en el lenguaje de programación Scheme.

En 2004, Selinger y Valiron definieron un cálculo lambda fuertemente tipado para la computación cuántica con un sistema de tipos basado en lógica lineal.

Brumoso

Quipper se publicó en 2013. Se implementa como un lenguaje integrado y utiliza Haskell como idioma anfitrión. Por esta razón, los programas cuánticos escritos en Quipper se escriben en Haskell utilizando las bibliotecas proporcionadas. Por ejemplo, el siguiente código implementa la preparación de una superposición

importación QuipperSpos :: Bool - No. Circulo QubitSpos b = do q . qinit b r . hadamard q Regreso r
Más resultados...
Tamaño del texto:
undoredo
format_boldformat_italicformat_underlinedstrikethrough_ssuperscriptsubscriptlink
save