Skip to main content
IBM Quantum Platform

fermion_jordan_wigner

fermion_jordan_wigner(op, num_qubits)

Asigna a FermionOperator a mediante SparseObservable la transformación de Jordan-Wigner. [1]

El modo fermiónico jj se asigna al qubit jj del resultado SparseObservable (es decir, se aplica la identidad a cualquier qubit fuera del soporte del operador). Esto se debe al orden de los qubits «little-endian» de Qiskit, en el que el índice del qubit en una etiqueta de Pauli como corresponde X_2 Z_1 Z_0 al índice del modo.

Parámetros

  • op : el operador fermiónico que se va a mapear.
  • num_qubits : el número de qubits del operador de qubits resultante. Este valor debe ser estrictamente mayor que el índice del modo más grande en op (cualquier qubit adicional se rellena con la identidad).

Devuelve

El operador del qubit mapeado. El resultado no está simplificado; llama a para simplify() combinar los términos duplicados.

Subidas

ValueError – si num_qubits es demasiado pequeño para contener el soporte del operador, es decir, si no es mayor que el índice modal más grande sobre el que actúa op.


Definición

La transformación de Jordan-Wigner mapea los operadores de creación y aniquilación fermiónicos a operadores de espín (o, en este caso, de 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 \, ,

donde aja^\dagger_j ( aja_j ) es el operador de creación (aniquilación) fermiónico que actúa sobre el modo fermiónico sin espín jj, σP\sigma^P con P{X,Y,Z}P \in \{X,Y,Z\} son los operadores de Pauli de espín 12\frac{1}{2} y σ±=(σX±iσY)/2\sigma^\pm = (\sigma^X \pm \mathrm{i} \sigma^Y) / 2.

Esta aplicación conserva las relaciones de anticomutación fermiónicas mediante la introducción de una cadena de operadores « σZ\sigma^Z » en todos los qubits que preceden al índice sobre el que se actúa jj.


Uso

Dado que a no FermionOperator determina un número fijo de modos sobre los que actúa, se puede especificar el número de qubits a los que se va a aplicar al llamar a esta función.

>>> 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 y E. Wigner, «Über das Paulische Äquivalenzverbot», Zeitschrift für Physik 47, n.º 9. (1928), pp. 631-651, doi:10.1007/BF01331938.

¿Le ha resultado útil esta página?
Informe de un error, de una errata o solicite contenido en GitHub.