Python 编码Deutsch算法
我目前正在尝试编写Deutsch算法,并努力研究如何测量| x>量子位。阅读这本书有帮助,但不能解决我的根本问题 在他们提出第二个阿达玛变换时,我仍然将我的信息编码为对应于| 00>、|01>、|10>和| 11>的概率向量,以下图为基础来展示我的问题 我所读到的一切都表明,我所做的就是取前2个值(因为它们对应于第一个量子位)并应用哈达玛变换,然后看看它是零还是一,但这似乎不起作用。是否有人实施了这一点,并就如何实际实现这一点提出了建议?我目前正在使用Numpy用Python编写代码,以下是我所拥有的:Python 编码Deutsch算法,python,algorithm,numpy,quantum-computing,Python,Algorithm,Numpy,Quantum Computing,我目前正在尝试编写Deutsch算法,并努力研究如何测量| x>量子位。阅读这本书有帮助,但不能解决我的根本问题 在他们提出第二个阿达玛变换时,我仍然将我的信息编码为对应于| 00>、|01>、|10>和| 11>的概率向量,以下图为基础来展示我的问题 我所读到的一切都表明,我所做的就是取前2个值(因为它们对应于第一个量子位)并应用哈达玛变换,然后看看它是零还是一,但这似乎不起作用。是否有人实施了这一点,并就如何实际实现这一点提出了建议?我目前正在使用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), and
(0.5, -0.5, -0.5, 0.5)
- (0.5、-0.5、0.5、-0.5)和
- (0.5,-0.5,-0.5,0.5)
phi3 = constantF.dot(phi2) # or balancedF
h_on_1_for_2 = np.kron(np.eye(2), h)
phi4 = np.dot(h_on_1_for_2, phi3)
这些打印函数的输出是什么
(0.5, -0.5, 0.5, -0.5), and
(0.5, -0.5, -0.5, 0.5)
这的确是正确的。如果我们使用狄拉克符号和2量子位状态的因子来写这些向量,它给出:
,用于常数情况1/2(|00>-|01>+|10>-|11>)=1/2(|0>+|1>)(|0>-|1>)
,用于平衡情况1/2(|00>-|01>-|10>+|11>)=1/2(|0>-|1>)(|0>-|1>)
对于常数情况H(|0>+|1>)=|0>
用于平衡情况H(|0>-|1>)=|1>