量子程序条件判断
实例1
import pyqpanda as pq
if __name__ == "__main__":
#初始化量子虚拟机
machine = pq.init_quantum_machine(pq.QMachineType.CPU)
qubits = pq.qAlloc_many(3)
cbits = pq.cAlloc_many(2)
cbits[0].set_val(0)
cbits[1].set_val(1)
prog = pq.QProg()
branch_true = pq.QProg()
branch_false = pq.QProg()
# 构建QIf正确分支以及错误分支
branch_true .insert(pq.H(qubits[0]))\
.insert(pq.H(qubits[1]))\
.insert(pq.H(qubits[2]))
branch_false.insert(pq.H(qubits[0]))
# 构建QIf
qif = pq.create_if_prog(cbits[0] > cbits[1], branch_true, branch_false)
# QIf插入到量子程序中
prog.insert(qif)
# 概率测量
result = pq.prob_run_dict(prog, qubits, -1)
# 打印概率测量结果
print(result)
pq.destroy_quantum_machine(machine)
量子if语句类似于条件运算符 exp1?exp2:exp3
实例一是比较两个经典比特值的大小关系,因为0<1所以要走错误分支,即构建错误分支下的量子线路。
测量结果为
实例二
import pyqpanda as pq
if __name__ == "__main__":
#初始化量子虚拟机
machine = pq.init_quantum_machine(pq.QMachineType.CPU)
qubits = pq.qAlloc_many(3)
cbits = pq.cAlloc_many(3)
cbits[0].set_val(0)
cbits[1].set_val(1)
prog = pq.QProg()
branch_true = pq.QProg()
branch_false = pq.QProg()
# 构建QIf正确分支以及错误分支
branch_true .insert(pq.H(qubits[0]))\
.insert(pq.H(qubits[1]))\
.insert(pq.H(qubits[2]))
branch_false.insert(pq.H(qubits[0]))
# 构建QIf
qif = pq.create_if_prog(cbits[0] < cbits[1], branch_true, branch_false)
# QIf插入到量子程序中
prog.insert(qif)
# 概率测量
result = pq.prob_run_dict(prog, qubits, -1)
# 打印概率测量结果
for k in result:
print(k + ":" + str(result[k]))
pq.destroy_quantum_machine(machine)
实例二相当于是构建正确分支下的量子线路。
测量结果为