You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Qiskit生成Bell态遇异常:预期(|01⟩+|10⟩)/√2却得(|11⟩-|00⟩)/√2

问题分析与修正

核心问题1:初始态与预期不符

你明确要求从|00⟩出发,但代码中使用Statevector.from_label('01'),直接将初始态设置为了|01⟩,这是结果偏离的首要原因。

核心问题2:Qiskit的比特顺序与门操作的匹配问题

Qiskit采用小端序存储量子态:Statevector.from_label('ab')中,右侧字符对应量子位0,左侧字符对应量子位1。例如'01'实际表示量子位1为|0⟩、量子位0为|1⟩,即态$|0\rangle_1 \otimes |1\rangle_0 = |01\rangle$。

你的代码中:

  • 对量子位0施加H门:H门作用在|1⟩上会得到$(|0\rangle - |1\rangle)/\sqrt{2}$,因此初始态$|01\rangle$经过H(0)后变为$(|00\rangle - |01\rangle)/\sqrt{2}$。
  • 接着施加CNOT(0,1):控制位是量子位0,目标位是量子位1。当量子位0为|1⟩时,量子位1会从|0⟩翻转为|1⟩,最终得到$(|00\rangle - |11\rangle)/\sqrt{2}$,和你描述的结果一致(全局相位不影响量子态)。

修正方案:生成目标Bell态$(|01\rangle+|10\rangle)/\sqrt{2}$

要从|00⟩出发生成目标态,需要调整初始态和门序列:

  1. 初始态设置为'00',确保从|00⟩开始。
  2. 通过门序列调整,让叠加态与翻转操作结合,得到目标的纠缠态。

修正后的代码:

from qiskit.quantum_info import Statevector
from qiskit import QuantumCircuit
from qiskit.visualization import plot_state_qsphere

# 从|00⟩态出发
sv1 = Statevector.from_label('00')
mycircuit1 = QuantumCircuit(2)
mycircuit1.h(0)          # 对量子位0施加Hadamard门,生成叠加态
mycircuit1.x(1)          # 对量子位1施加X门,将|0⟩翻转为|1⟩
mycircuit1.cx(0, 1)      # 施加CNOT门,控制位0,目标位1,生成纠缠态
new_sv1 = sv1.evolve(mycircuit1)
print(new_sv1)
plot_state_qsphere(new_sv1.data)

也可以通过调整CNOT的控制位和目标位实现,比如:

sv1 = Statevector.from_label('00')
mycircuit1 = QuantumCircuit(2)
mycircuit1.h(1)          # 对量子位1施加Hadamard门
mycircuit1.cx(1, 0)      # 施加CNOT门,控制位1,目标位0
mycircuit1.x(0)          # 对量子位0施加X门调整态
new_sv1 = sv1.evolve(mycircuit1)

两种方式都能得到目标Bell态$(|01\rangle+|10\rangle)/\sqrt{2}$。

内容的提问来源于stack exchange,提问作者Uriel Muñoz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 10:20:54