Deutsch-Josza 算法

Deutsch 算法

已知函数 \(f:\{0, 1\}\to \{0,1\}\) ,问是否满足 \(f(0)=f(1)\)

问题等价于询问 \(f(0)\odot f(1)=\overline{f(0)\oplus f(1)}\) 的值

假定量子电路输入为 \(\left|x,y\right>\) ,输出为 \(\left|x,y\oplus f(x)\right>\)

先考虑一个简单的情况:\(f(x)=1-x\)

当输入 \(\left|x,y\right>=\left|0,0\right>\) 时,输出 \(\left|x,y\oplus f(x)\right>=\left|0,1\right>\)

当输入 \(\left|x,y\right>=\left|0,1\right>\) 时,输出 \(\left|x,y\oplus f(x)\right>=\left|0,0\right>\)

当输入 \(\left|x,y\right>=\left|1,0\right>\) 时,输出 \(\left|x,y\oplus f(x)\right>=\left|1,0\right>\)

当输入 \(\left|x,y\right>=\left|1,1\right>\) 时,输出 \(\left|x,y\oplus f(x)\right>=\left|1,1\right>\)

现在我们将 \(\left|x\right>\) 处于叠加态,令 \(\left|x\right>={1\over \sqrt 2}(\left|0\right>-\left|1\right>)=\left|+\right>\)

此时,\(f(\left|x\right>)={1\over \sqrt 2}[f(\left|0\right>)+f(\left|1\right>)]={1\over \sqrt 2}(\left|1\right>+\left|0\right>)=\left|+\right>\)

故当 \(\left|y\right>=\left|0\right>\)\(\left|x,y\oplus f(x)\right>=\left|+\right>\otimes{1\over \sqrt 2}(\left|1\right>+\left|0\right>)=\left|+,+\right>\)

\(\left|y\right>=\left|1\right>\)\(\left|x,y\oplus f(x)\right>=\left|+\right>\otimes{1\over \sqrt 2}(\left|0\right>+\left|1\right>)=\left|+,+\right>\)

我们令 \(\left|y\right>\) 也处于叠加态 \(\left|y\right>={1\over \sqrt 2}(\left|0\right>-\left|1\right>)=\left|-\right>\)

\(\left|x,y\right>={1\over 2}(\left|00\right>-\left|01\right>+\left|10\right>-\left|11\right>)\)

\(\left|x,y\oplus f(x)\right>={1\over 2}(\left|01\right>-\left|00\right>+\left|10\right>-\left|11\right>)=-{1\over 2}(\left|00\right>-\left|01\right>-\left|10\right>+\left|11\right>)=-\left|-,-\right>\)

于是,我们固定输入 \(\left|x,y\right>=\left|+,-\right>\) ,分别考虑 \(f(x)\) 为以下四种情况时的输出:

\(f(0)=0, f(1)=0\Rightarrow \left|x,y\oplus f(x)\right>=\left|+,-\right>\)

\(f(0)=0, f(1)=1\Rightarrow \left|x,y\oplus f(x)\right>=\left|-,-\right>\)

\(f(0)=1, f(1)=0\Rightarrow \left|x,y\oplus f(x)\right>=-\left|-,-\right>\)

\(f(0)=1, f(1)=1\Rightarrow \left|x,y\oplus f(x)\right>=-\left|+,-\right>\)

观察后不难得出,若 \(f(0)=f(1)\) 则输出时,第一个 qubit (即 \(\left|x\right>\))为 \(\left|+\right>\)

故我们在第一个 qubit 处增加一个 Hadamard 门,则可使得 \(H\left|+\right>=\left|0\right>, H\left|-\right>=\left|1\right>\) 直接表示 \(f(0)\oplus f(1)\) 的结果

因此,我们直接测量第一个 qubit 即可得到 \(f(0)\oplus f(1)\) 的结果,进而求解问题:是否满足 \(f(0)=f(1)\)


Deutsch-Josza 算法

大名鼎鼎的 DJ 算法

一个比特的数据很难体现出量子算法的优势,现考虑 \(n\) 个比特:

已知函数 \(f:\{0, 1\}^n\to \{0,1\}\) ,问该函数是常函数还是平衡函数。

平衡函数:\(f(x)\) 关于所有 \(x\) 的结果一半为 \(0\) ,一半为 \(1\)

同上文的思路,我们考虑将 \(x\) 的值全部置于叠加态 \(\left|+\right>\)\(y\) 的值置于叠加态 \(\left|-\right>\)

则输入为 \(\left|+\right>^{\otimes n}\otimes \left|-\right>\)

我们同样考虑输出为 \(\left|x,y\oplus f(x)\right>\) ,则:

\(\quad \left|x,y\right>\)

\(\displaystyle ={1\over \sqrt {2^{n+1}}}\sum_{x=0}^{2^n-1}\left|x\right>\otimes (\left|0\right>-\left|1\right>)\)

\(\therefore \left|x,y\oplus f(x)\right>\)

\(\displaystyle ={1\over \sqrt {2^{n+1}}}\sum_{x=0}^{2^n-1}\left|x\right>\otimes (\left|0\oplus f(x)\right>-\left|1\oplus f(x)\right>)\)

由于 \((\left|0\oplus f(x)\right>-\left|1\oplus f(x)\right>)=\begin{cases} \left|0\right>-\left|1\right>\qquad\qquad\qquad\ ,f(x)=0 \\\ \\ \left|1\right>-\left|0\right>=-(\left|0\right>-\left|1\right>), f(x)=1 \end{cases}=(-1)^{f(x)}(\left|0\right>-\left|1\right>)\)

代入得到:

\(\quad\left|x,y\oplus f(x)\right>\)

\(\displaystyle ={1\over \sqrt {2^{n+1}}}\sum_{x=0}^{2^n-1}(-1)^{f(x)}\left|x\right>\otimes (\left|0\right>-\left|1\right>)\)


这边我们按照上面的步骤,应该再次整理,然后对前 \(n\) 个 qubit 引入 Hadamard 门

不过我并没有看懂那个公式

所以我们考虑分类讨论:

\(f(x)\) 为常函数时:

\(\quad\left|x,y\oplus f(x)\right>\)

\(\displaystyle ={1\over \sqrt {2^{n+1}}}\sum_{x=0}^{2^n-1}(-1)^{f(x)}\left|x\right>\otimes (\left|0\right>-\left|1\right>)\)

\(\displaystyle =(-1)^{f(x)}\cdot {1\over \sqrt {2^{n+1}}}\sum_{x=0}^{2^n-1}\left|x\right>\otimes (\left|0\right>-\left|1\right>)\)

\(\displaystyle =(-1)^{f(x)}\cdot \left|x,y\right>\)

对前 \(n\) 个 qubit 引入 Hadamard 门后,为 \((-1)^{f(x)}\cdot \left|0\right>^{\otimes n}\)

因此,我们对前 \(n\) 个 qubit 进行测量,由于 \(p(\left|0\right>)=|\pm \left<0\mid 0\right>|^2=1\) ,故测量概率应为 \(100\%\)

而当 \(f(x)\) 为平衡函数时:

根据公式 \(\displaystyle \left|x,y\oplus f(x)\right>={1\over \sqrt {2^{n+1}}}\sum_{x=0}^{2^n-1}(-1)^{f(x)}\left|x\right>\otimes (\left|0\right>-\left|1\right>)\)

并不会化为 \(\gamma\left|+\right>^{\otimes n}\otimes \left|-\right>,|\gamma|=1\) 的形式。

即对前 \(n\) 个 qubit 引入 Hadamard 门后,不会化为 \(\gamma\left|0\right>^{\otimes n},|\gamma|=1\) 的形式。

不妨设其量子状态为 \(\displaystyle \otimes_{i=0}^{n-1} (\alpha_i\left|0\right>+\beta_i\left|1\right>),|\alpha_i|^2+|\beta_i|^2=1\)

则第 \(i\) 个 qubit 测量时,落在 \(\left|0\right>\) 的状态仅为 \(|\alpha_i|^2\) ,并不一定是 \(100\%\)

由于其不会化为 \(\gamma\left|0\right>^{\otimes n},|\gamma|=1\) 的形式,故至少一个 \(\beta_i\neq 0\) ,此时 \(|\alpha_i|^2=1-|\beta_i|^2<1\)

因此,若存在某个 qubit 测量时,落在 \(\left|0\right>\) 的概率不为 \(100\%\) ,则为平衡函数。


此时,相信量子计算的优越性已经体现了:

该问题,使用传统算法,需要遍历所有状态的一半以上,即需要计算 \((2^{n-1}+1)\) 次函数值。

而使用量子计算,可以把所有状态叠一起算,值需要计算 \(1\) 次函数值,直接实现并行计算的效果。


附录

那个我当时看不懂的公式如下:

\(\because \left|x,y\oplus f(x)\right>\)

\(\displaystyle ={1\over \sqrt {2^{n+1}}}\sum_{x=0}^{2^n-1}(-1)^{f(x)}\left|x\right>\otimes (\left|0\right>-\left|1\right>)\)

对前 \(n\) 个 qubit 引入 Hadamard 门,其状态如下:

\(\quad \left|\psi\right>\)

\(\displaystyle ={1\over 2^n}\sum_{x=0}^{2^n-1}(-1)^{f(x)}[\sum_{z=0}^{2^n-1}(-1)^{x\cdot z}\left|z\right>]\)

\(\displaystyle ={1\over 2^n}\sum_{z=0}^{2^n-1}[\sum_{x=0}^{2^n-1}(-1)^{f(x)}\cdot (-1)^{x\cdot z}]\left|z\right>\)

其中 \(\displaystyle x\cdot z=\sum_{i=0}^{n-1}x_i\cdot z_i=x_0z_0+x_1z_1+\cdots+x_{n-1}z_{n-1}\)

解释一下公式:我们设使用了 \(H^{\otimes n}\) 以后,\(\displaystyle H^{\otimes n}:\left|x\right>\to{1\over \sqrt {2^n}}\sum_{z=0}^{2^n-1}\alpha_z\left|z\right>\)

现在考虑如何求解 \(\alpha_z\)

\(\left|x\right>\) 的某一位 \(x_i=0\) 时,根据 \(H\left|x_i\right>=\left|+\right>={1\over \sqrt 2}({\left|0\right>+\left|1\right>})\),对 \(z\) 的所有取值产生的所有影响都是乘 \(1\)

\(\left|x\right>\) 的某一位 \(x_i=1\) 时,根据 \(H\left|x_i\right>=\left|-\right>={1\over \sqrt 2}({\left|0\right>-\left|1\right>})\),对 \(z_i=1\) 的取值产生的影响是乘 \((-1)\) ,对 \(z_i=0\) 的取值产生的影响是乘 \(1\)

综合考虑一下:当且仅当 \(x_i=1\wedge z_i=1\) 时,产生的影响是乘 \((-1)\) ,否则都是乘 \(1\) ;即影响为乘上 \((-1)^{x_i\cdot z_i}\)

因此考虑所有位置,则 \(\displaystyle \alpha_z=\prod_{i=0}^{n-1}(-1)^{x_i\cdot z_i}=(-1)^{\displaystyle \sum_{i=0}^{n-1}x_i\cdot z_i}\)

\(\displaystyle \sum_{i=0}^{n-1}x_i\cdot z_i\) 类似向量内积,故直接简记为 \(x\cdot z\)

故直接将结果代入 \(\left|\psi\right>\) 即得到 \(\displaystyle ={1\over 2^n}\sum_{x=0}^{2^n-1}(-1)^{f(x)}[\sum_{z=0}^{2^n-1}(-1)^{x\cdot z}\left|z\right>]\)

对前 \(n\) 个 qubit 测量时,\(\displaystyle p(\left|0\right>^{\otimes n})=|{1\over 2^n}\sum_{x=0}^{2^n-1}(-1)^{f(x)}|^2\)

只有 \(z=0\)\((\left<0\right|^{\otimes n})\cdot \left|z\right>=1\) ,否则均正交,为 \(0\)
故对被求和式代入 \(z=0\)\(\displaystyle {1\over 2^n}\sum_{x=0}^{2^n-1}(-1)^{f(x)}\cdot (-1)^{x\cdot z}={1\over 2^n}\sum_{x=0}^{2^n-1}(-1)^{f(x)}\cdot (-1)^{x\cdot z}={1\over 2^n}\sum_{x=0}^{2^n-1}(-1)^{f(x)}\)

当且仅当 \(f(x)\) 为常函数时,测量概率为 \(1\) ;否则均是小于 \(1\) 的。

并且根据题意,若 \(f(x)\) 不为常函数时,一定为平衡函数,故一半的 \(f(x)=1\) ,一半的 \(f(x)=0\)

因此一半的 \((-1)^{f(x)}=-1\) ,一半的 \((-1)^{f(x)}=1\) , 相加后即为 \(0\)

因此,平衡函数的测量概率应为 \(0\)

所以只要测量到某个 qubit 为 \(0\) 即可直接断定不是常函数,理论上不用多次测量

posted @ 2021-06-02 20:49  JustinRochester  阅读(326)  评论(0编辑  收藏  举报