published on in Quantum computing

Qistkit 绘制量子电路

Qiskit 是一个开源量子计算框架,提供了广泛的工具来构建、模拟和优化量子电路。绘制量子电路对于可视化和理解量子算法至关重要。本教程将介绍使用 Qiskit 绘制量子电路的基础知识。

绘制量子门

量子门是作用于量子比特的单一操作。要绘制量子门,请使用 QuantumCircuit 类的 gate() 方法。例如,要绘制 X 门,请执行以下操作:

circuit = QuantumCircuit(2, 2)
circuit.x(0)

在这个代码段中:

  • QuantumCircuit(2, 2) 创建了一个拥有2个量子的位(qubits)和2个经典位(classical bits)的量子的电路。
  • 量子的位是表示量子的比特,它们可以处于 0 或 1 的状态,也可以处于 0 和 1 叠加的状态。
  • 经典位是表示确定性比特的比特,它们只能处于 0 或 1 的状态,可以用于存储测量结果。

因此,circuit 拥有2个量子的位和2个经典位。

以字符形式打印输出量子电路:

print(circuit)

输出结果:

     ┌───┐┌─┐
q_0: ┤ X ├┤M├
     └┬─┬┘└╥┘
q_1: ─┤M├──╫─
      └╥┘  ║
c: 2/══╩═══╩═
       1   0

测量量子比特

测量操作将量子比特从叠加态坍缩到经典态。要绘制测量,请使用 measure() 方法。例如,要测量量子比特 0 和 1,请执行以下操作:

circuit.measure([0, 1], [0, 1])

绘制电路

一旦构建了量子电路,就可以使用 draw() 方法绘制它:

  • 基于文本的绘图: 直接在终端中打印电路的文本表示。
  • 基于 Matplotlib 的绘图: 使用 Matplotlib 库生成视觉上更好看的电路图。

要进行基于文本的绘图,请使用 output='text'。要进行基于 Matplotlib 的绘图,请使用 output='mpl'.

例如,要绘制基于 Matplotlib 的电路图,请执行以下操作:

fig = circuit.draw(output='mpl')
fig.savefig('test.png')

模拟电路

绘制电路后,可以使用 Qiskit 的模拟器模拟它。模拟器运行电路并返回测量结果。要模拟电路,请使用 Sampler 类。例如,要模拟上面定义的电路,请执行以下操作:

from qiskit.primitives import Sampler

result = Sampler().run(circuit).result()
print(result)

输出如下结果:

SamplerResult(quasi_dists=[{1: 1.0}], metadata=[{}])

{1: 1.0} 表示通过采样检测,有100%的机率会得到数值1,因为该量子电路并没有出现叠加态,且顺序位第0个量子比特被X门反转为1,所以其二进制表示变为01,故此得到数值1且概率为100%。

完整示例:

from qiskit import QuantumCircuit

# Build a quantum circuit: X gate
circuit = QuantumCircuit(2, 2)

circuit.x(0)
circuit.measure([0, 1], [0, 1]);

print(circuit)

# Matplotlib drawing
fig = circuit.draw(output='mpl')
fig.savefig('test.png')

from qiskit.primitives import Sampler

result = Sampler().run(circuit).result()
print(result)

结论

本教程介绍了使用 Qiskit 绘制量子电路的基础知识。通过结合量子门、测量和可视化,您可以轻松了解和分析量子算法。有关更多详细信息和高级绘图功能,请参阅 Qiskit 文档。