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

news2024/11/25 11:38:08

文章目录

Grover算法

一、什么是搜索算法 

二、怎么实现Grover搜索算法


Grover算法

一、什么是搜索算法 

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

二、怎么实现Grover搜索算法

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

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

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


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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

很容易得到:

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

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

参考路线图:

 


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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/168126.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Radius vector (半径矢量)

Radius vector引言定义引言 今天给大家介绍一下什么是Radius vector。 定义 从圆心到当前位置的矢量r⃗\vec{r}r。它也被叫做位置向量。 其中,O表示圆心,这里我们称之为原点位置,A表示当前位置。因此矢量OA⃗\vec{OA}OA是一个Radius vec…

VsCode简单使用,配置c/c++编译环境,个人感受

整体感觉 本质就是一个加强的文本编译器,增加了终端和控制台,可以程序交互,相当于一个IDE的外部框架。和sublime有一定相似性,但界面和插件安装方面远远优于sublime。应该说这是一种为编译语言设计的显示框架,真正起作…

代码随想录算法训练营第二十天 二叉树 java : 654.最大二叉树 617.合并二叉树 700.二叉搜索树中的搜索 98.验证二叉搜索树

LeetCode 654.最大二叉树 题目讲解 思路 二叉树的根是最大值左子树最大值左边部分构造的最大二叉树右子树最大值是右边部分构造的最大二叉树 AC代码 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode ri…

可视化监控告警-grafana

需求背景 根据我们的业务背景,需要监控3个纬度。 Iaas层:即腾讯云的基础设施CVMPaas层:即使用的腾讯云Paas服务,各种中间件Saas层:即我们本身的服务指标监控。 腾讯云监控,可以覆盖1,2场景, …

HarmonyOS/OpenHarmony应用开发-ArkTS的声明式开发范式

基于ArkTS的声明式开发范式的方舟开发框架是一套开发极简、高性能、跨设备应用的UI开发框架,支持开发者高效的构建跨设备应用UI界面。 基础能力 使用基于ArkTS的声明式开发范式的方舟开发框架,采用更接近自然语义的编程方式,让开发者可以直…

「自控原理」2.2 控制系统的复域数学模型

本节引入控制模型的复域模型——传递函数,并介绍其构建和使用方法。 本节介绍了几种常见环节的传递函数 文章目录传递函数的定义传递函数的标准形式首1标准型尾1标准型传递函数的性质传递函数的局限性典型环节的传递函数控制系统的复域数学模型是传递函数。拉普拉斯…

深入浅出java并发编程(Thread)

快速了解 package java.lang;public class Thread implements Runnable {}Thread是lang包下的一个类,实现了Runnable接口。源码如下 FunctionalInterface public interface Runnable {public abstract void run(); }Runnable是一个函数式接口不会抛出异常没有返回…

Minecraft 1.19.2 Fabric模组开发 05.动画效果物品

我们本次在Fabric中实现一个具有动画效果的物品,本次演示的模型代码均在文末给出 效果演示效果演示效果演示 首先,请确保你的开发包中引入了geckolib依赖,相关教程请参考:Minecraft 1.19.2 Fabric模组开发 03.动画生物实体 1.首先我们要使用…

nvidia显卡编码并发session限制破解

对于服务器型显卡(比如:Tesla T4、NVIDIA A100等),nvidia显卡编码并发session路数没有限制,对于消费型显卡(比如:GeForce RTX 3070、GeForce RTX 3080等),nvidia显卡编码并发session…

Odoo 16 企业版手册 - 财务管理之会计仪表板

会计仪表板 财务管理是任何类型业务不可避免的一部分。无论您经营的业务规模或类型如何,如果财务流程没有得到适当的管理和监控,您将在未来面临严重的财务失败。手动管理所有会计操作不是一个好主意,因为它需要大量的时间和精力。在人工会计管…

esp32 Python开发快速入门--环境配置以及点亮LED灯

esp32 Python开发快速入门--环境配置以及点亮LED灯1. 环境配置2. 固件的烧录3 下面开始点灯1. 环境配置 需要配置两个环境, 开发的IDE Thonny 链接如下 https://thonny.org/ 安装串口助手,芯片是通过串口来实现通信的,需要驱动,…

Openresty宏观概述笔记

最近由于项目需要学习了安全代理的相关知识,其实刚开始的时候是非常需要一个入门的介绍,大概说明下这个到底是个什么东西,能干啥,简单的原理是什么,为此我记录下我看完用完的心得,记录成笔记。 一般我们代码…

Nginx基础01:安装和基本使用

背景Nginx是一个高性能的Web服务器,几乎所有的Web服务都需要使用Nginx。关于Nginx的功能特性这里不再赘述,让我们从0开始,了解Nginx的基本用法,学习它在Web服务中都有哪些应用。本文主要介绍Nginx的安装以及基础的控制命令。Nginx…

讨论| 电视行业已是落日夕阳?

如今,随着移动设备、互联网技术的发展,电视似乎逐渐淡出人们的视野。近期,与电视相关的热门讨论似乎都是对于各大视频平台的会员投屏制度,这似乎更加减少了大众对于电视的使用欲望。那么电视领域是否真的趋于淘汰了呢?…

PASCAL VOC 数据集的标注格式

PASCAL VOC 数据集的标注格式 PASCAL VOC 挑战赛 ( **The PASCAL Visual Object Classes )是一个世界级的计算机视觉挑战赛。 PASCAL的全称是Pattern Analysis, Statistical Modelling and Computational Learning,很多优秀的计算机视觉模型…

区块链知识系列 - 系统学习EVM(一)

EVM有一个基于栈的架构,在一个栈中保存了所有内存数值。EVM的数据处理单位被定义为256位的“字”(这主要是为了方便处理哈希运算和椭圆曲线运算操作) 这里所说的内存数值是指那些EVM字节码运行所需要的输入、输出参数数据和智能合约程序运行中…

拉伯证券|锂离子动力电池有哪些优缺点?锂离子电池的优缺点详解

锂离子动力电池是20世纪开发成功的新型高能电池。这种电池的负极是石墨等资料,正极用磷酸铁锂、钴酸锂、钛酸锂等。70年代进入实用化。因其具有能量高、电池电压高、工作温度规模宽、贮存寿命长等优点,已广泛应用于军事和民用小型电器中。 锂离子动力电池…

jvm垃圾回收笔记

JVM基础知识笔记 1. 垃圾回收相关算法 标记清除-标记整理-复制 这三个看上面的文章 1.1 分代收集算法 将不同生命周期的对象采用不同的收集方式,以便提高回收效率,一般是将Java堆分为新生代和老年代,这样可以根据各个年代的特点使用不同的…

拉伯证券|A股涨势趋缓,个股分化,北向资金继续“买买买”

今天上午,A股商场涨势趋缓,主要指数涨跌互现。 个股方面也现较大分解,接连涨停股和接连大幅跌落股同时呈现。 值得注意的是,作为近期最为坚定买入A股的力量之一,北向资金今天上午继续“买买买”,上午半个交…

Wider Face+YOLOV7人脸检测

1 Wider Face标注格式转成YOLO格式1.1 Wider Face标注介绍The format of txt ground truth. File name Number of bounding box x1, y1, w, h, blur, expression, illumination, invalid, occlusion, pose0--Parade/0_Parade_marchingband_1_849.jpg 1 449 330 122 149 0 0 0 0…