@@ -2,11 +2,11 @@ | |||||
Provides an extremely basic graph structure, based on neighbour lists | Provides an extremely basic graph structure, based on neighbour lists | ||||
""" | """ | ||||
def graph(n): | |||||
from collections import defaultdict | |||||
def graph(): | |||||
""" Generate a graph with Hadamards on each qubit """ | """ Generate a graph with Hadamards on each qubit """ | ||||
graph = [set() for i in xrange(n)] | |||||
vops = [0 for i in xrange(n)] # TODO: seems ugly | |||||
return graph, vops | |||||
return defaultdict(set), defaultdict(int) | |||||
def add_edge(graph, v1, v2): | def add_edge(graph, v1, v2): | ||||
""" Add an edge between two vertices in the graph """ | """ Add an edge between two vertices in the graph """ | ||||
@@ -29,10 +29,10 @@ def toggle_edge(graph, v1, v2): | |||||
else: | else: | ||||
add_edge(graph, v1, v2) | add_edge(graph, v1, v2) | ||||
def edgelist(graph): | |||||
def edgelist(g): | |||||
""" Describe a graph as an edgelist """ | """ Describe a graph as an edgelist """ | ||||
edges = frozenset(frozenset((i, n)) | edges = frozenset(frozenset((i, n)) | ||||
for i, v in enumerate(graph) | |||||
for i, v in enumerate(g.values()) | |||||
for n in v) | for n in v) | ||||
return [tuple(e) for e in edges] | return [tuple(e) for e in edges] | ||||
@@ -14,12 +14,11 @@ def identify_pauli(m): | |||||
return sign, pauli_label | return sign, pauli_label | ||||
def test_find_up_to_phase(): | |||||
def _test_find_up_to_phase(): | |||||
""" Test that slightly suspicious function """ | """ Test that slightly suspicious function """ | ||||
pass | |||||
#assert lc.find_up_to_phase(id) == (0, 0) | |||||
#assert lc.find_up_to_phase(px) == (1, 0) | |||||
#assert lc.find_up_to_phase(exp(1j*pi/4.)*ha) == (4, 7) | |||||
assert lc.find_up_to_phase(id) == (0, 0) | |||||
assert lc.find_up_to_phase(px) == (1, 0) | |||||
assert lc.find_up_to_phase(exp(1j*pi/4.)*ha) == (4, 7) | |||||
def get_action(u): | def get_action(u): | ||||
""" What does this unitary operator do to the Paulis? """ | """ What does this unitary operator do to the Paulis? """ | ||||
@@ -40,7 +39,7 @@ def test_we_have_all_useful_gates(): | |||||
""" Check that all the interesting gates are included up to a global phase """ | """ Check that all the interesting gates are included up to a global phase """ | ||||
common_us = id, px, py, pz, ha, ph, sqz, msqz, sqy, msqy, sqx, msqx | common_us = id, px, py, pz, ha, ph, sqz, msqz, sqy, msqy, sqx, msqx | ||||
for u in common_us: | for u in common_us: | ||||
print lc.find_up_to_phase(u) | |||||
lc.find_up_to_phase(u) | |||||
def test_group(): | def test_group(): | ||||
@@ -1,7 +1,7 @@ | |||||
from graph import * | from graph import * | ||||
def test_graph(): | def test_graph(): | ||||
g, v = graph(3) | |||||
g, v = graph() | |||||
add_edge(g, 0,1) | add_edge(g, 0,1) | ||||
add_edge(g, 1,2) | add_edge(g, 1,2) | ||||
add_edge(g, 2,0) | add_edge(g, 2,0) | ||||