Deploying a Pauli Hamiltonian

To use QCIS to print.

Step 1: Import Required Modules

[1]:
from isqham.circuit.qcis import Qcis
from isqham.deployHamiltonian import Deployer
from isqham.qubitEncoding import JordanWignerEncoding

Step 2: Construct a Fermionic Hamiltonian

Here, we define a small Hamiltonian using creation and annihilation operators, then export it to the Pauli basis.

[2]:
qcis = Qcis()
encoding = JordanWignerEncoding

p = (
    1 * encoding.c(0) * encoding.cd(0)
    + 1.5 * encoding.c(1) * encoding.cd(1)
    + 0.7 * encoding.c(0) * encoding.cd(0) * encoding.c(1) * encoding.cd(1)
)

h = p.exportPauliHamiltonian()

Step 3: Deploy Hamiltonian Time Evolution Circuit

We now deploy the exponential of the Hamiltonian using Trotterization (with N=1 step) for a time t=0.1. Print the generated quantum circuit using QCIS.

[3]:
deployer = Deployer(qcis)
deployer.expHt(h=h, t=0.1, N=1)
RZ Q0 -0.135
RZ Q1 -0.18500000000000003
H Q0
CZ Q1 Q0
H Q0
RZ Q0 0.034999999999999996
H Q0
CZ Q1 Q0
H Q0
[3]:
<isqham.deployHamiltonian.Deployer at 0x7f12701794f0>

Summary

  • Used Jordan-Wigner encoding to build a Hamiltonian

  • Exported it to a Pauli Hamiltonian

  • Used Deployer.expHt() to generate a quantum circuit for ( e^{-iHt} )

  • The circuit is stored in QCIS and can be further analyzed or simulated