Bernstein-Vazirani算法¶
另一个玩具的问题¶
就像叫做deutsch - jozsa问题,Bernstein-Vazirani问题是一个玩具的问题你有黑盒功能,你想了解与尽可能少的迭代。就像之前一样,黑盒函数\ (n \)的输入和输出一个点:
公共bool黑箱(位[]输入)
然而,在这种情况下,而不是一个常数或平衡的功能,我们知道oracle函数,\ \ (f),执行逐位输入比特串的点积\ (x = x_0x_1…间{n} \)有一些固定的位串(尽管未知)\ (s = s_0s_1…s_ {n} \)。这是\ (\ (f (x) = (s_0x_0) \ oplus (s_1x_1) \ oplus…\ oplus (s_ {n}间{n}) \)。\)
这里的目标是找出神秘的值字符串,\ (\),尽可能少的迭代函数的。经典,我们知道我们可以算出\ (\)与\ (n \)函数的迭代。我们可以探测函数通过输入一个字符串我\ \ ()th位设置为1和所有其他位设置为0。然后函数将输出的价值\ (s_i \)。因为我们得到每迭代函数的一个比特的信息,我们不知道\ (\)在不到\ (n \)迭代。然而,使用量子算法,我们可以算出\ (\)在一个迭代中!
实现了甲骨文¶
如果我们被告知要经典实现这样一个函数,\ \ (f),和字符串\ (\),我们怎么做?更具体地说,我们有一个输入寄存器组成的\ (n \)位initilized位输入的值\ \ (x)和一个输出寄存器const一点初始化为0。我们的目标是为我们设置输出的价值\ \ (f (x))。从本质上讲,这是怎样的
首先,我们可以注意到,如果一点\ (\),\ (s_i \)比的值是零\ (x_i \)没有对输出的影响\ \ (f)。因此,我们可以把这些位仅在注册。另一方面,如果\ (s_i = 1 \),然后切换\ (x_i \)在0和1之间翻转所产生的价值\ \ (f (x))。我们可以通过添加一个实现这个把CNOT门每一个非零,\ (s_i \),这将有我\ \ ()th在输入注册为一个控制和输出作为目标。
作为一个例子,如果\ (\ s = 011)的一个实现\ \ (f)看起来像
这可以作为量子操作。注意,在甲骨文的神秘字符串的实际问题是未知的。但是我们可以放心,它的行为equivilantely与一群电路把CNOT门与某些输入比特控制和输出作为目标。我们的目标是找出哪些输入比特控制把CNOT门,哪些不喜欢。
阶段回扣(再一次)¶
量子算法,解决了这一问题非常类似于一个叫做deutsch - jozsa解决问题:翻转的输出为1状态,适用\ \ (H)盖茨对所有量子位(包括输出量子位)这个时候,应用oracle应用\ \ (H)盖茨再次,最后测量量子比特。该算法有助于展示的一个有趣的方式解释阶段回扣:应用阿达玛盖茨之前和之后把CNOT门互换把CNOT门的控制目标。
事实上,如果我们能以某种方式翻转所有把CNOT门在前面图颠倒,然后输出量子位1状态将所有把CNOT门这样一个输入寄存器初始化\ (x = 0 00…\)将成为神秘字符串\ (\)。理解阶段回扣这我们首先要确认以下矩阵相等:\ (HXH \)和\ (Z \)。的,我们可以做2×2矩阵的乘法直接看到这个。然而,我们也可以证明Z \ \ (HXH =)显示了两个量子操作状态基础上有同样的效果\ \(刃{0}\)和\ \(刃{1}\)。如果我们首先申请一个\ \ (H)门的两个州,我们得到一个\ \(刃{+}\)和\ \(刃{-}\)状态。应用一个\ \ (X)这两个州产量\ \(刃{+}\)和\(- \刃{-}\)。最后,应用另一个\ \ (H)收益率\ \(刃{0}\)和\(- \刃{1}\)相同的效果,只是门应用阶段\ (Z \)。这也表明,与阿达玛把CNOT门盖茨在目标equivilant行为CZ门:
是equivilant
这是因为如果控制位是1,那么一个Z \ \ (HXH =)门是应用于目标,而如果控制位为0,那么一个我\ \ (HH =)门应用。
回想一下,从盖茨控制部分的目标和控制CZ门是可以互换的。因此,如果输出位设置为1之前遇到的阿达玛盖茨电路组CZ盖茨。这些将在输入寄存器位对应于零\ (s_i \)。因为阿达玛门适用于所有输入寄存器量子位,他们都将在\ \(刃{+}\)状态。这些量子位对应\ (s_i = 0 \)将不受影响(没有控制门连接到输出量子位),而量子比特correspodning\ (s_i = 1 \)将由一个“有效的”目标CZ门这将使改变他们\ \(刃{-}\)状态。
最后,新一轮的阿达玛门会打开\ \(刃{+}\)状态输入寄存器中\ \(刃{0}\)并将\ \(刃{-}\)状态输入寄存器中\ \(刃{1}\)。因此,在测量时输入寄存器的值\ (\)编码的量子比特和测量显示\ (\)。
我们的示例应用这种\ (\ s = 011),我们正试图运行量子线路图
这是equivilant
自我\ \ (H ^ 2 =)。这是然后equivilant
自Z \ \ (HXH =)。然后利用interchangibility控制和目标的\ (Z \)门
最后equivilant是哪一个
自\ (HZH = X \)(为自己证明它作为练习)我\ \ (H ^ 2 =)。理解为什么上面的算法使用一个叫做量子线路图equivilance论点。有时这是一个伟大的工具来规避必须跟踪状态与许多复杂的叠加振幅。我们总结了算法如下。
实现¶
- 应用X的输出量子位,所以它是\ \(刃{1}\)状态。
- 应用H所有量子比特(包括输出)。
- 运行输入寄存器和输出量子位的甲骨文(oracle应该执行一个把CNOT输出)。
- 应用H所有的量子比特。
- 测量所有的输入量子位\ (\)。