sympy.physics.quantum.gate中ZGate工作原理及运算结果疑问
问题原因
你看到的结果不是ZGate实现错误,是对SymPy量子模块的比特位编号规则理解有偏差:
- SymPy量子门传入的位置参数遵循小端序编号规则:参数
0对应量子比特字符串最右侧的最低有效位(LSB),不是多数人直觉里字符串最左侧的最高位。 - 泡利Z门的作用逻辑本身是对的:仅对作用位为
|1⟩的态乘相位系数-1,作用位为|0⟩时态保持不变。
结果对应验证
你运行得到的所有输出完全符合规则:
- 单比特场景(你认为正确的1a、1b):只有1位比特,位序差异体现不出来,结果和直觉一致。
- 双比特场景
Z(0)(作用于最右侧比特位):Qubit('00')最右位是0 → 输出|00⟩Qubit('01')最右位是1 → 输出-|01⟩Qubit('10')最右位是0 → 输出|10⟩Qubit('11')最右位是1 → 输出-|11⟩
- 双比特场景
Z(1)(作用于从右往左数第二位,即字符串左数第一位):Qubit('00')目标位是0 → 输出|00⟩Qubit('01')目标位是0 → 输出|01⟩Qubit('10')目标位是1 → 输出-|10⟩Qubit('11')目标位是1 → 输出-|11⟩
这种小端位序是量子计算编程框架里的常见设计,只是和日常从左到右读二进制串的习惯相反,不属于实现bug。
内容的提问来源于stack exchange,提问作者Klaus Rohe
相关产品推荐
相关产品推荐

