jordan_wigner
jordan_wigner(operator, num_qubits)
Ordne einen Operator unter SparseObservable der Jordan-Wigner-Transformation einem zu.
Dies ist der typunabhängige Einstieg in die Jordan-Wigner-Transformation. Es leitet den Aufruf je nach konkreten Typ operator an die entsprechende direkte Implementierung weiter: fermion_jordan_wigner(), majorana_jordan_wigner(), oder edge_vertex_jordan_wigner() transfer_vertex_jordan_wigner(). Alles, was nicht zu einem der vier Operatortypen gehört, löst einen TypeError. aus.
Parameter
- operator (OperatorTrait) – der zuzuordnende Operator.
- num_qubits (int) – die Anzahl der Qubits für den resultierenden Qubit-Operator. Dieser Wert muss streng größer sein als der größte Modusindex in
operator(alle zusätzlichen Qubits werden mit der Identitätsmatrix aufgefüllt). Beachten Sie, dass für einMajoranaOperatordie Bindung in Fermionenmoden gezählt wird, d. h. im größten Majorana-Index geteilt durch zwei.
Rückgabe
Der abgebildete Qubit-Operator.
Erhöhungen
- TypeError – wenn einen Typ
operatorhat, für den es keine Jordan-Wigner-Implementierung gibt. - ValueError – wenn zu klein
num_qubitsist, um die Stütze des Bedieners aufzunehmen.
Rückgabetyp
>>> from qiskit_fermions.mappers.library import jordan_wigner
>>> from qiskit_fermions.operators import FermionOperator
>>> fop = FermionOperator.from_dict({((True, 0), (False, 0)): 0.1})
>>> jordan_wigner(fop, 2).simplify()
<SparseObservable with 2 terms on 2 qubits: (0.05+0j)() + (-0.05+0j)(Z_0)>
Jeder Operatortyp verfügt über eine direkte Implementierung, sodass die Verteilung über alle diese Typen hinweg vollständig ist. Alles andere – also ein Objekt, das überhaupt kein fermionischer Operator ist – löst einen Fehler aus TypeError:
>>> from qiskit.quantum_info import SparseObservable
>>> jordan_wigner(SparseObservable.identity(2), 2)
Traceback (most recent call last):
...
TypeError: jordan_wigner does not support operator type 'SparseObservable'.