Skip to main content
IBM Quantum Platform

fermion_jordan_wigner

fermion_jordan_wigner(op, num_qubits)

Mapeie para FermionOperator sob SparseObservable a transformação de Jordan-Wigner. [1]

O modo fermiónico jj é mapeado para o qubit jj do resultado ( SparseObservable ou seja, a identidade é aplicada a qualquer qubit fora do suporte do operador). Isso segue a ordenação de qubits no formato little-endian do Qiskit, em que o índice do qubit em um rótulo de Pauli, como, corresponde X_2 Z_1 Z_0 ao índice do modo.

Parâmetros

  • op – o operador fermiónico a ser mapeado.
  • num_qubits – o número de qubits do operador de qubits resultante. Esse valor deve ser estritamente maior que o maior índice de modo em op (quaisquer qubits adicionais são preenchidos com a identidade).

Retorna

O operador de qubit mapeado. O resultado não é simplificado; utilize a função simplify() para combinar termos duplicados.

Aumentos

ValueError – se num_qubits for pequeno demais para conter o suporte do operador, ou seja, se não for maior que o maior índice modal sobre o qual atua op.


Definição

A transformação de Jordan-Wigner mapeia os operadores de criação e aniquilação de férmions para operadores de spin (ou, neste caso, de qubits):

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 \, ,

onde aja^\dagger_j ( aja_j ) é o operador de criação (aniquilação) de férmions que atua sobre o modo férmionico sem spin de ordem jj, σP\sigma^P com P{X,Y,Z}P \in \{X,Y,Z\} são os operadores de Pauli de spin 12\frac{1}{2} e σ±=(σX±iσY)/2\sigma^\pm = (\sigma^X \pm \mathrm{i} \sigma^Y) / 2.

Esse mapeamento preserva as relações de anticomutação fermiónicas ao introduzir uma cadeia de operadores “ σZ\sigma^Z ” em todos os qubits que precedem o índice sobre o qual a ação é exercida jj.


Uso

Como a função não FermionOperator determina um número fixo de modos sobre os quais atua, é possível especificar o número de qubits aos quais ela deve ser mapeada ao chamá-la.

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

Esta página foi útil?
Relate um bug, erro de digitação ou solicite conteúdo no GitHub.