学习笔记-Deutsch算法

这是第一个表明量子算法可以比经典算法更快的算法。

假设有四个函数,分别记为f_{0}f_{1}f_{2}f_{3}

        对于函数f_{0},输入0和1,输出都是0。

        对于函数f_{1},输入0输出0,输入1输出1。

        对于函数f_{2},输入0输出1,输入1输出0。

        对于函数f_{3},输入0和1,输出都是1。

对于以上4个函数,f_{0}f_{3}是常数函数,因为不管输入什么,都是一样的输出。f_{1}f_{2}是平衡函数,一半的输出是0,一半的输出是1。

问题描述

Deutsch提出的问题是:随机给定一个函数,需要查询多少次可以确定是平衡函数还是常数函数。

在经典分析下,我们需要分别代入0和1才能分辨出该函数是常数函数还是平衡函数,需要两次查询。但是通过量子,只需要一次就可以得出结论。

推导过程

首先构造一个量子门F_{i}

但是仅仅是这个门的话,判断一个函数仍需要2次。因为变化的只有第二个输出,第一个输出没有发生变化。大卫·杜齐使用了以下电子线路,就只需要使用一次就可以得到结果。

学习笔记-Deutsch算法_第1张图片

 这里先输入|0\rangle \otimes |1\rangle,经过Hadamard门,得到如下状态:

\frac{1}{\sqrt{2}}(|0\rangle + |1\rangle )\otimes \frac{1}{\sqrt{2}}(|0\rangle - |1\rangle )=\frac{1}{2}(|00\rangle-|01\rangle+|10\rangle-|11\rangle)

然后经过F_{i}门,量子态变为:

\frac{1}{2}(|0\rangle\otimes |f_{i}(0)\rangle -|0\rangle\otimes |f_{i}(0)\oplus 1\rangle +|1\rangle\otimes |f_{i}(1)\rangle - |1\rangle\otimes |f_{i}(1)\oplus 1\rangle)

整理后得到:

\frac{1}{2}(|0\rangle\otimes (|f_{i}(0)\rangle - |f_{i}(0)\oplus 1\rangle) +|1\rangle\otimes( |f_{i}(1)\rangle - |f_{i}(1)\oplus 1\rangle))

可以看出|f_{i}(0)\rangle - |f_{i}(0)\oplus 1\rangle要么是|0\rangle - |1\rangle,要么是|1\rangle - |0\rangle,取决于f_{i}(0)是1还是0。所以可以得到:|f_{i}(0)\rangle - |f_{i}(0)\oplus 1\rangle=(-1)^{f_{i}(0)}(|0\rangle - |1\rangle)|f_{i}(1)\rangle - |f_{i}(1)\oplus 1\rangle=(-1)^{f_{i}(1)}(|0\rangle - |1\rangle)

把这两个式子代入后整理得到:

     \frac{1}{2}(|0\rangle\otimes (-1)^{f_{i}(0)}(|0\rangle - |1\rangle)+|1\rangle\otimes (-1)^{f_{i}(1)}(|0\rangle - |1\rangle))

=\frac{1}{2}( (-1)^{f_{i}(0)}|0\rangle\otimes(|0\rangle - |1\rangle)+(-1)^{f_{i}(1)}|1\rangle\otimes (|0\rangle - |1\rangle))

=\frac{1}{2}( (-1)^{f_{i}(0)}|0\rangle+(-1)^{f_{i}(1)}|1\rangle)\otimes (|0\rangle - |1\rangle))

=\frac{1}{\sqrt{2}}( (-1)^{f_{i}(0)}|0\rangle+(-1)^{f_{i}(1)}|1\rangle)\otimes \frac{1}{\sqrt{2}}(|0\rangle - |1\rangle))

可以看出两个量子比特是非纠缠的,并且顶部的量子比特有以下形式:

\frac{1}{\sqrt{2}}( (-1)^{f_{i}(0)}|0\rangle+(-1)^{f_{i}(1)}|1\rangle)

对于函数f_{0},输入0和1,输出都是0,那么量子比特为:\frac{1}{\sqrt{2}}(|0\rangle + |1\rangle)

对于函数f_{1},输入0输出0,输入1输出1,那么量子比特为:\frac{1}{\sqrt{2}}(|0\rangle - |1\rangle)

对于函数f_{2},输入0输出1,输入1输出0,那么量子比特为:-\frac{1}{\sqrt{2}}(|0\rangle - |1\rangle)

对于函数f_{3},输入0和1,输出都是1,那么量子比特为:-\frac{1}{\sqrt{2}}(|0\rangle + |1\rangle)

让顶部的量子比特经过Hadamard门:对于函数f_{0},量子比特为:|0\rangle;对于函数f_{1},量子比特为:|1\rangle;对于函数f_{2},量子比特为:-|1\rangle;对于函数f_{3},量子比特为:-|0\rangle

所以最后对顶部量子比特进行测量,如果得到的是0,那么i是0或者3,是常数函数;如果得到的是1,那么i就是1或者2,是平衡函数。

小结

虽然该算法没有实际的应用,但是它证明了量子算法比经典算法更快。

 

你可能感兴趣的:(学习,算法)