学习笔记-Deutsch-Jozsa算法

问题描述

Deutsch算法考虑了只有一个变量的函数(参考Deutsch算法),Deutsch-Jozsa算法进行了推广,可运用于n个变量的函数。

推导过程

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

公式推导

1.经过第一次Hadamard变换:

|\varphi _{1} \rangle=\sum_{x\in (0,1)^{n}}\frac{1}{\sqrt{2}}|x \rangle(\frac{|0 \rangle-|1 \rangle}{\sqrt{2}})

2.对|\varphi_{1} \rangle进行F运算:

|\varphi _{2} \rangle=\sum_{x\in (0,1)^{n}}\frac{(-1)^{f(x)}}{\sqrt{2^{n}}}|x \rangle

3.丢弃最后一位,对上面的量子比特进行Hadamard变换:

先算H门作用于|x \rangle=|x_{1} \rangle|x_{2} \rangle \cdots |x_{n} \rangle上:

H^{\otimes n}\cdot |x \rangle=H|x_{1} \rangle\otimes H|x_{2} \rangle\otimes \cdots \otimes H|x_{n} \rangle

                 =\frac{1}{\sqrt{2^{n}}}\sum_{y\in (0,1)}(-1)^{x_{1}\cdot y_{1}} |y_{1} \rangle \cdots \sum_{y\in (0,1)}(-1)^{x_{n}\cdot y_{n}}|y_{n} \rangle

                 =\frac{1}{\sqrt{2^{n}}}\sum_{y\in (0,1)}(-1)^{x_{1}\cdot y_{1}+\cdots+x_{n}\cdot y_{n} } |y\rangle

                 =\frac{1}{\sqrt{2^{n}}}\sum_{y\in (0,1)}(-1)^{x\cdot y } |y\rangle                                这里的  (x\cdot y=\sum_{i=1}^{n}x_{i}y_{i})

所以:

|\varphi _{3} \rangle=|\varphi _{2} \rangle\cdot H^{\otimes n}

        =\frac{1}{2^{n}}\sum_{x\in (0,1)^{n}} \sum_{y\in (0,1)^{n}}(-1)^{f(x)+xy}|y \rangle

可以看看本源量子的文档中心对该算法的讲解:https://qcloud.originqc.com.cn/documentShow?label=1&openId=3677&pageId=3683

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