量子近似优化算法(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

相关文章

Deepseek使用指南与提问优化策略方式

《Deepseek使用指南与提问优化策略方式》本文介绍了DeepSeek语义搜索引擎的核心功能、集成方法及优化提问策略,通过自然语言处理和机器学习提供精准搜索结果,适用于智能客服、知识库检索等领域... 目录序言1. DeepSeek 概述2. DeepSeek 的集成与使用2.1 DeepSeek API

Tomcat高效部署与性能优化方式

《Tomcat高效部署与性能优化方式》本文介绍了如何高效部署Tomcat并进行性能优化,以确保Web应用的稳定运行和高效响应,高效部署包括环境准备、安装Tomcat、配置Tomcat、部署应用和启动T... 目录Tomcat高效部署与性能优化一、引言二、Tomcat高效部署三、Tomcat性能优化总结Tom

解读Redis秒杀优化方案(阻塞队列+基于Stream流的消息队列)

《解读Redis秒杀优化方案(阻塞队列+基于Stream流的消息队列)》该文章介绍了使用Redis的阻塞队列和Stream流的消息队列来优化秒杀系统的方案,通过将秒杀流程拆分为两条流水线,使用Redi... 目录Redis秒杀优化方案(阻塞队列+Stream流的消息队列)什么是消息队列?消费者组的工作方式每

深入理解Apache Airflow 调度器(最新推荐)

《深入理解ApacheAirflow调度器(最新推荐)》ApacheAirflow调度器是数据管道管理系统的关键组件,负责编排dag中任务的执行,通过理解调度器的角色和工作方式,正确配置调度器,并... 目录什么是Airflow 调度器?Airflow 调度器工作机制配置Airflow调度器调优及优化建议最

Oracle查询优化之高效实现仅查询前10条记录的方法与实践

《Oracle查询优化之高效实现仅查询前10条记录的方法与实践》:本文主要介绍Oracle查询优化之高效实现仅查询前10条记录的相关资料,包括使用ROWNUM、ROW_NUMBER()函数、FET... 目录1. 使用 ROWNUM 查询2. 使用 ROW_NUMBER() 函数3. 使用 FETCH FI

C#使用HttpClient进行Post请求出现超时问题的解决及优化

《C#使用HttpClient进行Post请求出现超时问题的解决及优化》最近我的控制台程序发现有时候总是出现请求超时等问题,通常好几分钟最多只有3-4个请求,在使用apipost发现并发10个5分钟也... 目录优化结论单例HttpClient连接池耗尽和并发并发异步最终优化后优化结论我直接上优化结论吧,

Java内存泄漏问题的排查、优化与最佳实践

《Java内存泄漏问题的排查、优化与最佳实践》在Java开发中,内存泄漏是一个常见且令人头疼的问题,内存泄漏指的是程序在运行过程中,已经不再使用的对象没有被及时释放,从而导致内存占用不断增加,最终... 目录引言1. 什么是内存泄漏?常见的内存泄漏情况2. 如何排查 Java 中的内存泄漏?2.1 使用 J

一文带你理解Python中import机制与importlib的妙用

《一文带你理解Python中import机制与importlib的妙用》在Python编程的世界里,import语句是开发者最常用的工具之一,它就像一把钥匙,打开了通往各种功能和库的大门,下面就跟随小... 目录一、python import机制概述1.1 import语句的基本用法1.2 模块缓存机制1.

深入理解C语言的void*

《深入理解C语言的void*》本文主要介绍了C语言的void*,包括它的任意性、编译器对void*的类型检查以及需要显式类型转换的规则,具有一定的参考价值,感兴趣的可以了解一下... 目录一、void* 的类型任意性二、编译器对 void* 的类型检查三、需要显式类型转换占用的字节四、总结一、void* 的

深入理解Redis大key的危害及解决方案

《深入理解Redis大key的危害及解决方案》本文主要介绍了深入理解Redis大key的危害及解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着... 目录一、背景二、什么是大key三、大key评价标准四、大key 产生的原因与场景五、大key影响与危