1. 搭建 Qiskit 开发环境并运行首个量子线路
环境准备与版本确认
本例在本地 Python 环境中完成。Qiskit 自 1.0 起拆分为多个包,核心是 qiskit(含 Terra 的线路与基础原语),模拟器能力由 qiskit-aer 提供。为避免版本漂移导致 API 差异,建议使用独立虚拟环境并固定版本。
python -m venv qiskit-env
# Windows: qiskit-env\Scripts\activate
# macOS/Linux: source qiskit-env/bin/activate
pip install "qiskit==1.2.4" "qiskit-aer==0.15.1"
安装完成后先做一次环境自检,确认导入路径与版本号,这是判断“开发链路是否可用”的第一道关口:
import qiskit, qiskit_aer
print("qiskit:", qiskit.__version__)
print("aer :", qiskit_aer.__version__)
from qiskit import QuantumCircuit
from qiskit_aer import AerSimulator
print("QuantumCircuit OK, AerSimulator OK")
qiskit_aer 报错,通常是包未安装或虚拟环境未激活;若 qiskit.__version__ 低于 1.0,则 qiskit_aer 的导入方式与旧版 qiskit.providers.aer 不同,需按本文写法调整。构建单量子比特叠加态线路
目标线路只有一步核心操作:对 q[0] 施加 Hadamard 门,使 |0⟩ 变为 (|0⟩+|1⟩)/√2。为了让“测量统计”这一步可执行,线路中再加入一个经典寄存器并做测量。注意:验证态矢量时应使用不含测量的线路副本,因为测量会破坏叠加态、使态矢量坍缩。
from qiskit import QuantumCircuit, transpile
# 用于态矢量验证:只有 H 门,无测量
qc_state = QuantumCircuit(1)
qc_state.h(0)
# 用于测量统计:H 门 + 测量
qc_meas = QuantumCircuit(1, 1)
qc_meas.h(0)
qc_meas.measure(0, 0)
print(qc_state.draw())
print(qc_meas.draw())
预期 qc_state 的文本图应显示一个 h 门作用于 q,且没有 measure 指令;qc_meas 则多出一条指向经典位的测量线。这一步的检查价值在于:确认门作用对象与测量映射没有写错。
用 Statevector 验证叠加态
Statevector 模拟器直接给出线路末态的复数振幅。对 H|0⟩,理论振幅为 [1/√2, 1/√2],即约 0.7071 + 0j 与 0.7071 + 0j,对应测量概率各 50%。
from qiskit.quantum_info import Statevector
sv = Statevector(qc_state)
print(sv)
for i, amp in enumerate(sv.data):
print(f"|{i}> 振幅={amp:.4f} 概率={abs(amp)**2:.4f}")
判读标准:两个基态概率均约为 0.5,振幅实部约 0.7071、虚部为 0。若出现 |0⟩ 概率为 1、|1⟩ 为 0,说明 H 门未生效或作用到了错误的量子位。
用 Aer 模拟器做测量统计
测量统计通过多次采样(shots)逼近概率分布。这里用 AerSimulator 执行 qc_meas,取 4096 次采样:
sim = AerSimulator()
tqc = transpile(qc_meas, sim)
result = sim.run(tqc, shots=4096).result()
counts = result.get_counts()
print(counts)
total = sum(counts.values())
for key in sorted(counts):
print(f"{key}: {counts[key]} 次, 占比 {counts[key]/total:.3f}")
示例性预期结果(实际数值随采样随机波动):{'0': ~2048, '1': ~2048},两者占比都在 0.5 附近。由于是有限次采样,允许存在统计涨落,4096 shots 下偏差通常在几个百分点以内。若某一结果占比接近 1.0,则线路或测量映射有误。
开发链路自检关系图
下图把本例的验证链路拆成两条并行支路:一条走态矢量精确验证,一条走采样统计验证,二者共同确认环境与线路均可用。
结果判读与常见偏差
| 观察项 | 正常表现 | 异常表现与可能原因 |
|---|---|---|
| 版本导入 | qiskit 1.x、aer 0.1x 均打印成功 | ImportError:包未装或环境未激活 |
| Statevector 振幅 | [0.7071, 0.7071],虚部 0 | [1, 0]:H 门未加或加错量子位 |
| 采样 counts | '0' 与 '1' 各约 2048/4096 | 单结果占 100%:测量映射错误或线路被误改 |
| 采样波动 | 占比在 0.5 附近小幅浮动 | 波动过大:shots 太少,可增至 8192 观察收敛 |
完成以上两步验证后,环境、线路构建、模拟器执行与结果读取四个环节均已跑通,后续即可在此基础上扩展多量子位与纠缠线路。