Anders and Briegel in Python
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

42 lines
1001B

  1. from abp import GraphState, clifford
  2. from anders_briegel import graphsim
  3. def random_state(N=10, messy=True):
  4. """ A state to test on """
  5. a = GraphState(range(N))
  6. b = graphsim.GraphRegister(N)
  7. clifford.use_old_cz()
  8. for i in range(N):
  9. a.act_hadamard(i)
  10. b.hadamard(i)
  11. for i in range(10):
  12. j, k= np.random.choice(range(N), 2, replace=False)
  13. a.act_cz(j, k)
  14. b.cphase(j, k)
  15. if not messy: return a, b
  16. for i in range(10):
  17. j = np.random.choice(range(N))
  18. k = np.random.choice(range(24))
  19. a.act_local_rotation(j, k)
  20. b.local_op(j, graphsim.LocCliffOp(k))
  21. for i in range(10):
  22. j, k= np.random.choice(range(N), 2, replace=False)
  23. a.act_cz(j, k)
  24. b.cphase(j, k)
  25. return a, b
  26. def bell():
  27. a = GraphState(range(2))
  28. b = graphsim.GraphRegister(2)
  29. a.act_hadamard(0); a.act_hadamard(1);
  30. b.hadamard(0); b.hadamard(1);
  31. a.act_cz(0,1)
  32. b.cphase(0,1)
  33. return a, b