Skip to main content
IBM Quantum Platform

fermion_jordan_wigner

fermion_jordan_wigner(op, num_qubits)

Associa FermionOperator a mediante SparseObservable la trasformazione di Jordan-Wigner. [1]

La modalità fermionica jj viene mappata sul qubit jj 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):

ajk<jσkZσj  and  ajk<jσkZσj+,a^\dagger_j \rightarrow \bigotimes_{k\lt j} \sigma^Z_k \otimes \sigma^-_j ~~\text{and}~~ a_j \rightarrow \bigotimes_{k\lt j} \sigma^Z_k \otimes \sigma^+_j \, ,

dove aja^\dagger_j ( aja_j ) è l’operatore di creazione (annichilimento) fermionico che agisce sull’ jj -esimo modo fermionico senza spin, σP\sigma^P con P{X,Y,Z}P \in \{X,Y,Z\} sono gli operatori di Pauli per lo spin 12\frac{1}{2} e σ±=(σX±iσY)/2\sigma^\pm = (\sigma^X \pm \mathrm{i} \sigma^Y) / 2.

Questa mappatura preserva le relazioni di anticommutazione fermioniche introducendo una catena di operatori di tipo “ σZ\sigma^Z ” su tutti i qubit che precedono l’indice su cui agisce l’operatore jj.


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.

Questa pagina è stata utile?
Segnala un bug, un errore di battitura o richiedi contenuti su GitHub.