基于 Qiskit 的量子电路模拟

尽管真正的量子计算机仍处于实验与工程阶段,但我们可以在经典计算机上高保真地模拟量子电路的行为。这类模拟依赖线性代数与复数运算,利用传统 CPU 或 GPU 复现量子态的演化过程,从而帮助我们学习、验证并研究量子算法的原理。

目前,主流的量子电路模拟框架包括:

  • Qiskit(IBM):功能最完善的开源量子计算框架,支持电路构建、仿真、可视化与真机运行。
  • Cirq(Google):更偏向算法研究与 NISQ 实验,结构简洁,便于快速构建电路。
  • Braket(Amazon):AWS 的量子计算 SDK,集成了多种云端量子后端。
  • QuTiP(Quantum Toolbox in Python):专注于量子动力学与量子信息理论的数值模拟。

这些工具均可在本地模拟量子比特状态变化,无需真实量子硬件。本文以 Qiskit 为例,介绍如何在经典计算机上构建并模拟量子电路。

一、环境准备

Qiskit 可使用 conda 安装:

from qiskit.visualization import plot_histogram
plot_histogram(counts)

或使用 pip 安装:

from qiskit.visualization import plot_histogram
plot_histogram(counts)

二、量子电路的创建

在 Qiskit 中,量子电路由量子比特(qubit) 与经典比特(classic bit) 组成。
其中,电路的创建可使用 QuantumCircuit 方法:

from qiskit.visualization import plot_histogram
plot_histogram(counts)

创建了一个 2 量子比特、3 经典比特的电路,并且其默认均处于 0 状态。

对第一个量子比特施加 Hadamard 门,从而产生叠加态:

from qiskit.visualization import plot_histogram
plot_histogram(counts)

基于控制量子比特(0)对操作量子比特(1)施行 CNOT 门,从而产生量子纠缠:

from qiskit.visualization import plot_histogram
plot_histogram(counts)

测量两个量子比特状态,并分别赋值至第二和第三个经典比特:

from qiskit.visualization import plot_histogram
plot_histogram(counts)

使用 matplotlib(mpl)绘制量子电路:

from qiskit.visualization import plot_histogram
plot_histogram(counts)

最终构建的电路生成了 Bell 态:

\lvert \Phi^+ \rangle = \frac{1}{\sqrt{2}}(\ket{00}+\ket{11})

三、模拟电路

Qiskit 提供高性能的量子模拟器 Aer,用于本地 CPU 模拟:

from qiskit.visualization import plot_histogram
plot_histogram(counts)

运行电路,其中 shots 用于设置模拟次数:

from qiskit.visualization import plot_histogram
plot_histogram(counts)

获得测量结果:

from qiskit.visualization import plot_histogram
plot_histogram(counts)

读取结果中的计数:

from qiskit.visualization import plot_histogram
plot_histogram(counts)

测量结果为三位经典比特值,从右到左分别对应第一、第二、第三个经典比特。这里由于构建了 Bell 态,第二、第三位发生了纠缠,而第一位为初始值 0。

四、结果可视化

Qiskit 自带丰富的可视化工具,可绘制测量结果的直方图:

from qiskit.visualization import plot_histogram
plot_histogram(counts)

六、获取状态向量

除了 qasm_simulator(基于采样测量),我们还可以直接查看量子态的振幅(复数向量):

该状态向量可以精确描述量子电路执行后的量子态,即:

\ket{\psi}=\frac{1}{\sqrt{2}}(\ket{0} +\ket{1})

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注