| @@ -1,91 +0,0 @@ | |||||
| from abp import GraphState, clifford | |||||
| from abp.fancy import GraphState as Fancy | |||||
| from anders_briegel import graphsim | |||||
| import random | |||||
| import numpy as np | |||||
| from tqdm import tqdm | |||||
| import time | |||||
| import itertools as it | |||||
| import sys | |||||
| REPEATS = 100000 | |||||
| N=9 | |||||
| def compare(A, B): | |||||
| keys_same = set(A["node"].keys()) == set(B["node"].keys()) | |||||
| vops_same = all(A["node"][i]["vop"] == B["node"][i]["vop"] for i in A["node"].keys()) | |||||
| edges_same = A["adj"] == B["adj"] | |||||
| if keys_same and vops_same and edges_same: | |||||
| return True | |||||
| sys.exit(0) | |||||
| print "doing a state vector check" | |||||
| alice = GraphState(range(N)) | |||||
| alice.node = A["node"] | |||||
| alice.adj = A["adj"] | |||||
| bob = GraphState(range(N)) | |||||
| bob.node = B["node"] | |||||
| bob.adj = B["adj"] | |||||
| if alice.to_state_vector() == bob.to_state_vector(): | |||||
| return True | |||||
| return False | |||||
| if __name__ == '__main__': | |||||
| clifford.use_old_cz() | |||||
| a = graphsim.GraphRegister(N) | |||||
| b = Fancy(range(N)) | |||||
| # Keep comparing until fail | |||||
| while compare(a.to_json(), b.to_json()): | |||||
| if random.random()>0.5: | |||||
| j = np.random.randint(0, N) | |||||
| u = random.randint(0, 23) | |||||
| print "> Acting U{} on {}".format(u, j) | |||||
| a.local_op(j, graphsim.LocCliffOp(u)) | |||||
| b.act_local_rotation(j, u) | |||||
| print "Done" | |||||
| else: | |||||
| i, j= np.random.randint(0, N, 2) | |||||
| if i!=j: | |||||
| print "> Acting CZ on {} & {}".format(i, j) | |||||
| a.cphase(i, j) | |||||
| b.act_cz(i, j) | |||||
| print "Done" | |||||
| #b.update(delay=0.1) | |||||
| # Show the diff | |||||
| A = a.to_json()["node"] | |||||
| B = b.to_json()["node"] | |||||
| for i in range(N): | |||||
| if A[i]["vop"] != B[i]["vop"]: | |||||
| print "{}/ them: {}, me: {}".format(i, A[i]["vop"], B[i]["vop"]) | |||||
| # Now construct unitaries | |||||
| A = a.to_json() | |||||
| B = b.to_json() | |||||
| alice = GraphState(range(N)) | |||||
| alice.node = A["node"] | |||||
| alice.adj = A["adj"] | |||||
| bob = GraphState(range(N)) | |||||
| bob.node = B["node"] | |||||
| bob.adj = B["adj"] | |||||
| print alice.to_state_vector() == bob.to_state_vector() | |||||
| b.layout() | |||||