Representação Jordan-WignerJordan-Wigner Representation

Embora os segundos hamiltonianos quantificados sejam convenientemente representados em termos de $a^\dagger$ (criação) e $a$ (aniquilação), estas operações não são operações fundamentais em computadores quânticos.While second quantized Hamiltonians are conveniently represented in terms of $a^\dagger$ (creation) and $a$ (annihilation), these operations are not fundamental operations in quantum computers. Como resultado, se quisermos implementá-los num computador quântico, precisamos de mapear os operadores para matrizes unitárias que podem ser implementadas num computador quântico.As a result, if we wish it implement them on a quantum computer we need to map the operators to unitary matrices that can be implemented on a quantum computer. A representação Jordan-Wigner dá um desses mapas.The Jordan–Wigner representation gives one such map. No entanto, outros, como a representação Bravyi-Kitaev, também existem e têm as suas vantagens e desvantagens relativas.However, others such as the Bravyi–Kitaev representation also exist and have their own relative advantages and disadvantages. A principal vantagem da representação jordan-wigner é a sua simplicidade.The main advantage of the Jordan-Wigner representation is its simplicity.

A representação jordan-wigner é direta para derivar.The Jordan-Wigner representation is straight forward to derive. Lembre-se que um estado $\ket {0} _j$ implica que a rotação orbital $j$ está vazia e $\ket {1} _j$ implica que está ocupado.Recall that a state $\ket{0}_j$ implies that spin orbital $j$ is empty and $\ket{1}_j$ implies that it is occupied. Isto significa que os qubits podem naturalmente armazenar a ocupação de um dado volume orbital de rotação.This means that qubits can naturally store the occupation of a given spin orbital. Temos então que $a^\dagger_j \ket {0} _j = \ket {1} _j$ e $a^\dagger_j\ket _j {1} = 0$.We then have that $a^\dagger_j \ket{0}_j = \ket{1}_j$ and $a^\dagger_j \ket{1}_j = 0$. É fácil verificar se \start{align} a^\dagger_j &= \start{bmatrix}0 & 0 \ \ 1 &0\end{bmatrix}=\frac{X_j - iY_j} {2} , \nonumber \ \ a_j &= \start{bmatrix}0 & iY_j 1 \ \ 0 &0 \end{bmatrix}=\frac{X_j + iY_j} {2} , \end{align} onde $X_j$ e $Y_j$ são os operadores Pauli-$X$ e -$Y$ agindo em qubit $j$.It is easy to verify that \begin{align} a^\dagger_j &= \begin{bmatrix}0 & 0 \\ 1 &0 \end{bmatrix}=\frac{X_j - iY_j}{2}, \nonumber\\ a_j &= \begin{bmatrix}0 & 1 \\ 0 &0 \end{bmatrix}=\frac{X_j + iY_j}{2}, \end{align} where $X_j$ and $Y_j$ are the Pauli-$X$ and -$Y$ operators acting on qubit $j$.

Nota

No Q# estado de $\ket {0} $ representa o estado de +1 do operador $Z$.In Q# the $\ket{0}$ state represents the +1 eigenstate of the $Z$ operator. Em algumas áreas da física $\ket {0} $ representa o estado terrestre de baixa energia e, portanto, o estado -1 do operador de $Z$.In some areas of physics $\ket{0}$ represents the low-energy ground state and thus the -1 eigenstate of the $Z$ operator. Portanto, algumas fórmulas podem diferir da literatura popular.Therefore some formulas might differ from popular literature.

Na biblioteca de química usamos $\ket {0} $ para representar um spin-orbital desocupado.In the chemistry library we use $\ket{0}$ to represent an unoccupied spin-orbital. Isto mostra que para um único giro orbital é fácil representar operadores de criação e aniquilação em termos de matrizes unitárias que os computadores quânticos entendem.This shows that for a single spin orbital it is easy to represent creation and annihilation operators in terms of unitary matrices that quantum computers understand. Note que enquanto $X$ e $Y$ são unitários $a^\dagger$ e $a$ não são.Note that while $X$ and $Y$ are unitary $a^\dagger$ and $a$ are not. Veremos mais tarde que isto não representa um desafio para a simulação.We will see later that this does not pose a challenge for simulation.

Um problema que permanece é que enquanto a construção acima funciona para uma única rotação orbital, falha para sistemas com dois ou mais orbitais de rotação.One problem that remains is that while the above construction works for a single spin orbital, it fails for systems with two or more spin orbitals. Como os Fermions são anti-simméticos, sabemos que $a^\dagger_j a^\dagger_k = - a^\dagger_k a^\dagger_j$ para qualquer $j$ e $k$.Since Fermions are antisymmetic, we know that $a^\dagger_j a^\dagger_k = - a^\dagger_k a^\dagger_j$ for any $j$ and $k$. No entanto, $$ \esquerda (\frac{X_j - iY_j} {2} \direita)\esquerda(\frac{X_k - iY_k} {2} \direita) = \esquerda{X_k - iY_k} {2} \direita) \esquerda(\frac{X_j - iY_j} {2} \direita).However, $$ \left(\frac{X_j - iY_j}{2}\right)\left(\frac{X_k - iY_k}{2}\right) = \left(\frac{X_k - iY_k}{2}\right) \left(\frac{X_j - iY_j}{2}\right). $$ Por outras palavras, os dois operadores de criação não anti-deslocação, conforme necessário.$$ In other words, the two creation operators do not anti-commute as required. Isto pode ser corrigido de uma forma simples, se não deselegante.This can be remedied though in a straightforward, if inelegant fashion. A correção é notar que os operadores da Pauli são naturalmente anti-deslocação.The fix is to note that Pauli operators naturally anti-commute. Em particular, $XZ = -ZX$ e $YZ=-ZY$.In particular, $XZ = -ZX$ and $YZ=-ZY$. Assim, intercalando os operadores $Z$ na construção do operador, podemos emular a correta contra-comutação.Thus, by interspersing $Z$ operators into the construction of the operator, we can emulate the correct anti-commutation. A construção completa é a seguinte:The full construction is as follows:

\start{align} a^\dagger_1 &= \left(\frac{X-iY} {2} \right)\otimes 1 \otimes 1 \otimes 1 \otimes \cdots \otimes 1, \ \ a^\dagger_2 &= Z\otimes\left(\frac{X-iY} {2} \direita)\otimes 1\otimes 1\otimes \cdots \otimes 1, \ \ a^\dagger_3 &= Z\otimes Z\otimes \left(\frac{X-iY} {2} \right)\otimes 1 \otimes \cdots \otimes 1, \ \ &\vdots \ \ a^\dagger_N &= Z\otimes Z\otimes Z\otimes Z \otimes \cdots \otimes Z\otimes \left(\frac{X-iY} {2} \direita).\begin{align} a^\dagger_1 &= \left(\frac{X-iY}{2}\right)\otimes 1 \otimes 1 \otimes 1 \otimes \cdots \otimes 1,\\ a^\dagger_2 &= Z\otimes\left(\frac{X-iY}{2}\right)\otimes 1\otimes 1 \otimes \cdots \otimes 1,\\ a^\dagger_3 &= Z\otimes Z\otimes \left(\frac{X-iY}{2}\right)\otimes 1 \otimes \cdots \otimes 1,\\ &\vdots\\ a^\dagger_N &= Z\otimes Z\otimes Z\otimes Z \otimes \cdots \otimes Z\otimes \left(\frac{X-iY}{2}\right). \label{eq:JW} \end{align}\label{eq:JW} \end{align}

Também é conveniente expressar os operadores de números, $n_j$, em termos de operadores pauli.It is also convenient to express the number operators, $n_j$, in terms of Pauli operators. Felizmente, as cordas dos operadores de $Z$ (conhecidas como cordas Jordan-Wigner) cancelam depois de uma fazer esta substituição.Thankfully, the strings of $Z$ operators (known as Jordan-Wigner strings) cancel after one makes this substitution. Depois de efetuar isto (e recordando que $X_jY_j=iZ_j$), temos \start{equation} n_j = a^\dagger_j a_j = \frac{(1-Z_j)} {2} .After carrying this out (and recalling that $X_jY_j=iZ_j$), we have \begin{equation} n_j = a^\dagger_j a_j = \frac{(1-Z_j)}{2}. \end{equação}\end{equation}

Construção de Hamiltonians na Representação Jordan-WignerConstructing Hamiltonians in Jordan-Wigner Representation

Uma vez invocada a representação Jordan-Wigner que traduz o Hamiltonian numa soma de operadores pauli é diretamente para a frente.Once we have invoked the Jordan-Wigner representation translating the Hamiltonian to a sum of Pauli operators is straight forward. Basta substituir cada um dos operadores de $a^\dagger$ e $a$ no Fermionic Hamiltonian pelas cordas dos operadores Pauli acima indicados.One simply has to replace each of the $a^\dagger$ and $a$ operators in the Fermionic Hamiltonian with the strings of Pauli-operators given above. Quando se realiza esta substituição, há apenas cinco classes de termos dentro do Hamiltonian.When one performs this substitution, there are only five classes of terms within the Hamiltonian. Estas cinco classes correspondem às diferentes formas de escolher os $p,q$ e $p,q,r,s$ nos termos de um corpo e dois corpos no Hamiltonian.These five classes correspond to the different ways we can pick the $p,q$ and $p,q,r,s$ in the one-body and the two-body terms in the Hamiltonian. Estas cinco classes, para o caso em que $p>q>r>s$ e orbitais de valor real, sãoThese five classes, for the case where $p>q>r>s$ and real-valued orbitals, are

\begin{align} h_{pp}a_p^\dagger a_p &= \sum_p \frac{h_{pp}} {2} (1 - Z_p) \ \ h_{pq}(a_p^\dagger a_q + a^\dagger_q a_p) &= \frac{h_{pq}} {2} \left(\prod_{j=q+1}^{p-1} Z_j \right)\left( X_pX_q + Y_pY_q\right) \ \ h_{pqqp} n_p n_q &= \frac{h_{pqqp}} {4} \left(1-Z_p - Z_q +Z_pZ_q \right) \ \ H_{pqqr} &= \frac{h_{pqqr}} {2} \left(\prod_{j=r+1}^{p-1} Z_j \right)\left( X_pX_r + Y_pY_r\right)\left(\frac{1-Z_q} {2} \right) \ \ H_{pqrs} &= \frac{h_{pqrs}} {8} \prod_{j=s+1}^{r-1} Z_j\prod_{k=q+1}^{p-1} Z_k \Big(XXXX - XXYY+XYXY\nonumber \ \ &\qquad\qquad\qquad\qquad\qquad+YXXY+YXYX-YYXX\nonumber \ \ &\qquad\qquad\qquad\qquad\qquad+XYYX+YYYY\Big) \end{align}\begin{align} h_{pp}a_p^\dagger a_p &= \sum_p \frac{h_{pp}}{2}(1 - Z_p)\\ h_{pq}(a_p^\dagger a_q + a^\dagger_q a_p) &= \frac{h_{pq}}{2}\left(\prod_{j=q+1}^{p-1} Z_j \right)\left( X_pX_q + Y_pY_q\right)\\ h_{pqqp} n_p n_q &= \frac{h_{pqqp}}{4}\left(1-Z_p - Z_q +Z_pZ_q \right)\\ H_{pqqr} &= \frac{h_{pqqr}}{2}\left(\prod_{j=r+1}^{p-1} Z_j \right)\left( X_pX_r + Y_pY_r\right)\left(\frac{1-Z_q}{2}\right)\\ H_{pqrs} &= \frac{h_{pqrs}}{8}\prod_{j=s+1}^{r-1} Z_j\prod_{k=q+1}^{p-1} Z_k \Big(XXXX - XXYY+XYXY\nonumber\\ &\qquad\qquad\qquad\qquad\qquad+YXXY+YXYX-YYXX\nonumber\\ &\qquad\qquad\qquad\qquad\qquad+XYYX+YYYY\Big) \end{align}

Embora gerar estes hamiltonianos à mão apenas requer a aplicação destas regras de substituição, fazê-lo seria inviável para grandes moléculas que podem consistir em milhões de termos hamiltonianos.While generating such Hamiltonians by hand only requires applying these replacement rules, doing so would be infeasible for large molecules which can consist of millions of Hamiltonian terms. Como alternativa, podemos construir automaticamente uma JordanWignerEncoding FermionHamiltonian representação do Hamiltonian.As an alternative, we can automatically construct the JordanWignerEncoding given a FermionHamiltonian representation of the Hamiltonian.

    // We load the namespace containing fermion and Pauli objects. 
    using Microsoft.Quantum.Chemistry.Fermion;
    using Microsoft.Quantum.Chemistry.Pauli;
    
    // We create an example `FermionHamiltonian` instance.
    var fermionHamiltonian = new FermionHamiltonian();

    // We convert this Fermion Hamiltonian to a Jordan-Wigner representation.
    var jordanWignerEncoding = fermionHamiltonian.ToPauliHamiltonian(QubitEncoding.JordanWigner);

Uma vez que os Hamiltonianos são construídos nesta forma, podemos usar uma série de algoritmos de simulação quântica para compilar as dinâmicas geradas por $e^{-iHt}$ numa sequência de portões elementares (dentro de alguma tolerância de erro definível do utilizador).Once the Hamiltonians are constructed in this form, we can use a host of quantum simulation algorithms to compile the dynamics generated by $e^{-iHt}$ into a sequence of elementary gates (within some user definable error tolerance). Discutimos os dois métodos mais populares para a simulação quântica, qubitização e fórmulas Trotter-Suzuki, na documentação algorítmica.We discuss the two most popular methods for quantum simulation, qubitization and Trotter–Suzuki formulas, in the algorithmic documentation. Fornecemos implementações para ambos os métodos na biblioteca de simulação Hamiltonian.We provide implementations for both methods in the Hamiltonian simulation library.