Алгоритм Дойча
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