尽管真正的量子计算机仍处于实验与工程阶段,但我们可以在经典计算机上高保真地模拟量子电路的行为。这类模拟依赖线性代数与复数运算,利用传统 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})
发表回复