Grover算法——量子搜索算法

        假设N个数据中符合条件的数据有M个,则量子搜索算法的复杂度为O(\sqrt{\frac{N}{M}}),远小于经典算法的复杂度。

黑箱

        下面以N=2为例,介绍黑箱如何标记符合条件的数据。N=2意味着只有两个数据,可以用0和1来表示这两个数据,也就只需要一个量子比特表示。假设f(x):x\in {(0,1)}\rightarrow y\in(0,1)是一个函数,若x是符合条件的数据,则f(x) = 1;若x不是符合条件的数据,则f(x) = 0。定义黑箱O具有如下功能:

                                                ​​​​​​​        ​O(|x\rangle|y\rangle) = |x\rangle|f(x)\oplus y\rangle                                         (1)

其中|y\rangle为辅助量子比特。 此处,不用|y\rangle=0

                                                                  |y\rangle = \frac{|0\rangle-|1\rangle}{2}                                                          (2)

                            O(|x\rangle\frac{|0\rangle-|1\rangle}{2}) = |x\rangle\frac{|0\oplus f(x)\rangle-|1\oplus f(x)\rangle}{2}=(-1)^{f(x)}|x\rangle(\frac{|0\rangle-|1\rangle}{2})             (3)

黑箱作用前后, |y\rangle的状态不变,通常可以省略,则黑箱的作用记为

                                                       O(|x\rangle) = |(-1)^{f(x)}|x\rangle

当x是不符合条件的数据,即f(x)为0时,O(|x\rangle) = |x\rangle|x\rangle没变,就是未被标记;当x是符合条件的数据,则O(|x\rangle) = -|x\rangle|x\rangle变成-|x\rangle,也就是负号把|x\rangle标记出来。

Grover算法

        Grover量子搜索算法是一个迭代的过程,主要思路是从初始状态出发,重复进行多次变换,让符合条件的解的振幅越来越大,最后进行测量,就能以很高概率得到正确的结果。

Grover算法共需要n+1个量子比特,初态为|\phi_{0} \rangle=|0\rangle^{\otimes (n+1)}前n个量子比特组成第一个寄存器,用于存储元素编号;另外1个构成第二寄存器,是辅助量子比特。Grover算法步骤如下:

        第一步:使用n个H门作用于第一寄存器演化出元素编号的叠加态,并使用X门和H门作用于第二寄存器演化出量子态\frac{|0\rangle-|1\rangle}{2}|\phi_{0} \rangle演化为

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        |\phi_{1} \rangle=\frac{1}{\sqrt{n}}\sum_{x=0}^{N-1}|x\rangle(\frac{|0\rangle-|1\rangle}{\sqrt{2}})

        第二步:重复算子G以增大满足条件的解的概率,具体的重复次数之后说,每个算子G可以分为以下四步,量子线路图如图。

(1)使用黑箱算子O将符合条件的解的符号取反;

(2)使用H^{\bigotimes n}作用于第一寄存器;

(3)使用条件相移算子2|0\rangle^{\bigotimes n}\langle0|^{\bigotimes n}-I,将|0\rangle以外的基态|1\rangle|2\rangle,...,|N-1\rangle取反;

(4)使用H^{\bigotimes n}作用于第一寄存器;

 # Display inline
from qiskit import QuantumCircuit, ClassicalRegister, QuantumRegister, transpile
from qiskit_aer import Aerimport numpy as np
from qiskit.visualization import plot_histogramcircuit = QuantumCircuit(3,3)#第一步
circuit.x(2)
for i in range(3):circuit.h(i)#第二步
circuit.ccx(0,1,2)#第三步
for i in range(2):circuit.h(i)
for i in range(2):circuit.x(i)
circuit.cz(0,1)
for i in range(2):circuit.x(i)
for i in range(2):circuit.h(i)#测量
circuit.measure(0,0)
circuit.measure(1,1)#绘制线路图
circuit.draw(output = 'mpl')

仿真结果

线路的最后测量,可以看出011的出现概率为1,需要说明的是测量结果011分别代表量子比特q_{2}q_{1}q_{0}的值,q_{2}其实没有被测量,显示默认值0,q_{1}q_{0}显示为11,成功找到(1,1)

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

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

相关文章

Ubuntu24.04网络异常与应对方案记录

PS: 参加过408改卷的ZJU ghsongzju.edu.cn 开启嘲讽: 你们知道408有多简单吗,操作系统真实水平自己知道就行~~ Requested credits of master in UWSC30,in ZJU24,domestic master is too simple ubuntu安全软件 在 U…

智能的编织:C++中auto的编织艺术

在C的世界里,auto这个关键字就像是一个聪明的助手,它能够自动帮你识别变量的类型,让你的代码更加简洁和清晰。下面,我们就来聊聊auto这个关键字的前世今生,以及它在C11标准中的新用法。 auto的前世 在C11之前&#x…

Spark的Standalone集群环境安装

一.简介 与MR对比: 概念MRYARNSpark Standalone主节点ResourceManagerMaster从节点NodeManagerWorker计算进程MapTask,ReduceTaskExecutor 架构:普通分布式主从架构 主:Master:管理节点:管理从节点、接…

cache(一)基本概念

在知乎发现一份不错得学习资料 请教CPU的cache中关于line,block,index等的理解? PPT 地址 https%3A//cs.slu.edu/%7Efritts/CSCI224_S15/schedule/chap6-cache-memory.pptx 课程主页 https://cs.slu.edu/~fritts/CSCI224_S15/schedule/ 文章目录 1. cache概念2. cac…

前端CSS3 渐变详解

文章目录 CSS3 渐变详解一、引言二、CSS3 渐变基础1、线性渐变1.1、基本线性渐变1.2、改变渐变方向 2、径向渐变2.1、基本径向渐变2.2、设置径向渐变的中心 三、高级渐变技巧1、重复渐变1.1、重复线性渐变1.2、重复径向渐变 四、总结 CSS3 渐变详解 一、引言 在现代网页设计中…

ubuntu下aarch64-linux-gnu(交叉编译) gdb/gdbserver(二)

ubuntu下aarch64-linux-gnu(交叉编译) gdb/gdbserver(二) 本教程作为gdb/gdbserver编译安装教程的一个补充,教会大家如何使用gdb/gdbserver进行远程调试。 如上图所示,我们需要将编译后的gdbserver上传至目标设备,其上…

(65)使用RLS自适应滤波器进行信道均衡的MATLAB仿真

文章目录 前言一、仿真说明二、码间串扰、色散、与频率选择性衰落1. 码间串扰(ISI)2. 信道的色散与码间串扰3. 减少ISI的方法 三、MATLAB仿真代码四、仿真结果1.发送16QAM信号的星座图2.信道的频率响应3.接收16QAM信号的星座图4.均衡后16QAM信号的星座图…

【数据分析】如何构建指标体系?

有哪些指标体系搭建模型?五个步骤教你从0开始搭建指标体系 一、企业指标体系搭建存在什么问题 许多企业在搭建数据指标体系时遇到了诸多难题,如问题定位不准确、数据采集不完整、目标不一致、报表无序、指标覆盖不全面以及报表价值未充分利用等。 1、…

【Linux 30】传输层协议 - TCP

文章目录 🌈 一、TCP 协议介绍⭐ 1. TCP 协议的特点 🌈 二、TCP 协议格式⭐ 1. TCP 报头中各字段的含义⭐ 2. 各 TCP 标志位的用途⭐ 3. 使用结构体描述 TCP 报头 🌈 三、TCP 的窗口⭐ 1. TCP 的发送和接收缓冲区⭐ 2. TCP 为什么存在缓冲区⭐…

【Linux杂货铺】IO多路复用

目录 🌈前言🌈 📁 五种IO模型 📂 阻塞IO 📂 非阻塞IO 📂 信号驱动IO 📂 多路复用 📂 异步IO 📁 非阻塞IO实现 📁 select 📂 接口使用 &#x…

Kafka 的一些问题,夺命15连问

kafka-中的组成员 kafka四大核心 生产者API 允许应用程序发布记录流至一个或者多个kafka的主题(topics)。 消费者API 允许应用程序订阅一个或者多个主题,并处理这些主题接收到的记录流 StreamsAPI 允许应用程序充当流处理器(s…

ANNOVAR下载

1.官网 https://annovar.openbioinformatics.org/en/latest/user-guide/startup/ 都填英文 要不然会报错 tar -xzvf annovar.latest.tar.gztree . ├── annotate_variation.pl ├── coding_change.pl ├── convert2annovar.pl ├── example │ ├── ex1.avinput…

集群架构中Lua脚本的限制以及出现的报错

🚀 博主介绍:大家好,我是无休居士!一枚任职于一线Top3互联网大厂的Java开发工程师! 🚀 🌟 在这里,你将找到通往Java技术大门的钥匙。作为一个爱敲代码技术人,我不仅热衷…

大语言模型:解锁自然语言处理的无限可能

0.引言 在当今的科技时代,自然语言处理技术正以前所未有的速度发展,语言大模型作为其中的核心力量,对各个领域产生了深远的影响。本文旨在探讨语言大模型的发展历程、核心技术以及广泛的应用场景,以帮助读者更好地理解这一前沿技…

MATLAB实现智能水滴算法(Intelligent Water Drops Algorithm, IWDA)

1.智能水滴算法介绍 智能水滴算法(Intelligent Water Drops Algorithm,IWDA)是一种基于水滴特性的智能优化算法,它借鉴了水滴在自然界中的运动和形态变化规律,通过模拟水滴的形成、发展和消亡过程,实现问题…

【计网】基于TCP协议的Echo Server程序实现与多版本测试

目录 前言: 1、InitServer类的实现 1.1. 创建流式套接字 1.2. bind 绑定一个固定的网络地址和端口号 1.3.listen监听机制 1.4.完整代码 2. 循环接收接口与服务接口 2.1.accept函数讲解 讲个商场拉客的故事方便我们理解: 2.2.服务接口实现 3.服…

easyexcel实现自定义的策略类, 最后追加错误提示列, 自适应列宽,自动合并重复单元格, 美化表头

easyexcel实现自定义的策略类, 最后追加错误提示列, 自适应列宽,自动合并重复单元格, 美化表头 原版表头和表体字体美化自动拼接错误提示列自适应宽度自动合并单元格使用Easyexcel使用poi导出 在后台管理开发的工作中,离不开的就是导出excel了. 如果是简单的导出, 直接easyexce…

边缘计算的学习

文章目录 概要何为边缘计算?现阶段,企业使用边缘计算相对云计算 整体架构流程边缘网络组件边缘计算与云安全 研究方向结合引用 概要 edge 何为边缘计算? 边缘计算(英语:Edge computing),是一种…

SpringBoot在城镇保障性住房管理中的应用

1系统概述 1.1 研究背景 随着计算机技术的发展以及计算机网络的逐渐普及,互联网成为人们查找信息的重要场所,二十一世纪是信息的时代,所以信息的管理显得特别重要。因此,使用计算机来管理城镇保障性住房管理系统的相关信息成为必然…

算法|牛客网华为机试41-52C++

牛客网华为机试 上篇:算法|牛客网华为机试21-30C 文章目录 HJ41 称砝码HJ42 学英语HJ43 迷宫问题HJ44 SudokuHJ45 名字的漂亮度HJ46 截取字符串HJ48 从单向链表中删除指定值的节点HJ50 四则运算HJ51 输出单向链表中倒数第k个结点HJ52 计算字符串的编辑距离 HJ41 称砝…