使用Qiskit的工作流程包括三个主要步骤:
构建:设计一个代表您正在考虑的问题的量子电路。
执行:在不同的后端(包括系统和模拟器)上运行实验。
分析:计算汇总统计数据并可视化实验结果。
这是整个工作流程的示例,每个步骤在后续部分中都有详细说明:
import numpy as np
from qiskit import(
QuantumCircuit,
execute,
Aer)
from qiskit.visualization import plot_histogram
# Use Aer's qasm_simulator
simulator = Aer.get_backend('qasm_simulator')
# Create a Quantum Circuit acting on the q register
circuit = QuantumCircuit(2, 2)
# Add a H gate on qubit 0
circuit.h(0)
# Add a CX (CNOT) gate on control qubit 0 and target qubit 1
circuit.cx(0, 1)
# Map the quantum measurement to the classical bits
circuit.measure([0,1], [0,1])
# Execute the circuit on the qasm simulator
job = execute(circuit, simulator, shots=1000)
# Grab results from the job
result = job.result()
# Returns counts
counts = result.get_counts(circuit)
print("\nTotal count for 00 and 11 are:",counts)
# Draw the circuit
circuit.draw()

# Plot a histogram
plot_histogram(counts)

分步工作流程
上面的程序可以分为六个步骤:
- 导入包
- 初始化变量
- 添加门
- 可视化电路
- 模拟实验
- 可视化结果
第1步:导入包
程序所需的基本元素如下导入:
import numpy as np
from qiskit import(
QuantumCircuit,
execute,
Aer)
from qiskit.visualization import plot_histogram
其中:
QuantumCircuit:可以看作是量子系统的指令。它拥有您所有的量子运算。
execute:运行电路/实验。
Aer:处理模拟器后端。
plot_histogram:创建直方图。
步骤2:初始化变量
考虑下一行代码
circuit = QuantumCircuit(2, 2)
在这里,您将使用处于零状态的2个量子位进行初始化。将2个经典位设置为零;circuit是量子电路。
句法:
QuantumCircuit(int, int)
步骤3:添加逻辑门
您可以添加门(操作)来操纵电路的寄存器。
考虑以下三行代码:
circuit.h(0)
circuit.cx(0, 1)
circuit.measure([0,1], [0,1])
将门一对一地添加到电路中以形成贝尔状态
上面的代码应用了以下门:
QuantumCircuit.h(0):哈达玛门 H 作用在qubit 0上,使其处于叠加状态。
QuantumCircuit.cx(0, 1):受控非操作(CX)在控制量子位0和目标量子位1上,将量子位置于纠缠状态。
QuantumCircuit.measure([0,1], [0,1]):如果将整个量子和经典寄存器传递给measure,第i位量子比特的测量结果将存储在第i个经典位中。
步骤4:可视化的电路
您可以使用 许多教科书和研究文章中使用QuantumCircuit.draw()的各种形式来查看设计的电路。
circuit.draw()

在此电路中,量子比特按顺序排列,顶部为量子比特0,底部为量子比特1。从左到右读取电路,这意味着在电路中较早使用的门显示在左侧。
QuantumCircuit.draw()或qiskit.visualization.circuit_drawer() 的默认后端是文本后端。但是,根据本地环境,可将这些默认值进行更改。这是通过用户配置文件完成的。默认情况下,用户配置文件应位于, ~/.qiskit/settings.conf并且是一个.ini文件。
例如,settings.conf用于设置Matplotlib画图的文件为:
[default]
circuit_drawer = mpl
您可以使用任何有效的电路画图后端作为此配置的值,其中包括text,mpl,latex和latex_source。
步骤5:模拟实验
Qiskit Aer是用于量子电路的高性能仿真器框架。它提供了多个后端 来实现不同的仿真目标。
如果您在安装Aer时遇到问题,则可以通过使用BasicAer替换Aer来使用Basic Aer提供程序。基本Aer包含在Qiskit Terra中。
import numpy as np
from qiskit import(
QuantumCircuit,
execute,
BasicAer)
...
要模拟此电路,您将使用qasm_simulator。该电路的每次运行都会产生位串00或11。
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)
Total count for 00 and 11 are: {'00': 506, '11': 494}
如预期的那样,大约在百分之五十的时间内输出位串为00。可以通过方法的shots 参数指定电路运行的execute次数。模拟的数量设置为1000(默认值为1024)。
有了result对象后,您可以通过方法访问计数 get_counts(circuit)。这可以为您运行的实验提供汇总结果。
步骤6:可视化结果
Qiskit提供了许多可视化效果,
包括功能plot_histogram,以查看您的结果。
plot_histogram(counts)

观察到的概率 Pr(00) 和 Pr(11) 通过取各自的计数并除以总张数来计算。
- 更多精彩?
