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 se asigna al qubit 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):
donde ( ) es el operador de creación (aniquilación) fermiónico que actúa sobre el modo fermiónico sin espín , con son los operadores de Pauli de espín y .
Esta aplicación conserva las relaciones de anticomutación fermiónicas mediante la introducción de una cadena de operadores « » en todos los qubits que preceden al índice sobre el que se actúa .
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.