No sé por qué / cómo los autores de ese artículo hacen lo que hacen. Sin embargo, así es como lo haría para este caso especial (y es un caso muy especial):
Puede escribir el Hamiltoniano como una descomposición de Pauli
Actualización: debería ser . Pero no quiero volver a dibujar todos mis diagramas, etc., así que dejaré el signo negativo.A=15I⊗I+9Z⊗X+5X⊗Z−3Y⊗Y.
+3Y⊗Y
Ahora, es interesante notar que cada uno de estos términos conmuta. Entonces, eso significa que
Podría averiguar cómo simular cada uno de estos pasos individualmente, pero primero permítame hacer una observación adicional: estos términos de conmutación son los estabilizadores del estado del clúster de 2 qubits. Eso puede o no significar algo para usted, pero me dice que una cosa inteligente es aplicar una puerta de fase controlada.
eiAθ=e15iθe9iθZ⊗Xe5iθX⊗Ze−3iθY⊗Y.
CP⋅A⋅CP=15I⊗I+9I⊗X+5X⊗I−3X⊗X.
(Es posible que desee verificar el signo del último término. No lo calculé cuidadosamente.) Entonces, si comenzamos y terminamos nuestra secuencia con compuertas de fase controlada, entonces 2 de los términos son fáciles de entender: rotamos el primer qubit sobre el eje en un ángulo de , y el segundo qubit sobre el eje en un ángulo de .x5θx9θ
Lo único que nos queda por hacer bien es la rotaciónSi piensa en la estructura de , esto es como una rotación en los estados base , y otra en . Un no controlado convierte estas bases en las bases de un solo qubit controladas fuera del qubit objetivo. Pero dado que ambos implementan la misma rotación controlada pero con valores opuestos controlados, simplemente podemos eliminar el control. Por lo tanto, el circuito general es:
Esto se simplifica ligeramente al combinar las dos puertas controladas al final:
X⊗Xe−3iθX⊗Xx{|00⟩,|11⟩}{|01⟩,|10⟩}e i A θ z
Tenga en cuenta que no he incluido el término de fase global aquí porque esa no es la forma sensata de hacerlo. Cuando realiza control- ( ), aplica la "fase global" como una rotación en el qubit de control.eiAθz
optim_hamil.py
. Una forma práctica de obtener los valores / coeficientes de ángulo de rotación correctos es utilizar algún tipo de algoritmo de optimización multivariante. Nelimee usó elscipy.optimize
módulo para ese propósito. Sin embargo, me gustaría entender personalmente el Algoritmo de optimización de líder de grupo también. El artículo: arxiv.org/abs/1004.2242 es demasiado vago.