Simulación hamiltoniana con coeficientes complejos

12

Como parte de un algoritmo variacional, me gustaría construir un circuito cuántico (idealmente con pyQuil ) que simule un Hamiltoniano de la forma:

H=0.3Z3Z4+0.12Z1Z3+[...]+11.03Z310.92Z4+0.12iZ1Y5X4

Cuando se trata del último término, el problema es que pyQuil arroja el siguiente error:

TypeError: PauliTerm coefficient must be real

Empecé a sumergirme en la literatura y parece un problema no trivial. Me encontré con este artículo sobre Hamiltonianos cuánticos universales donde se discuten las codificaciones de complejo a real, así como las codificaciones locales. Sin embargo, todavía no está claro para mí cómo uno prácticamente implementaría algo como esto. ¿Alguien puede darme algunos consejos prácticos sobre cómo resolver este problema?

Mark Fingerhuth
fuente
1
¿ un error cuando reemplaza que i con ? Sj2(XjSjXj)2
AHusain
3
Recuerda que un hamiltoniano debería ser hermitiano. Eso solo es cierto de los coeficientes son reales.
DaftWullie
1
Podría estar usando una definición diferente para que la tuya. Pero el punto es que puedes encontrar alguna combinación que resulte en . i I d 2SiId2
AHusain
1
¿No tienes otro término en algún lugar de esos , ese es el conjugado hermitiano? H = i A B - i B A H=iABiBA
AHusain
1
¿O son todos los términos del formulario tales que se cancelan?
AHusain

Respuestas:

10

Un hamiltoniano convencional es hermitiano. Por lo tanto, si contiene un término no hermitiano, también debe contener su conjugado hermitiano como otro término o tener un peso 0. En este caso particular, dado que es Hermitiano, el coeficiente tendría que ser 0. Entonces, si está hablando de Hamiltonianos convencionales, probablemente haya cometido un error en su cálculo. Tenga en cuenta que si el conjugado hermitiano del término no está presente, no puede simplemente arreglar las cosas agregándolo; Te dará un resultado completamente diferente.ZXY

Por otro lado, es posible que desee implementar un Hamiltoniano no hermitiano . Estas cosas existen, a menudo para la descripción de los procesos de ruido, pero no están tan extendidas. Debe incluir explícitamente la terminología "no hermitiana", de lo contrario, todos pensarán que lo que está haciendo está mal porque no es hermitiano, y un hamiltoniano debería ser hermitiano. No estoy demasiado familiarizado con las capacidades que brindan los diversos simuladores, pero me sorprendería si no tienen incorporado Hermiticity.

Sin embargo, puede simularlo, a costa de una implementación no determinista. Habrá métodos más sofisticados que este (ver los enlaces en esta respuesta ), pero permítanme describir uno particularmente simple: voy a suponer que solo hay un componente no hermitiano, que es (un producto tensorial de Paul es). Voy a llamar a este producto tensorial de Paulis . El resto del hamiltoniano es . Desea crear la evolución Comenzamos por Trotterizar la evolución, donde . Ahora trabajamos simulando un término individuali×KH

eiHt+Kt
eiHt+Kt=i=1NeiHδt+Kδt
Nδt=teiHδt+KδteiHδteKδt (que se vuelve más preciso en grande ). Ya sabes cómo lidiar con la parte hermitiana, así que concéntrate enN
eKδt=cosh(δt)I+sinh(δt)K.

Introducimos un qubit ancilla en el estado , y lo usamos como el qubit de control en una puerta controlada . Luego medimos la ancilla en la base (donde ). Si el resultado es , entonces en los qubits de destino hemos implementado la operación , hasta la normalización. Entonces, si arreglas , has implementado perfectamente esa operación. Si la medición falla, depende de usted si desea intentar recuperarse (esto puede no ser posible) o comenzar de nuevo.|ψ=α|0+β|1K{|ψ,|ψ}ψ|ψ=0|ψ|α|2I+|β|2K(1|α|2)/|α|2=tanh(δt)

DaftWullie
fuente
3

Este código simple de MATLAB / Octave muestra que no es hermitiano:i0.12Z1Y2X3

z=[1 0 ; 0 -1];
x=[0 1;  1  0];
y=[0 -1i; 1i 0];

z1 = kron(z,eye(4));
y2 = kron(kron(eye(2),y),eye(2));
x3 = kron(eye(4),x);

H=0.12*1i*z1*y2*x3

La salida es H:

    0     0    0 0.12    0    0     0     0
    0     0 0.12    0    0    0     0     0
    0 -0.12    0    0    0    0     0     0
-0.12     0    0    0    0    0     0     0
    0     0    0    0    0    0     0 -0.12
    0     0    0    0    0    0 -0.12     0
    0     0    0    0    0 0.12     0     0
    0     0    0    0 0.12    0     0     0

Como es una matriz real, Hermitian significa simétrico, pero esto no es simétrico y, por lo tanto, no es Hermitian. El triángulo superior derecho no es igual al triángulo inferior derecho.

Sin embargo, el triángulo superior derecho es el negativo del triángulo inferior derecho, por lo que es anti-ermitaño.

Entonces, al hacer la sugerencia de AHussain de agregar la transposición conjugada, resulta en 0. Simplemente ejecute este comando:

H + H'

y obtendrás una matriz 8x8 de ceros.

Entonces, cuando haces tu Hamiltoniano Hermitiano agregando la transposición conjugada, obtienes 0 para este término, y por lo tanto no necesitas tener coeficientes imaginarios .

usuario1271772
fuente
En primer lugar, ¡gracias por la atenta respuesta! Sin embargo, me pregunto acerca de las implicaciones de agregar la transposición conjugada. El Hamiltoniano no que me enfrento es el mezclador / controlador Hamiltoniano que me gustaría usar para QAOA (lo generé en base a ecuaciones de un artículo teórico). Si sé usar lugar de , ¿eso no cambia fundamentalmente mis resultados? H M + H M H MHMHM+HMHM
Mark Fingerhuth
1
Es por eso que el comentario de @ DaftWullie está equivocado sin más suposiciones.
AHusain
1
@ MarkFingerhuth: Perdón por la demora en la repetición. He estado extremadamente ocupado durante los días y he estado llegando a casa cerca de la medianoche todos los días de este mes. Si me puede mostrar el documento de donde provienen las ecuaciones, puedo pensar en cómo sus resultados se vuelven fundamentalmente diferentes. Puedo cambiar mi respuesta para decir "PyQuil no admite matrices no hermitianas, pero eso no significa que un programa diferente no pueda".
user1271772
1
@ MarkFingerhuth: usted dice "Lo generé en base a ecuaciones de un artículo teórico" ¿qué ecuaciones de qué artículo teórico? El artículo vinculado en la pregunta tiene 82 páginas, ¿no puede mostrarme qué ecuaciones utilizó para generar este "hamiltoniano"?
user1271772
1
@ MarkFingerhuth, sí, podemos hablar sin conexión, sin embargo, no obtendré ningún punto por ello. Solo obtuve 1 voto positivo por mi esfuerzo aquí, por lo que el incentivo es bajo.
usuario1271772