pyqpanda.Algorithm.demo.Deustch_Jozsa 源代码

'''
Quantum Algorithm Easy Demo: Deutsch-Jozsa Algorithm\n
This algorithm takes a function as the input. Task is to judge 
it whether "Constant" (same outputs with all inputs) or "Balanced"
(half outputs 0 and half outputs 1)\n
Copyright (C) Origin Quantum 2017-2018\n
Licensed Under Apache Licence 2.0
'''
from pyqpanda import *
from pyqpanda.utils import *
from pyqpanda.Algorithm.fragments import two_qubit_oracle

[文档] def Two_Qubit_DJ_Circuit(function='f(x)=0'): ''' Create a 2-qubit DJ algorithm circuit ''' # Allocate 2 qubits qubits=qAlloc_many(2) # Allocate 1 cbit cbit=cAlloc() # Create Empty QProg dj_prog=QProg() # Insert dj_prog.insert(X(qubits[1]))\ .insert(single_gate_apply_to_all(H,qubits)) \ .insert(two_qubit_oracle(function,qubits)) \ .insert(H(qubits[0]))\ .insert(Measure(qubits[0],cbit)) return dj_prog,cbit
[文档] def Two_Qubit_DJ_Demo(): ''' `QPanda Easy Demo`\n Quantum Algorithm Easy Demo: Deustch-Jozsa algorithm\n ''' # Prepare functions function=['f(x)=0','f(x)=1','f(x)=x','f(x)=x+1'] for i in range(4): init() print("Running on function: ", function[i]) # fetch programs and cbit (ready for readout) prog,cbit=Two_Qubit_DJ_Circuit(function[i]) # run and fetch results result=directly_run(prog) print("Measure Results:",result) # judge from the measure result # 1 for constant and 0 for balanced if (getCBitValue(cbit)==One): print('So that',function[i], 'is a Constant function') else: print('So that',function[i], 'is a Balanced function') finalize() print("")