如果我运行以下Python脚本:
from sympy.physics.quantum import qapply
from sympy.physics.quantum.qubit import Qubit
from sympy.physics.quantum.gate import X, Z, ZGate
print("1a) Z(0)*Qubit('0')={0}".format(qapply(Z(0)*Qubit('0'))))
print("1b) Z(0)*Qubit('1')={0}\n".format(qapply(Z(0)*Qubit('1'))))
print("2a) Z(0)*Qubit('00')={0}".format(qapply(Z(0)*Qubit('00'))))
print("2b) Z(0)*Qubit('01')={0}".format(qapply(Z(0)*Qubit('01'))))
print("2c) Z(0)*Qubit('10')={0}".format(qapply(Z(0)*Qubit('10'))))
print("2d) Z(0)*Qubit('11')={0}".format(qapply(Z(0)*Qubit('11'))))
print("2e) Z(1)*Qubit('00')={0}".format(qapply(Z(1)*Qubit('00'))))
print("2f) Z(1)*Qubit('01')={0}".format(qapply(Z(1)*Qubit('01'))))
print("2g) Z(1)*Qubit('10')={0}".format(qapply(Z(1)*Qubit('10'))))
print("2h) Z(1)*Qubit('11')={0}".format(qapply(Z(1)*Qubit('11'))))我得到以下输出:
1a) Z(0)*Qubit('0')=|0>
1b) Z(0)*Qubit('1')=-|1>
2a) Z(0)*Qubit('00')=|00>
2b) Z(0)*Qubit('01')=-|01>
2c) Z(0)*Qubit('10')=|10>
2d) Z(0)*Qubit('11')=-|11>
2e) Z(1)*Qubit('00')=|00>
2f) Z(1)*Qubit('01')=|01>
2g) Z(1)*Qubit('10')=-|10>
2h) Z(1)*Qubit('11')=-|11>在我看来,第1a行和第1b行的输出是正确的,但2b)、2c)、2f)和2g)是错误的。问题出在哪里?
欢迎任何帮助。
亲切的问候
克劳斯
发布于 2022-06-14 08:36:38
您的输出是正确的,这确实是Z门的工作方式。
我相信你的担忧是由符号误解引起的。例如,在2b中:
Qubit('01')
Qubit( '01‘)中的’01‘是指这些量子位元的状态。(在开始时,您有2位寄存器,其中量子位数0位于状态|1>,量子位数1位于状态|0>)。
您还可以以以下形式编写:
Qubit('01') = |0> * |1>Z(0)
这里的“零”不是一个量子位的状态,它是一个应用Z门的量子位的数字(索引)。
所以,在把两者结合起来之后:
Z(0) * Qubit('01')
在量子位数0上应用Z门(最右边的量子位,与状态|1>相同)。
Z门在一个量子位上工作(因此量子位数1保持不变,而栅极只翻转量子位数0的相位)。您可以将其表示为:
Z(0) * Qubit('01') = Z(0) * (|0> * |1>) = |0> * Z|1> = |0> * -|1> = -|01>..which与输出结果相同。
https://stackoverflow.com/questions/72592774
复制相似问题