deutsch-jozsa.py 800 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. import qcgpu
  2. # 3 qubits, f(x) = x_0 NOT x_1 x_2
  3. # Balanced
  4. balanced_state = qcgpu.State(3)
  5. balanced_state.apply_all(qcgpu.gate.h())
  6. # Oracle U_f
  7. balanced_state.h(2)
  8. balanced_state.z(0)
  9. balanced_state.cx(1, 2)
  10. balanced_state.h(2)
  11. balanced_state.apply_all(qcgpu.gate.h())
  12. outcomes = balanced_state.measure(samples = 1000)
  13. if int(max(outcomes, key=outcomes.get)) == 0:
  14. print('constant')
  15. else:
  16. print('balanced')
  17. # 3 qubits, f(x) = 0
  18. # Constant
  19. constant_state = qcgpu.State(3)
  20. constant_state.apply_all(qcgpu.gate.h())
  21. # Oracle is equivalent to the identity gate,
  22. # thus has no effect on the state
  23. constant_state.apply_all(qcgpu.gate.h())
  24. outcomes = constant_state.measure(samples = 1000)
  25. if int(max(outcomes, key=outcomes.get)) == 0:
  26. print('constant')
  27. else:
  28. print('balanced')