Simulation

JuliQAOA.statevectorMethod
statevector(angles, mixer, obj_vals)

Calculate the QAOA statevector $|\psi(\beta, \gamma)\rangle = e^{-i \beta_p H_M} e^{-i \gamma_p H_C} \dots e^{-i \beta_1 H_M} e^{-i \gamma_1 H_C} |\psi_0\rangle$, where

  • angles = $[\beta_1, \ldots, \beta_p,\gamma_1,\ldots,\gamma_p]$,
  • mixer = $H_M$,
  • obj_vals = the diagonal of $H_C$,

and $|\psi_0\rangle$ is the uniform superposition over mixer.feasible_states.

statevector(sv, angles, mixer, obj_vals)

Calculate the QAOA statevector with the custom initial state $|\psi_0\rangle$ = sv.

Examples

using JuliQAOA, Graphs, LinearAlgebra

n = 6

# 3 rounds with random angles
p = 3 
angles = rand(2*p)

# transverse field mixer
mixer = mixer_x(n) 

# calculate the MaxCut cost function over all basis states on a random G(n,p) graph
g = erdos_renyi(n, 0.5)
obj_vals = [maxcut(g, x) for x in states(n)]

# calculate the statevector (with |ψ0⟩ = uniform superposition over all states)
statevector(angles, mixer, obj_vals)

# calculate the statevector (with |ψ0⟩ = random initial state)
sv = rand(2^n) + rand(2^n)*im
sv = sv/norm(sv)
statevector(sv, angles, mixer, obj_vals)
source
JuliQAOA.statevector!Method
statevector!(sv, angles, mixer, obj_vals)

Calculate the QAOA with $|\psi_0\rangle$ = sv, and store the result in sv.

source
JuliQAOA.probabilitiesMethod
probabilities(angles, mixer, obj_vals)

Calculate the probability of observing each state in mixer.feasible_states for the QAOA defined by (angles, mixer, obj_vals), where$|\psi_0\rangle$ is the uniform superposition over mixer.feasible_states.

Equivalent to abs2.(statevector(angles, mixer, obj_vals)).

probabilities(sv, angles, mixer, obj_vals)

Calculate the probability of observing each state in mixer.feasible_states for the QAOA defined by (angles, mixer, obj_vals) with $|\psi_0\rangle$ = sv.

Equivalent to abs2.(statevector(sv. angles, mixer, obj_vals)).

source
JuliQAOA.probabilities!Method
probabilities!(sv, angles, mixer, obj_vals)

Calculate the probability of observing each state in mixer.feasible_states for the QAOA defined by (angles, mixer, obj_vals) with $|\psi_0\rangle$ = sv, storing the resulting probabilities in sv.

source
JuliQAOA.exp_valueFunction
exp_value(angles, mixer, obj_vals)

Calculate $\langle\psi(\beta, \gamma)| H_C |\psi(\beta, \gamma)\rangle$, where $|\psi(\beta, \gamma)\rangle$ = statevector(angles, mixer, obj_vals).

Equivalent to dot(obj_vals, probabilities(angles, mixer, obj_vals)).

Can be modified to measure the expectation value of something other than $H_C$ and/or start at a non-standard $|\psi_0\rangle$ as follows:

exp_value(angles, mixer, obj_vals, measure)

Calculate $\langle\psi(\beta, \gamma)| H_{\text{measure}} |\psi(\beta, \gamma) \rangle$, where measure = diagonal terms of $H_{\text{measure}}$.

Equivalent to dot(measure, probabilities(angles, mixer, obj_vals)).

exp_value(sv, angles, mixer, obj_vals)

Calculate $\langle\psi(\beta, \gamma)| H_C |\psi(\beta, \gamma)\rangle$ with $|\psi_0\rangle$ = sv.

exp_value(sv, angles, mixer, obj_vals, measure)

Calculate $\langle\psi(\beta, \gamma)| H_{\text{measure}} |\psi(\beta, \gamma) \rangle$ with $|\psi_0\rangle$ = sv.

Examples

using JuliQAOA, Graphs, LinearAlgebra

n = 6

# 3 rounds with random angles
p = 3 
angles = rand(2*p)

# transverse field mixer
mixer = mixer_x(n) 

# calculate the MaxCut cost function over all basis states on a random G(n,p) graph
g = erdos_renyi(n, 0.5)
obj_vals = [maxcut(g, x) for x in states(n)]

# the traditional expectation value
exp_value(angles, mixer, obj_vals)

# the probability of observing an optimal state
measure = obj_vals .== maximum(obj_vals)
exp_value(angles, mixer, obj_vals, measure)

# the probability of observing an optimal state starting from a random initial state
sv = rand(2^n) + rand(2^n)*im
sv = sv/norm(sv)
exp_value(sv, angles, mixer, obj_vals, measure)
source
JuliQAOA.exp_value!Method
exp_value!(sv, angles, mixer, obj_vals, measure)

Calculate $\langle\psi(\beta, \gamma)| H_{\text{measure}} |\psi(\beta, \gamma) \rangle$ with $|\psi_0\rangle$ = sv, storing the probabilities of observing each state in sv.

source