Betreiber-Dienstprogramme
qiskit_addon_obp.utils.operations
Utility-Funktionen für Operator-Backpropagation.
apply_op_to
apply_op_to(op1, op1_qargs, op2, op2_qargs, *, apply_as_transform=False)
Wenden Sie den Betreiber op2 auf den Betreiber op1 an.
Diese Operatoren müssen nicht unbedingt auf dieselbe Anzahl von Qubits wirken, da davon ausgegangen wird, dass sie auf ein größeres System wirken. Die Position eines jeden Betreibers im System wird durch die entsprechende qargs definiert. Der Ausgabeoperator wird auf union(op1_qargs, op2_qargs) definiert.
In der Standardeinstellung wendet diese Funktion op1 auf op2 wie folgt an:
op2 @ op1
Wenn Sie apply_as_transform=True einstellen, wendet diese Funktion op1 auf op2 in folgender Weise an:
op2.adjoint() @ op1 @ op2
Parameter
- op1 (SparsePauliOp) – Der Betreiber, auf den
op2angewendet wird. - op1_qargs (list[int]) – Die Qubit-Indizes für
op1. - op2 (SparsePauliOp) – Der Betreiber, der sich auf
op1bewirbt. - op2_qargs (list[int]) – Die Qubit-Indizes für
op2. - apply_as_transform (bool) – Ob
op2aufop1als Transformation angewendet werden soll.
Rückgabe
Das Tupel (op, qargs) , bei dem op die Eingabe op1 mit op2 links-angewendet ist und qargs eine Liste von Qubit-Indizes für den neuen Operator op ist. Die Qubit-IDs in der Ausgabe op entsprechen der globalen Qubit-ID im gleichen Index in qargs.
Wenn zum Beispiel der Ausgang op eine SparsePauliOp("YX") ist und qargs [3, 4] ist, entspricht der X-Term auf Qubit 0 des Operators der globalen Qubit-ID 3.
Erhöht
ValueError - Die Anzahl der eindeutigen Operator-Qargs muss mit der Anzahl der Qubits des entsprechenden Operators übereinstimmen.
Rückgabetyp
tuple [*SparsePauliOp*, list[ int ]]
apply_reset_to
apply_reset_to(op, qubit_id, inplace=False)
Wenden Sie eine Reset-Operation auf einen Pauli-Operator an.
Mit dieser Funktion wird op auf die folgende Weise zurückgesetzt:
<0|op|0>
Bei Termen, die Pauli X- oder Y-Terme auf dem Qubitqubit_id enthalten, wird ihr Gewicht auf 0.0 reduziert. Bei Begriffen, die Pauli Z auf qubit_id enthalten, wird dieses Pauli Z durch eine Identität ersetzt.
Parameter
- op (SparsePauliOp) – Der Betreiber, auf den die Rücksetzung angewendet wird.
- qubit_id (int) – Der Index des Qubits, auf das der Reset angewendet werden soll.
- inplace (bool) – Ob der Operator an Ort und Stelle geändert werden soll.
Rückgabe
Der transformierte Operator
Rückgabetyp
to_global_op
to_global_op(op, qargs, n_qubits)
Umwandlung eines lokalen Operators in einen globalen Operator durch Einfügen von Identitäten auf nicht verwendeten Qubits.
Parameter
- op (SparsePauliOp) – Lokaler Betreiber will expandieren.
- qargs (list[int]) – Qubit-Indizes für lokale Operatoren.
- n_qubits (int) – Anzahl der Qubits im globalen System.
Rückgabe
Ein Operator auf n_qubits qubits
Erhöht
ValueError - Qubit-ID außerhalb des Bereichs
Rückgabetyp
reduce_op
reduce_op(global_op)
Erstellen Sie eine schlanke Darstellung eines globalen Pauli-Operators.
Diese Funktion liefert eine schlanke Darstellung des Eingabeoperators, bei der alle Qubits, die ausschließlich mit Pauli-I-Termen verbunden sind, entfernt wurden. Es wird auch eine Liste von Indizes zurückgegeben, die angeben, auf welche Qubits der Lean-Operator wirkt.
Beispiel:
>>> global_op = SparsePauliOp(["IXI", "IIZ"])
>>> reduced_op, qargs = reduce_op(global_op)
>>> reduced_op
SparsePauliOp(['XI', 'IZ'],
coeffs=[1.+0.j, 1.+0.j])
>>> qargs
[0, 1]Parameter
global_op (SparsePauliOp) – Der globale Operator, für den eine schlanke Darstellung erzeugt werden soll
Rückgabe
- Eine schlanke Darstellung des Eingabeoperators, bei der die Qubits, die ausschließlich mit Identitätsbegriffen verbunden sind, entfernt wurden.
- Eine Liste von Indizes, die die Qubits angeben, auf die der Lean-Operator wirkt.
Erhöht
ValueError - Der Eingabeoperator darf nicht der Identitätsoperator sein.
Rückgabetyp
tuple [*SparsePauliOp*, list[ int ]]