qiskit.circuit.library.hamiltonian_variational_ansatz
qiskit.circuit.library.hamiltonian_variational_ansatz(hamiltonian, reps=1, insert_barriers=False, name='HVA', parameter_prefix='t')
Konstruieren Sie einen Hamiltonschen Variationsansatz.
Für einen Hamiltonian , bei dem die Terme nur aus kommutierenden Paulis bestehen, aber die Terme untereinander nicht kommutieren , lautet der Hamiltonian Variational Ansatz (HVA)
wobei die Exponentiale genau [1, 2] implementiert sind. Beachten Sie, dass dies ein Unterschied ist zu evolved_operator_ansatz(), wo keine Annahmen über die Struktur der Operatoren gemacht werden.
Der Hamiltonian kann übergeben werden als SparsePauliOpübergeben werden. In diesem Fall wird der Hamiltonian in kommutierende Terme zerlegt . Beachten Sie, dass dies möglicherweise nicht optimal ist. Wenn der minimale Satz von Kommutanten bekannt ist, kann er als Sequenz in diese Funktion eingegeben werden.
Beispiele:
Ein einzelner Betreiber wird automatisch in Pendeltermine aufgeteilt:
from qiskit.quantum_info import SparsePauliOp
from qiskit.circuit.library import hamiltonian_variational_ansatz
# this Hamiltonian will be split into the two terms [ZZI, IZZ] and [IXI]
hamiltonian = SparsePauliOp(["ZZI", "IZZ", "IXI"])
ansatz = hamiltonian_variational_ansatz(hamiltonian, reps=2)
ansatz.draw("mpl")
Alternativ können wir die Bedingungen auch direkt angeben:
from qiskit.quantum_info import SparsePauliOp
from qiskit.circuit.library import hamiltonian_variational_ansatz
zz = SparsePauliOp(["ZZI", "IZZ"])
x = SparsePauliOp(["IXI"])
ansatz = hamiltonian_variational_ansatz([zz, x], reps=2)
ansatz.draw("mpl")
Parameter
- hamiltonian (SparsePauliOp |Sequence[SparsePauliOp]) – Der Hamilton-Operator, der sich weiterentwickelt. Wenn es als einzelner Operator angegeben wird, wird es in kommutierende Terme aufgeteilt. Wenn eine Folge von
SparsePauliOpist, wird angenommen, dass jedes Element aus kommutierenden Termen besteht, die Elemente jedoch untereinander nicht kommutieren. - reps (int) – Die Anzahl der Wiederholungen der entwickelten Operatoren.
- insert_barriers (bool) – Ob zwischen den einzelnen Evolutionsstufen Barrieren eingefügt werden sollen.
- name (str) – Der Name des Stromkreises.
- parameter_prefix (str) – Legen Sie die Namen der Schaltungsparameter fest. Wenn es sich um eine Zeichenkette handelt, wird für jeden Parameter dasselbe Präfix verwendet. Es kann sich auch um eine Liste handeln, in der für jeden Operator ein Präfix angegeben wird.
Rückgabetyp
Quellenangaben:
[1] D. Wecker et al. Fortschritte auf dem Weg zu praktischen Quanten-Variationsalgorithmen (2015) Phys Rev A 92, 042303
[2] R. Wiersema et al. Erforschung von Verschränkung und Optimierung im Rahmen des Hamiltonian Variational Ansatzes (2020) arXiv:2008.02941