Алгоритм Дойча
This commit is contained in:
25
task2/main.py
Normal file
25
task2/main.py
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
import cirq
|
||||||
|
|
||||||
|
q0, q1 = cirq.LineQubit.range(2)
|
||||||
|
|
||||||
|
oracles = {
|
||||||
|
"0": [],
|
||||||
|
"1": [cirq.X(q1)],
|
||||||
|
"x": [cirq.CNOT(q0, q1)],
|
||||||
|
"notx": [cirq.CNOT(q0, q1), cirq.X(q1)],
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
def deutsch_algorithm(oracle):
|
||||||
|
yield cirq.X(q1)
|
||||||
|
yield cirq.H(q0), cirq.H(q1)
|
||||||
|
yield oracle
|
||||||
|
yield cirq.H(q0)
|
||||||
|
yield cirq.measure(q0)
|
||||||
|
|
||||||
|
|
||||||
|
simulator = cirq.Simulator()
|
||||||
|
|
||||||
|
for key, oracle in oracles.items():
|
||||||
|
result = simulator.run(cirq.Circuit(deutsch_algorithm(oracle)), repetitions=10)
|
||||||
|
print("oracle: {:<4} results: {}".format(key, result))
|
||||||
Reference in New Issue
Block a user