量子计算(10)量子算法2:Deutsch-Jozsa算法
创始人
2025-05-31 18:03:28
0

        又到了一周一篇的量子计算啦!全体起立respect!

        前言:本篇文章研究的算法,相当无聊。在日常生活中基本上用不到,但是这个算法却能显著的体现出量子计算算法比经典算法更加快速这一特点。这个算法就好比C语言里的hello world、人工智能里的数字图像识别,亦或者代表植物大战僵尸里的旗帜僵尸。并不代表着Deutsch-Jozsa算法多么有用,只是代表恭喜你,你入了量子计算的门了!

目录

1、单变量平衡函数与常函数        

2、Deustch算法思想步骤


1、单变量平衡函数与常函数        

        对于单变量函数f{0,1}\rightarrow {0,1},即变量与因变量均只能为0或者1的函数。我们把具有以下类型真值表的函数,称之为常函数:

xf1(x)
00
10

        或者:

xf2(x)
01
11

        即不管输入怎么样,输出只能全为1或者全为0的函数为常函数。它要么善良的很纯粹,要么坏的很纯粹。

        我们把具有以下类型的真值表的函数,称为平衡函数:

xf3(x)
00
11

        或者:

xf4(x)
01
10

        即输出里面有一半是1有一半是0,是一个亦正亦邪的存在。

        对于经典算法来说,我们需要两次测试,才能得出,这是一个怎样的函数。但是,量子计算就特别强,它只需要一次测试,就能得出来。欲知如何操作,请看下文:

2、Deustch算法思想步骤

        还记得上篇文章,我们说过,量子计算里面的变换都是酉变换,是一个可逆电路,对平衡函数,显然满足,但是对于常函数,我们必须进行改造。考考大家,如何对此函数进行改造?

         答案如上图,怎么样,有没有想到呢?由这部分电路一起构成下文的Uf,我们令F=y\oplusf(x),我们还是列一个真值表:

xyx,F1(x)x,F2(x)x,F3(x)x,F4(x)
000010001
0101000100
1010111110
1111101011

        满足可逆性!

        我们想要一次就能检测出来,说明我们的输入必然为一个叠加态(有|0>也有|1>),那么我们很容易想到H门。至于输出结果的辅助位,暂时还不清楚到底要怎么设计,暂且就让它为|0>态吧。

         所以我们暂时能得到上面这张图。我们逐步分析一下\psi _{1}\psi _{2}的状态。容易知道\psi _{1}状态下,量子态为\frac{ |00>+|01>}{\sqrt{2}},而\psi _{2}态为\frac{|F(0)0>+|F(1)1>}{\sqrt{2}}

        这个时候就有读者会说:“好嘛,亏我还这么相信小编,小编的这波操作下来,让我一脸懵逼,这有啥区别啊?还不是判断不出来平衡函数与常函数?”

        欸?此言差矣?至少我们踏出来了正确的一步。我们仔细想想,之所以没有差别,原因在于什么?显然是在于我们没有修改的|0>态啊。但是,如果只改为|1>态,照样一点用都没有,会与|0>态时一样,没有意义。于是,我们仍然选择用一个叠加态,加一个H门,看看对解决问题有没有帮助。

        而且我们也知道,两个H门加在一起,就会变成一根线:啥也不是。于是我们再添加一个H门,把电路的量子态变简单一点。

        

 改造的结果如上图,我们还是分析三个位置的量子态。

位置量子态
\psi _{1}\frac{|0>+|1>}{\sqrt{2}} \otimes \frac{|0>+|1>}{\sqrt{2}}
\psi _{2}\frac{|0\oplus f(x)>+|1\oplus f(x)>}{\sqrt{2}} \otimes \frac{|0>+|1>}{\sqrt{2}}
\psi _{3}\frac{|f(x)>+|\overline{f(x)}>}{\sqrt{2}} \otimes |0>

        其中x为0或者1,如此一来,确实能产生差别,当为常函数的时候,高位为|+>态,而为平衡函数的时候高位为一个纯态,可以通过检测高位|0>与|1>的百分比,就能知道这到底是什么函数。(常函数各为50%,平衡函数二者中一个为100%另一个为0%)。

        虽然我们已经能够判断出来了,但这还不是真正的Deutsch算法,真正的Deutsch算法电路如下图,仅仅只有|0>与|1>之差:

 但是这个改变却能让算法更快,请大家仔细观察下面这个式子,最后一步进行规整。

 我们分别分析一下\psi _{1}\psi _{2}以及\psi _{3}的状态:

位置状态
\psi _{1}\frac{|0>-|1>}{\sqrt{2}}\otimes \frac{|0>+|1>}{\sqrt{2}}
\psi _{2}自己算,见下面的分析
\psi _{3}自己算

最后的差别,就体现在了这一个0与1上边。在\psi _{2}状态下,如果低位为|0>,那么高位为\frac{|f(0)>-|\overline{f(0)}>}{\sqrt{2}};如果低位为|1>,那么高位为\frac{|f(1)>-|\overline{f(1)}>}{\sqrt{2}}。如果为常函数的话,低位|0>时高位为(-1)^{f(0)}|\, ->,低位为|1>时高位为(-1)^{f(1)}|\, ->,综合一下,状态为\frac{|0>-|1>}{\sqrt{2}} \otimes \frac{|0>+|1>}{\sqrt{2}},如果为平衡函数的话状态为\frac{|0>-|1>}{\sqrt{2}} \otimes \frac{|0>-|1>}{\sqrt{2}},到\psi _{3}位置时,低位的\frac{|0>+|1>}{\sqrt{2}}又会转化为|0>态,而\frac{|0>-|1>}{\sqrt{2}}会转化为|1>态差异就会产生在低位。

        是不是觉得很混乱,小编换一种方式来讲。

        在\psi _{1}状态下\frac{|0>-|1>}{\sqrt{2}}\otimes \frac{|0>+|1>}{\sqrt{2}}=\frac{1}{2} (|00>-|10>+|01>-|11>),对吧?

        而低位又会控制高位,即|00>在经过Uf后会变为|(0\oplusf(0)) ,0>,同理|10>会变为|(1\oplusf(0)) ,0>,

        |01>会变为|(0\oplusf(1)) ,1>,|11>会变为|(1\oplusf(1)) ,1>。而被|0>控制的结果就是它本身,被|1>控制的结果就是取反,对吧?

        所以我们又可以化简,即|00>在经过Uf后会变为|f(0) ,0>,同理|10>会变为|(\overline{f(0)} ,0>, |01>会变为|f(1) ,1>,|11>会变为|\overline{f(1)} ,1>。

        当f(0)=f(1)时,若均为0,则\psi _{2}位置与\psi _{1}位置一模一样,\psi _{3}的低位为|0>

        若均未1,则\psi _{2}位置为\frac{1}{2} (|10>-|00>+|11>-|01>),则\psi _{3}的低位为-|0>

        当f(0)=1,f(1)=0时,\psi _{2}位置为\frac{1}{2} (|10>-|00>+|01>-|11>),则\psi _{3}的低位为-|1>

        当f(0)=0,f(1)=1时,\psi _{2}位置为\frac{1}{2} (|00>-|10>+|11>-|01>),则\psi _{3}的低位为|1>

综上所述,只要是常函数,高位检测出来的均为|0>,只要是平衡函数,高位检测出来的均为|1>

        好的,本期的量子算法课就到这里啦,感兴趣的小伙伴们请继续关注我!

相关内容

热门资讯

A股玻尿酸巨头出手!2700字... 医美龙头巨子生物“成分争议”风波持续发酵。日前,美妆博主大嘴博士(香港大学化学博士郝宇)发文,质疑巨...
计算机组成原理实验1---运算...     本实验为哈尔滨工业大学计算机组成原理实验,实验内容均为个人完成,...
3 ROS1通讯编程提高(1) 3 ROS1通讯编程提高3.1 使用VS Code编译ROS13.1.1 VS Code的安装和配置...
前端-session、jwt 目录:   (1)session (2&#x...
前端学习第三阶段-第4章 jQ... 4-1 jQuery介绍及常用API导读 01-jQuery入门导读 02-JavaScri...
EL表达式JSTL标签库 EL表达式     EL:Expression Language 表达式语言     ...
数字温湿度传感器DHT11模块... 模块实例https://blog.csdn.net/qq_38393591/article/deta...
【内网安全】 隧道搭建穿透上线... 文章目录内网穿透-Ngrok-入门-上线1、服务端配置:2、客户端连接服务端ÿ...
【Spring Cloud A... 文章目录前言Metadata元数据ClassMetadataSpring中常见的一些元注解Nacos...
React篇-关于React的... 一.简介1.介绍用于构建用户界面的 JavaScript 库2.创建项目(1)手动创建Documen...
win7 Pro 英文版添加中... win7pro x64英文版添加中文语言包1、下载语言包,并解压成lp.cab,复制到...
Android开发-Andro... 01  Android UI 1.1  UI 用户界面(User Interface,...
基于springboot教师人... 基于springboot教师人事档案管理系统【源码+论文】 开发语言:Jav...
编写软件界面的方式 本文重点解决如下问题:编写软件的界面有哪几种方式?通常情形下࿰...
keil调试专题篇 调试的前提是需要连接调试器比如STLINK。 然后点击菜单或者快捷图标均可进入调试模式。 如果前面...
GO语言小锤硬磕十三、数组与切... 数组用来保存一组相同类型的数据,go语言数组也分一维数组和多维数组。 直接上代码看一下...
三级数据库备考--数据库应用系... 1.数据库应用系统设计包括概念设计、逻辑设计、物理设计3个步骤,每个步骤的设计活动按照...
prometheus数据持久化... https://segmentfault.com/a/1190000015710814 promet...
孩子用什么样的灯对眼睛没有伤害... 现代社会高速发展,越来越多的人开始重视身体健康,尤其是很多家长ÿ...
微软Bing GPT支持AI绘... 我想要一张图片:大象、珊瑚、火山、云朵我想要一张图片:亚特兰蒂斯...