fermion_jordan_wigner
fermion_jordan_wigner(op, num_qubits)
Associa FermionOperator a mediante SparseObservable la trasformazione di Jordan-Wigner. [1]
La modalità fermionica viene mappata sul qubit del risultato SparseObservable (ovvero, su qualsiasi qubit al di fuori del supporto dell’operatore viene applicata l’identità). Ciò deriva dall’ordinamento dei qubit in formato little-endian di Qiskit, in cui l’indice del qubit in un’etichetta di Pauli come corrisponde X_2 Z_1 Z_0 all’indice della modalità.
Parametri
- op – l'operatore fermionico da mappare.
- num_qubits – il numero di qubit per l'operatore su qubit risultante. Questo valore deve essere rigorosamente maggiore dell'indice modale più grande in
op(eventuali qubit aggiuntivi vengono riempiti con l'identità).
Risultati
L'operatore del qubit mappato. Il risultato non è semplificato; utilizzare la funzione simplify() per combinare i termini duplicati.
Aumenti
ValueError – se è num_qubits troppo piccolo per contenere il supporto dell’operatore, ovvero se non è maggiore dell’indice modale più grande su cui agisce op.
Definizione
La trasformazione di Jordan-Wigner mappa gli operatori di creazione e annichilimento fermionici su operatori di spin (o, in questo caso, su operatori di qubit):
dove ( ) è l’operatore di creazione (annichilimento) fermionico che agisce sull’ -esimo modo fermionico senza spin, con sono gli operatori di Pauli per lo spin e .
Questa mappatura preserva le relazioni di anticommutazione fermioniche introducendo una catena di operatori di tipo “ ” su tutti i qubit che precedono l’indice su cui agisce l’operatore .
Utilizzo
Poiché a non FermionOperator determina un numero fisso di modi su cui agisce, è possibile specificare il numero di qubit su cui effettuare la mappatura quando si chiama questa funzione.
>>> from qiskit_fermions.mappers.library import fermion_jordan_wigner
>>> from qiskit_fermions.operators import FermionOperator
>>> fop = FermionOperator.from_dict(
... {
... (): 2.0,
... ((True, 0), (False, 0)): 0.1,
... ((True, 1), (False, 2), (True, 2), (False, 1)): -1.0j,
... }
... )
>>> qop = fermion_jordan_wigner(fop, 4)
>>> qop.simplify()
<SparseObservable with 5 terms on 4 qubits: (2.05-0.25j)() + (-0.05+0j)(Z_0) + (0+0.25j)(Z_1) + (0+0.25j)(Z_2 Z_1) + (0-0.25j)(Z_2)>
[ 1 ]
P. Jordan ed E. Wigner, “Über das Paulische Äquivalenzverbot”, Zeitschrift für Physik 47, n. 9. (1928), pp. 631–651, doi:10.1007/BF01331938.