Algoritmo cuántico para sistemas lineales de ecuaciones (HHL09): Paso 2 - Preparación de los estados iniciales

9

Esta es una continuación del algoritmo cuántico para sistemas de ecuaciones lineales (HHL09): Paso 2: ¿Qué es ?|Ψ0


En el documento: Algoritmo cuántico para sistemas lineales de ecuaciones (Harrow, Hassidim y Lloyd, 2009) , no se proporcionan los detalles de la implementación real del algoritmo. Cómo exactamente se los estados y , es una especie de " recuadro negro " (consulte las páginas 2-3).| b |Ψ0|b

|Ψ0=2Tτ=0T1sinπ(τ+12)T|τ

y

|b=1Nbi|i

donde es el estado inicial del registro del reloj y es el estado inicial del registro de entrada.| b |Ψ0|b

(Diga) Quiero llevar a cabo su algoritmo en la computadora cuántica IBM de bits. 16Y quiero resolver una determinada ecuación donde es una matriz hermitiana con entradas reales y es un vector de columna con entradas reales.A 4 × 4 b 4 × 1Ax=bA4×4b4×1

Tomemos un ejemplo:

A=[1234215635174671]

y

b=[1234]

Dadas las dimensiones de y , deberíamos necesitar qubits para el registro de entrada y otros qubits para el registro de reloj, suponiendo que queremos que los valores propios sean representado con precisión del y una precisión de hasta bits para los valores propios (esto se ha discutido aquí anteriormente). Por lo tanto , se necesitarán qubits para este propósito (el qubit adicional es el ancilla).blog 2 4 = 2 6 90 % 3 2 + 6 + 1 = 9 1Ablog24=2690%32+6+1=91

Preguntas:

  1. Con esta información, ¿es posible crear los estados iniciales y | b en el IBM 16 versión qubit?|Ψ0|b16

  2. Si cree que es demasiado grande para implementarse en las computadoras cuánticas de IBM, incluso podría mostrar un ejemplo de preparación de estado inicial para una matriz A de Hermitian 2 × 2 (o simplemente dar una referencia a dicho ejemplo).4×42×2A

Simplemente quiero tener una idea general sobre si esto se puede hacer (es decir, si es posible) en la computadora cuántica IBM de 16 qubits y para qué puertas serán necesarias. Si no es la computadora cuántica IBM de 16 qubits, ¿puede el simulador QISKit utilizado para recrear la preparación del estado inicial de y | b en el algoritmo de HHL? ¿Hay alguna otra alternativa mejor para hacer esto?|Ψ0|b

Sanchayan Dutta
fuente
1
Hasta donde sé, IBM no puede hacer HHL porque implica hacer cosas en una superposición de diferentes tiempos, pero no me sorprendería si me equivoco. @ James Woottoon podría conocer mejor la respuesta.
user1271772
@ user1271772 Yo también lo pensé, pero soy un poco escéptico porque alguien me dijo en el chat que simuló el HHL para después de esto , en IBM. 4×4
Sanchayan Dutta
Bueno, tal vez la Fig. 4 del artículo de Yudong Cao (el que vinculaste) es todo lo que necesitas entonces.
user1271772
@ user1271772 Sí, pero desafortunadamente, eso solo funcionaría para esa matriz en particular. Estoy buscando una técnica general, para la cual probablemente debería leer ese documento más a fondo.
Sanchayan Dutta
Como John Watrous lo puso en uno de sus comentarios a una pregunta en la que alguien preguntaba por un circuito específico, "estás pidiendo que la gente haga un trabajo tedioso pero conceptualmente poco interesante". Yudong era un estudiante universitario de ingeniería cuando hizo estos circuitos. Él no tenía más entrenamiento que usted (de hecho, en base a su rápido progreso, probablemente sepa más sobre computación cuántica que él al momento de escribir ese documento). Si él pudiera hacer este circuito, debería poder hacer el circuito correspondiente para cualquier ejemplo de HHL que se presente frente a usted.
user1271772

Respuestas:

3

No es posible crear los estados iniciales y | b en el IBM versión de 16 qubits. Por otro lado, es posible aproximarlos con un error arbitrariamente bajo 1 ya que las puertas implementadas por los chips de IBM ofrecen esta posibilidad.|Ψ0|b

Aquí pides 2 estados cuánticos diferentes:

  1. no está restringida en absoluto. El estado | b está representado por un vector de N números complejos que pueden ser cualquier cosa (siempre que el vector tiene norma unitaria).|b|bN
  2. |Ψ0|bbi

|b|Ψ0|Ψ0|Ψ0

|b|Ψ0

|Ψ0|Ψ0

Para la implementación en QISKit, aquí hay una muestra para inicializar un estado cuántico dado:

import qiskit

statevector_backend = qiskit.get_backend('local_statevector_simulator')

###############################################################
# Make a quantum program for state initialization.
###############################################################
qubit_number = 5
Q_SPECS = {
    "name": "StatePreparation",
    "circuits": [
        {
            "name": "initializerCirc",
            "quantum_registers": [{
                "name": "qr",
                "size": qubit_number
            }],
            "classical_registers": [{
                "name": "cr",
                "size": qubit_number
            }]},
    ],
}
Q_program = qiskit.QuantumProgram(specs=Q_SPECS)

## State preparation
import numpy as np
from qiskit.extensions.quantum_initializer import _initializer

def psi_0_coefficients(qubit_number: int):
    T = 2**qubit_number
    tau = np.arange(T)
    return np.sqrt(2 / T) * np.sin(np.pi * (tau + 1/2) / T)

def get_coeffs(qubit_number: int):
    # Can be changed to anything, the initialize function will take
    # care of the initialisation.
    return np.ones((2**qubit_number,)) / np.sqrt(2**qubit_number)
    #return psi_0_coefficients(qubit_number)

circuit_prep = Q_program.get_circuit("initializerCirc")
qr = Q_program.get_quantum_register("qr")
cr = Q_program.get_classical_register('cr')
coeffs = get_coeffs(qubit_number)
_initializer.initialize(circuit_prep, coeffs, [qr[i] for i in range(len(qr))])

res = qiskit.execute(circuit_prep, statevector_backend).result()
statevector = res.get_statevector("initializerCirc")
print(statevector)

1 Aquí "error" se refiere al error entre el estado ideal y la aproximación cuando se trata de una computadora cuántica perfecta (es decir, sin decoherencia, sin error de puerta).

Nelimee
fuente
0

El algoritmo HHL con una matriz A de 4 x 4 podría ser demasiado grande para la computadora IBM. Probé una versión de juguete más pequeña del algoritmo de acuerdo con el enlace arXiv 1302.1210 Resolución de sistemas de ecuaciones lineales

Le expliqué un poco sobre este circuito aquí en stackexchange: /cs/76525/could-a-quantum-computer-perform-linear-algebra-faster-than-a-classical-computer/ 77036 # 77036

Desafortunadamente, es solo una entrada de 1 qubit con una matriz A = 2 x 2, en la respuesta se proporciona un enlace al circuito de IBM.

Bram
fuente
El problema con la implementación de 4x4 HHL no es el número de qubits (se necesitan 7 qubits) sino las tasas de error de las puertas cuánticas y los tiempos de decoherencia. Una implementación de un sistema 4x4 usando QISKit está disponible aquí . La implementación sigue a arxiv.org/abs/1110.2232v2 .
Nelimee
Gran implementación de un 4 x 4 HHL.
Bram