# 01、量子程序编程实例
【例1】编程实例: 创建并输出Bell态观测量子线路,在模拟器上执行1000次,以文本和直方图的形式给出运行结果。
解:
代码如下。
js #CH6-1.ipynb: Qiskit量子程序代码框架 #导入库函数 from qiskit import(QuantumCircuit,execute,Aer) from qiskit.visualization import plot_histogram #创建量子线路 circuit =QuantumCircuit(2,2) circuit.h(0) circuit.cx(0,1) circuit.measure(\[0,1\],\[0,1\]) circuit.draw(output='mpl') #模拟器运行 simulator =Aer.get_backend('qasm_simulator') compiled_circuit =transpile(circuit, simulator) job =simulator.run(compiled_circuit, shots=1000) #结果输出 result =job.result() counts =result.get_counts(circuit) print("\\nTotal count for 00 and 11 are:",counts) plot_histogram(counts)
上述代码在模拟器Qasm Simulator上的运行结果如下。
① 显示输出图1所示的量子线路图。
■ 图1量子线路输出
② 显示文本方式的执行结果,量子线路重复执行1000次,测得'00'的次数为484,测得'11'的次数为516。
js Total count for 00 and 11 are: {'00': 484, '11': 516}
③ 显示图2所示的统计结果的直方图,测量到'00'和'11'的概率分别为0.484和0.516,标志着已经成功制备出Bell态。
■ 图2 测量结果的直方图
在较早版本的Qiskit中,不需要对执行量子线路进行编译,指定后端之后用execute()执行量子线路即可。当前的Qiskit版本仍支持这种老的代码框架,此柜架下的代码如下。
#CH6-2.ipynb:Qiskit量子程序代码框架(不编译量子线路的执行方式)
#导入库函数
from qiskit import(QuantumCircuit,execute,Aer)
from qiskit.visualization import plot_histogram
#创建量子线路
circuit =QuantumCircuit(2,2)
circuit.h(0)
circuit.cx(0,1)
circuit.measure(\[0,1\],\[0,1\])
circuit.draw(output='mpl')
#模拟器运行
simulator =Aer.get_backend('qasm_simulator')
job =execute(circuit,simulator,shots=1000)
#结果输出
result =job.result()
counts =result.get_counts(circuit)
print("\\nTotal count for 00 and 11 are:",counts)
plot_histogram(counts)