Esempio n. 1
0
    # Make qubits 3 to 5 in a HW=1 state

    qudit_start = 3
    qudit_end = 5
    HW = 1
    init_prog = Dicke_state_local(init_prog, qudit_start, qudit_end, HW)

    # Make qubits 6 to 11 in a HW=3 state
    qudit_start = 6
    qudit_end = 11
    HW = 3
    init_prog = Dicke_state_local(init_prog, qudit_start, qudit_end, HW)

wfn = WavefunctionSimulator().wavefunction(init_prog)
# print states with non-zero probability
for state, prob in wfn.get_outcome_probs().items():
    if (prob > 0):
        print(state, '%3.2f' % prob)
#print(wfn.get_outcome_probs() )

print(init_prog)

#Test senarios
# test Dicke_state_local(prog, 0, 2, HW) output is the same as Dicke_state(3, HW)
if 0:
    qudit_start = 0
    qudit_end = 2
    HW = 1
    init_prog = Dicke_state(3, HW)
    wfn = WavefunctionSimulator().wavefunction(init_prog)
    print(wfn.get_outcome_probs())
import numpy as np
from grove.pyqaoa.maxcut_qaoa import maxcut_qaoa
from pyquil import get_qc
from pyquil.api import WavefunctionSimulator
from hidden_prints import hidden_prints
from .rigetti_result_analysis import convert_result

graph = [(0, 1), (0, 2), (0, 3)]

qvm = get_qc('4q-qvm')
with hidden_prints():
    maxcut_solver = maxcut_qaoa(graph=graph, steps=4)  # qaoa steps
    betas, gammas = maxcut_solver.get_angles()

angles = np.hstack((betas, gammas))
param_prog = maxcut_solver.get_parameterized_program()
prog = param_prog(angles)  # gives the sequence of qubits and gates

measurements = qvm.run_and_measure(prog,
                                   trials=1000)  # simulate the program runs

counts = convert_result(measurements)
# plot_state_histogram(counts)

wavefunction = WavefunctionSimulator().wavefunction(
    prog)  # use wavefunction class to get theoretical measures
prob_dict = wavefunction.get_outcome_probs(
)  # extracts the probabilities of outcomes as a dict
print(prob_dict)
prob_dict.keys()  # these store the bitstring outcomes