我目前正在尝试编写 Deutsch 算法并努力解决如何测量 |x> 量子位。阅读此处的示例有所帮助,但并没有解决我的基本问题。
使用下图作为提出我遇到的问题的基础,在他们提出第二次 Hadamard 变换时,我仍然将我的信息编码为对应于 |00>、|01>、| 的概率向量。 10> 和 |11>。
我读过的所有内容都表明我所做的只是取前两个值(因为它们对应于第一个量子位)并应用 Hadamard 变换,然后查看它是零还是一,但这似乎不起作用。有没有人实现了这一点并对如何实际实现这一点有任何建议?我目前正在使用 Numpy 在 Python 中进行编码,以下是我所拥有的:
x = np.array([[1], [0]])
y = np.array([[0], [1]])
h = calc_hadamard(1)
phi2 = np.kron(h.dot(x), h.dot(y))
constantF = np.array([[1, 0, 0, 0],
[0, 1, 0, 0],
[0, 0, 1, 0],
[0, 0, 0, 1]])
balancedF = np.array([[1, 0, 0, 0],
[0, 1, 0, 0],
[0, 0, 0, 1],
[0, 0, 1, 0]])
print(constantF.dot(phi2))
print(balancedF.dot(phi2))
这些打印功能的输出在哪里
- (0.5, -0.5, 0.5, -0.5),和
- (0.5, -0.5, -0.5, 0.5)
正如希望显而易见的那样,这是预期的结果,但是对前两个值执行后续的 Hadamard 变换会给出相同的答案。我在这里想念什么?