量子近似优化算法(QAOA)入门(1):从量子绝热算法(QAA)角度的直观理解

2024-03-24 14:30

本文主要是介绍量子近似优化算法(QAOA)入门(1):从量子绝热算法(QAA)角度的直观理解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!


文章目录

  • 前言:量子计算的本质是测量
  • 一、基于量子逻辑电路的常用算法
    • 1.NISQ:Noisy Intermediate-Scale Quantum(含噪声中等规模量子)
  • 二、量子绝热算法(QAA:Quantum Adiabatic Algorithm)
    • 1.QAA的原理
    • 2.量子绝热算法和量子退火算法的区别
  • 三、量子近似优化算法(QAOA : Quantum Approximate Optimization Algorithm)
  • 总结


前言:量子计算的本质是测量

经典计算机 VS 量子计算机
开始大家要有这样一个认识,才不会在学习过程中困惑。


一、基于量子逻辑电路的常用算法

在这里插入图片描述

  • VQE : Variational Quantum Eigensolver
  • QAOA : Quantum Approximate Optimization Algorithm

1.NISQ:Noisy Intermediate-Scale Quantum(含噪声中等规模量子)

这个词是不能单独理解,我们先理解【NISQ设备:Noisy Intermediate-Scale Quantum device】是什么。

NISQ设备,指数年或数十年可以实现的,小~中规模(包含数个~数百个量子比特)的量子计算机。NISQ设备在计算过程中容易受到噪声影响,而且不能纠错,所以计算结果容易出现的错误。比如著名的量子算法Shor算法和Grover算法,电路复杂(运算较多),NISQ设备容错性低,很难实现这俩算法。 我们离真正的可以在计算中即时纠错的量子计算机还很远。

在此背景下,“量子-经典混合算法”的方法成为NISQ算法研究的主流。这意味着我们不是将我们要执行的所有计算都委托给量子计算机,而是只将量子计算机擅长的部分委托给量子计算机,让经典计算机处理其余部分。这个思想也是QAOA的基本思想。

所以,QAOA不是纯粹的基于量子逻辑门的算法,有部分计算是经典计算机完成的
主要的参考论文是下面两篇。

  • 该文首次提出QAOA算法
A Quantum Approximate Optimization Algorithm
https://arxiv.org/pdf/1411.4028.pdf
  • 该文是Rigetti公司的通过量子逻辑电路实现QAOA算法的报告论文
Unsupervised Machine Learning on a Hybrid Quantum Computer
https://arxiv.org/pdf/1712.05771.pdf

二、量子绝热算法(QAA:Quantum Adiabatic Algorithm)

1.QAA的原理

这章主要参考以下文章:

https://qiita.com/snhrhdt/items/ae55a94b25c06142528a

在这里插入图片描述
QAA的思想很简单,就是把待求解的哈密顿量,映射到一个基态已知的能量体系。然后,通过量子绝热演化,就能获得待求解的哈密顿量基态。计算式如下:
在这里插入图片描述
量子绝热演化的过程就是,极其缓慢地令t0→T

  • t = 0
    在这里插入图片描述

  • t = T
    在这里插入图片描述
    QAA背后的想法是从一个简单的哈密顿量开始,我们可以很容易地获得并准备好基态,并“小心”地演化。演化过程中该哈密顿量一直保持在基态,直到它的哈密顿量的基态是我们问题的解。

这篇文章的目的是直觉上理解量子绝热算法。并且阐明怎么通过魔改QAA,从而发明了QAOA。具体的物理推导,之后的篇章再说。

2.量子绝热算法和量子退火算法的区别

量子退火算法依赖于与绝热量子计算相同的核心思想:它采用一个初始哈密顿量 H 0 H_{0} H0,一个终态哈密顿量 H 1 H_{1} H1,其基态编码就是求解问题的解。

但是量子退火算法和QAA有两个不同点。

  • 终态 H 1 H_{1} H1能够实现的哈密顿量不能完全随意选择,而必须从某个限定的类中选择。一个典型的选择是形式的以下的伊辛哈密顿量。
    在这里插入图片描述
  • 在量子退火中,进化不再保证是绝热的。做出这个决定有两个主要原因。
    第一个原因:上面图中的光谱间隙是 H ( t ) H(t) H(t), t ∈ [ 0 , T ] t \in[0, T] t[0,T] 的基态与第一激发态之差的最小值。计算这个光谱间隙是非常困难的。
    第二个原因:即使我们能够计算出绝热过程所需的时间,它也可能时间太久以至于不实用——甚至不可能,我们等不及。

所以,量子退火选择了妥协。

三、量子近似优化算法(QAOA : Quantum Approximate Optimization Algorithm)

  • 量子退火算法,挺好用了,为啥要发明QAOA呢?
    因为,量子逻辑电路,只能以离散的步骤改变状态向量。就如下面的量子逻辑电路图一样。

在这里插入图片描述
更直观的理解就是,把时间 t t t 上的演化,通过p个逻辑电路进行模拟。那么p越大,就越接近于量子退火的连续时间演化了。这里有三个参数γ、β、p。大家应该可以理解对应关系,至于细节,放到之后的文章里讲解。

下图的参考链接:https://qiita.com/snhrhdt/items/ae55a94b25c06142528a

在这里插入图片描述

总结

这篇文章,理清了QAOA的发明过程,以及直观理解,没有使用公式,之后慢慢代入公式进行讲解。

这篇关于量子近似优化算法(QAOA)入门(1):从量子绝热算法(QAA)角度的直观理解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/841873

相关文章

深入理解Apache Kafka(分布式流处理平台)

《深入理解ApacheKafka(分布式流处理平台)》ApacheKafka作为现代分布式系统中的核心中间件,为构建高吞吐量、低延迟的数据管道提供了强大支持,本文将深入探讨Kafka的核心概念、架构... 目录引言一、Apache Kafka概述1.1 什么是Kafka?1.2 Kafka的核心概念二、Ka

openCV中KNN算法的实现

《openCV中KNN算法的实现》KNN算法是一种简单且常用的分类算法,本文主要介绍了openCV中KNN算法的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的... 目录KNN算法流程使用OpenCV实现KNNOpenCV 是一个开源的跨平台计算机视觉库,它提供了各

Python通过模块化开发优化代码的技巧分享

《Python通过模块化开发优化代码的技巧分享》模块化开发就是把代码拆成一个个“零件”,该封装封装,该拆分拆分,下面小编就来和大家简单聊聊python如何用模块化开发进行代码优化吧... 目录什么是模块化开发如何拆分代码改进版:拆分成模块让模块更强大:使用 __init__.py你一定会遇到的问题模www.

springboot+dubbo实现时间轮算法

《springboot+dubbo实现时间轮算法》时间轮是一种高效利用线程资源进行批量化调度的算法,本文主要介绍了springboot+dubbo实现时间轮算法,文中通过示例代码介绍的非常详细,对大家... 目录前言一、参数说明二、具体实现1、HashedwheelTimer2、createWheel3、n

SpringBoot首笔交易慢问题排查与优化方案

《SpringBoot首笔交易慢问题排查与优化方案》在我们的微服务项目中,遇到这样的问题:应用启动后,第一笔交易响应耗时高达4、5秒,而后续请求均能在毫秒级完成,这不仅触发监控告警,也极大影响了用户体... 目录问题背景排查步骤1. 日志分析2. 性能工具定位优化方案:提前预热各种资源1. Flowable

SpringBoot3实现Gzip压缩优化的技术指南

《SpringBoot3实现Gzip压缩优化的技术指南》随着Web应用的用户量和数据量增加,网络带宽和页面加载速度逐渐成为瓶颈,为了减少数据传输量,提高用户体验,我们可以使用Gzip压缩HTTP响应,... 目录1、简述2、配置2.1 添加依赖2.2 配置 Gzip 压缩3、服务端应用4、前端应用4.1 N

Spring Boot + MyBatis Plus 高效开发实战从入门到进阶优化(推荐)

《SpringBoot+MyBatisPlus高效开发实战从入门到进阶优化(推荐)》本文将详细介绍SpringBoot+MyBatisPlus的完整开发流程,并深入剖析分页查询、批量操作、动... 目录Spring Boot + MyBATis Plus 高效开发实战:从入门到进阶优化1. MyBatis

MyBatis 动态 SQL 优化之标签的实战与技巧(常见用法)

《MyBatis动态SQL优化之标签的实战与技巧(常见用法)》本文通过详细的示例和实际应用场景,介绍了如何有效利用这些标签来优化MyBatis配置,提升开发效率,确保SQL的高效执行和安全性,感... 目录动态SQL详解一、动态SQL的核心概念1.1 什么是动态SQL?1.2 动态SQL的优点1.3 动态S

Python如何使用__slots__实现节省内存和性能优化

《Python如何使用__slots__实现节省内存和性能优化》你有想过,一个小小的__slots__能让你的Python类内存消耗直接减半吗,没错,今天咱们要聊的就是这个让人眼前一亮的技巧,感兴趣的... 目录背景:内存吃得满满的类__slots__:你的内存管理小助手举个大概的例子:看看效果如何?1.

一文详解SpringBoot响应压缩功能的配置与优化

《一文详解SpringBoot响应压缩功能的配置与优化》SpringBoot的响应压缩功能基于智能协商机制,需同时满足很多条件,本文主要为大家详细介绍了SpringBoot响应压缩功能的配置与优化,需... 目录一、核心工作机制1.1 自动协商触发条件1.2 压缩处理流程二、配置方案详解2.1 基础YAML