1234567891011121314151617181920212223242526272829303132333435363738394041 |
- import qcgpu
- # 3 qubits, f(x) = x_0 NOT x_1 x_2
- # Balanced
- balanced_state = qcgpu.State(3)
- balanced_state.apply_all(qcgpu.gate.h())
- # Oracle U_f
- balanced_state.h(2)
- balanced_state.z(0)
- balanced_state.cx(1, 2)
- balanced_state.h(2)
- balanced_state.apply_all(qcgpu.gate.h())
- outcomes = balanced_state.measure(samples = 1000)
- if int(max(outcomes, key=outcomes.get)) == 0:
- print('constant')
- else:
- print('balanced')
- # 3 qubits, f(x) = 0
- # Constant
- constant_state = qcgpu.State(3)
- constant_state.apply_all(qcgpu.gate.h())
- # Oracle is equivalent to the identity gate,
- # thus has no effect on the state
- constant_state.apply_all(qcgpu.gate.h())
- outcomes = constant_state.measure(samples = 1000)
- if int(max(outcomes, key=outcomes.get)) == 0:
- print('constant')
- else:
- print('balanced')
|