量子计算(二十二):Grover算法

这篇具有很好参考价值的文章主要介绍了量子计算(二十二):Grover算法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

grover算法,量子计算,量子计算,Grover算法

文章目录

Grover算法

一、什么是搜索算法 

二、怎么实现Grover搜索算法


Grover算法

一、什么是搜索算法 

举一个简单的例子,在下班的高峰期,要从公司回到家里,开车走怎样的路线才能够耗时最短呢?最简单的想法,当然是把所有可能的路线一次一次的计算,根据路况计算每条路线所消耗的时间,最终可以得到用时最短的路线,即为最决路线,这样依次的将每一种路线计算出来,最终对比得到最短路线。搜索的速度与总路线数N相关,记为O(N),而采用量子搜索算法,则可以以O(sqrt(N))的速度进行搜索,要远快于传统的搜索算法。

grover算法,量子计算,量子计算,Grover算法

二、怎么实现Grover搜索算法

首先,先化简一下搜索模型,将所有数据存在数据库中,假设有n个量子比特,用来记录数据库中的每一个数据的索引,一共可以表示2个数据,记为N个;希望搜索得到的数据有M个,为了表示一个数据是否是搜索的结果,建立一个函数:

grover算法,量子计算,量子计算,Grover算法

其中x0为搜索目标的索引值,也即是说,当搜索到目标时,函数值f(x)值为1,如果搜索的结果不是目标时,f(x)值为0。

假设有一个量子Oracle可以识别搜索问题的解,是别的结果通过Oracle的一个量子比特给出。可以将Oracle定义为:

grover算法,量子计算,量子计算,Grover算法
其中|q〉是一个结果寄存器,⊕是二进制加法。通过Oracle可以实现,当搜索的索引为目标结果时,结果寄存器翻转;反之,结果寄存器值不变;从而可以通过判断结果寄存器的值,来确定搜索的对象是否为目标值。

Oracle对量子态的具体操作是什么样的呢?同D-J算法相似,先将初态制备在grover算法,量子计算,量子计算,Grover算法态上,grover算法,量子计算,量子计算,Grover算法为查询寄存器,|1〉为结果寄存器。经过Hardmard门操作后,可以将查询寄存器的量子态,变为所有结果的叠加态;也就是说,经过了Hardmard 门,就可以得到所有结果的索引,而结果寄存器则变为grover算法,量子计算,量子计算,Grover算法,再使其通过Oracle,可以对每一个索引都进行一次检验,如果是目标结果,则将答案寄存器的量子态进行0、1翻转,即答案寄存器变为:

grover算法,量子计算,量子计算,Grover算法
而查询寄存器不变;但当检验的索引不是结果时,寄存器均不发生改变。因此,Oracle可以换一种表示方式:

grover算法,量子计算,量子计算,Grover算法

其中,|x〉是查询寄存器的等额叠加态中的一种情况。

如上述所知,Oracle的作用,是通过改变了解的相位,标记了搜索问题的解。

现在,将搜索问题的解通过相位标记区分出来,那么如何能够将量子态的未态变已标记出的态呢?

将问题换一种思路进行考虑,当查询寄存器由初态经过Hardmard门后,会变为所有可能情况的等额善加态;也就是说,它包含着所有搜索问题的解与非搜索问题的解。可以将这个态记为:

grover算法,量子计算,量子计算,Grover算法

将所有非搜索问题的解定义为一个量子态|α〉,其中grover算法,量子计算,量子计算,Grover算法代表着x上所有非搜索问题的解的和,记为:

grover算法,量子计算,量子计算,Grover算法

显然,|β〉为最终的量子态,而且|α〉和|β〉相互正交。利用简单的代数运算,就可以将初态|ψ〉重新表示为:

grover算法,量子计算,量子计算,Grover算法

初始态被搜索问题的解的集合和非搜索问题的解的集合重新定义,也即是说,初态属于|α〉与|β〉张成的空间。因此,可以用平面向量来表示这三个量子态,如下图所示:

grover算法,量子计算,量子计算,Grover算法

那么,Oracle作用在新的表示方法下的初态会产生怎样的影响呢?Oracle的作用是用负号标记搜索问题的解,所以,相当于将|β〉内每一个态前均增加一个负号,将所有的负号提取出来,可以得到:

grover算法,量子计算,量子计算,Grover算法

对应在平面向量中,相当于将|ψ〉做关于|α〉轴的对称,但仅有这一种操作是无法将量子态从|ψ〉变为|β〉,还需要另一种对称操作。

第二种对称操作,是将量子态关于|ψ〉对称的操作,这个操作由三个部分构成:

  1. 将量子态经过一个Hardmard门;
  2. 对量子态进行一个相位变换,将grover算法,量子计算,量子计算,Grover算法态的系数保持不变,将其他的量子态的系数增加一个负号,相当于grover算法,量子计算,量子计算,Grover算法西变换算子;
  3. 再经过一个Hardmard门。

这三步操作的数学表述为:

grover算法,量子计算,量子计算,Grover算法

上述过程涉及到复杂的量子力学知识,这三部分的操作,只是为了实现将量子态关于|ψ〉对称。如果想了解为什么这三步操作可以实现,可以阅读关于量子计算相关书籍进一步理解。

前面介绍的两种对称操作,合在一起称为一次Grover迭代。假设初态|ψ〉与|α〉可以表示为:

grover算法,量子计算,量子计算,Grover算法

很容易得到:

grover算法,量子计算,量子计算,Grover算法

可以从几何图像上看到,每一次Grover选代,可以使量子态逆时针旋转,经历了k次Grover送代,末态的量子态为:

grover算法,量子计算,量子计算,Grover算法

因此,经过多次选代操作,总可以使末态在|β〉态上概率很大,满足精确度的要求。经过严格的数学推导,可证明,选代的次数R满足:

grover算法,量子计算,量子计算,Grover算法

参考路线图:

grover算法,量子计算,量子计算,Grover算法文章来源地址https://www.toymoban.com/news/detail-786710.html


  • 📢博客主页:https://lansonli.blog.csdn.net
  • 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!
  • 📢本文由 Lansonli 原创,首发于 CSDN博客🙉
  • 📢停下休息的时候不要忘了别人还在奔跑,希望大家抓紧时间学习,全力奔赴更美好的生活✨

到了这里,关于量子计算(二十二):Grover算法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 云计算实战系列二十二(Python编程I)_pypy 扫描依赖包(1)

    先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7 深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前! 因此收集整理了一份《2024年最新网络安全全套学习资料》

    2024年04月22日
    浏览(24)
  • C++学习笔记(二十二)

    概念: 重载函数调用操作符的类,其对象常称为函数对象 函数对象使用重载的 () 时,行为类似函数调用,也叫仿函数 本质: 函数对象(仿函数)是一个类,不是一个函数 特点: 函数对象在使用时,可以像普通函数那样调用,可以有参数,可以有返回值 函数对象超出普通函数

    2024年01月18日
    浏览(50)
  • 第二十二章 光照贴图

    光照贴图过程将预先计算场景中静态物体表面的亮度,并将结果存储在称为“光照贴图”的纹理中供以后使用。光照贴图可以包含直接光照和间接光照,以及阴影效果。但是,烘焙到光照贴图中的数据无法在运行时更改,这就是为什么移动静态物体后,阴影不会跟随移动。接

    2024年02月02日
    浏览(35)
  • opencv_c++学习(二十二)

    图中左侧为边缘检测的效果,中间为图像经过二值化的效果,右图为凸包检测效果。 points:输入的2D点集。 hull:输出凸包的顶点。 clockwise:方向标志,当参数为true时,凸包顺序为顺时针方向,否则为逆时针方向。 returnPoints:输出数据的类型标志,当参数为true时第二个参数输出的

    2024年02月06日
    浏览(55)
  • 设计模式(二十二)模板方法

    定义一个操作中算法的框架,而将一些步骤延迟到子类中。模板方法模式使得子类不改变一个算法的结构即可重定义该算法的特定步骤。模板方法是一种类行为型模式 模板方法模式结构比较简单,其核心是抽象类和其中的模板方法的设计,包含以下两个角色: 1、AbstractClas

    2024年01月22日
    浏览(26)
  • Android——数据存储(二)(二十二)

    1.1 知识点 (1)了解SQLite数据库的基本作用; (2)掌握数据库操作辅助类:SQLiteDatabase的使用; (3)可以使用命令操作SQLite数据库; (4)可以完成数据库的CRUD操作; (5)掌握数据库查询及Cursor接口的使用。 1.2 具体内容 在Android当中,本身提供了一种微型的嵌入式数据库

    2024年02月09日
    浏览(27)
  • rosalind练习题二十二

    # Problem # After identifying the exons and introns of an RNA string, we only need to delete the introns and concatenate the exons to form a new string ready for translation. # Given: A DNA string s (of length at most 1 kbp) and a collection of substrings of s acting as introns. All strings are given in FASTA format. # Return: A protein string resulting from

    2024年02月08日
    浏览(30)
  • 第二十二章 Unity 光照贴图

    光照贴图过程将预先计算场景中静态物体表面的亮度,并将结果存储在称为“光照贴图”的纹理中供以后使用。光照贴图可以包含直接光照和间接光照,以及阴影效果。但是,烘焙到光照贴图中的数据无法在运行时更改,这就是为什么移动静态物体后,阴影不会跟随移动。接

    2024年02月04日
    浏览(30)
  • (二十二)Kubernetes系列之dashboard

    1.下载模板文件 wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml 修改service模板,新增type:NodePot和nodePort:30443 2.部署 kubectl apply -f recommended.yaml 3.查看pod和服务 kubectl get pods  -n kubernetes-dashboard 4.查看service kubectl get svc -n kubernetes-dashboard 5.访问路径查看是否

    2024年01月21日
    浏览(33)
  • STP和MTP(第二十二课)

    2、如何实现 1)在MSTP网络种,引入了域的概念,称为MST域 2)每一个MST域中包含一个或多个“生成树”称为“实例” 3)每个“实例生成树”都可以绑定vlan,实现vlan数据流的负载分担/负载均衡 4)默认情况下,所有的vlan都属于“实例树0:即:instance 0” 5)不同的“实例树”、

    2024年02月15日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包