Pauli path integral#
Main Reference:
A polynomial-time classical algorithm for noisy quantum circuits
A Polynomial-Time Classical Algorithm for Noisy Random Circuit Sampling
non-unital …
Talk:
…. todo
PauliPropagation.jl is a Julia package for Pauli propagation simulation of quantum circuits and quantum systems.
Trotter circuit#
using PauliPropagation
## number of qubits
nqubits = 32
## define the observable
# here I...IZI...I
observable = PauliString(nqubits, :Z, 16)
## define the circuit
# the number of layers
nlayers = 32
# bricklayertopology is also the default if you don't provide any
topology = bricklayertopology(nqubits; periodic=true)
# a circuit containing RX and RZZ Pauli gates on the topology
# derived from the Trotterization of a transverse field Ising Hamiltonian
circuit = tfitrottercircuit(nqubits, nlayers; topology=topology)
# time step
dt = 0.1
# count the number of parameters
nparams = countparameters(circuit)
# define the parameter vector
parameters = ones(nparams) * dt
## the truncations
# maximum Pauli weight
max_weight = 6
# minimal coefficient magnitude
min_abs_coeff = 1e-4
## propagate through the circuit with our best (and currently only propagation method)
pauli_sum = propagate(circuit, observable, parameters; max_weight=max_weight, min_abs_coeff=min_abs_coeff)
## overlap with the initial state
overlapwithzero(pauli_sum)
# yields 0.154596728241...
0.15459672824142454