环境搭建 · 十分钟跑通第一个量子程序
装好 Python + Qiskit,写一个把量子比特置于叠加态、测量一千次的「Hello Quantum」,看到大约五五开的结果。这一章带你搭好本专栏全程要用的工具,并读懂一个量子程序的骨架。
环境搭建 · 十分钟跑通第一个量子程序
学任何东西,先让它跑起来。这一章我们装好工具,写出第一个量子程序,看到它真实的输出——之后每一章的概念,都会是「照着敲、看着结果」。
装什么
我们用 Qiskit——IBM 开源的量子计算框架,Python 生态里最主流、文档最全的一个。装它只要一行:
pip install qiskit qiskit-aerqiskit:核心库,用来搭量子线路(写代码描述「对哪个 qubit 施加什么门」)。qiskit-aer:高性能模拟器。在你还没有量子计算机的时候(你现在肯定没有),用它在普通电脑上模拟量子程序的运行——这也是学习和调试量子算法最主要的方式。
本专栏以 Qiskit 1.x / 2.x(2024 年后的版本)为准。 Qiskit 1.0 对 API 做过一次大改(比如删掉了老教程里常见的 execute 函数),网上很多旧代码跑不了。如果你照着别处的老代码报错,先 pip show qiskit 看看版本,再对照官方文档。本专栏的代码都用新 API。除了 Qiskit,同类框架还有 Google 的 Cirq、PennyLane、微软的 Q#——学会一个,其余触类旁通,因为它们描述的是同一套量子计算规则。
Hello Quantum
第一个程序,我们让一个量子比特进入「既是 0 又是 1」的叠加态,然后测量它一千次:
from qiskit import QuantumCircuit, transpile
from qiskit_aer import AerSimulator
# 1 个量子比特 + 1 个经典比特(用来存测量结果)
qc = QuantumCircuit(1, 1)
qc.h(0) # 对 qubit 0 施加 H 门 → 进入叠加态
qc.measure(0, 0) # 测量 qubit 0,结果存进经典比特 0
# 在模拟器上跑 1000 次
sim = AerSimulator()
result = sim.run(transpile(qc, sim), shots=1000).result()
print(result.get_counts())跑一下,你会看到类似这样的输出:
{'0': 508, '1': 492}大约一半 0、一半 1。 这就是量子叠加最直观的样子:测量之前,这个 qubit 既不是确定的 0、也不是确定的 1;每次测量,它以约 50% 的概率给你一个 0 或一个 1。经典的比特绝不会这样——它要么是 0、要么是 1,测一千次结果全一样。
看看这条线路长什么样
Qiskit 能把线路画出来,print(qc.draw()) 得到一张 ASCII 图:
┌───┐┌─┐
q: ┤ H ├┤M├
└───┘└╥┘
c: 1/══════╩═
0从左到右就是时间:qubit q 先过一个 H 门,再被测量(M),结果落到经典位 c。量子线路(quantum circuit)就是量子程序的「源代码」——一串作用在 qubit 上的操作,从左到右依次执行。之后我们写的每个程序,本质都是在搭这样一条线路。
一个量子程序的骨架
拆开上面的代码,任何量子程序都是这四步:
- 建线路:声明要用几个 qubit(和存结果的经典位)。
- 加门:施加一系列量子门(下一站的主题),把 qubit 变到你要的状态。
- 测量:把量子状态「读」成经典的 0/1(测量很特殊,后面专门讲)。
- 运行:交给模拟器(或真机)跑很多次(
shots),因为结果是概率的,要靠多次统计才看得出规律。
注意第 4 步的 shots=1000——为什么要跑一千次? 因为量子测量的结果是随机的,跑一次只能得到一个 0 或一个 1,看不出「约五五开」这个规律。必须重复很多次、统计频率,才能观察到量子态的概率分布。这是量子编程和经典编程一个根本的体感差异:你运行的不是一次确定的计算,而是一个概率实验,要靠采样去还原它。 测量那章 会把这件事讲透。
小结与下一章
工具装好了(qiskit + qiskit-aer),第一个量子程序也跑通了:一个 H 门造出叠加,测量一千次得到约五五开。你也认识了量子程序的骨架——建线路 → 加门 → 测量 → 采样统计。
但我们还没真正搞懂:那个被 H 门「置于叠加」的量子比特,内部到底是个什么状态?它和经典 bit 的差别,用代码怎么看见?下一章,我们把 qubit 的状态直接打印出来,一探究竟。👉 量子比特:把 qubit 的状态打印出来看。
参考文献
- [1] Qiskit 官方文档.「Install Qiskit / Hello world.」https://docs.quantum.ibm.com/guides —— 安装与第一个程序。
- [2] Qiskit.「Migrate to Qiskit 1.0.」https://docs.quantum.ibm.com/migration-guides/qiskit-1.0 —— 新旧 API 差异(
execute被移除等)。 - [3] Nielsen & Chuang.《Quantum Computation and Quantum Information》—— 量子计算的经典教材(理论深入,可作长期参考)。