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\) 即可直接断定不是常函数,理论上不用多次测量