Tldr
Local to Global: A Distributed Quantum Approximate Optimization Algorithm for Pseudo-Boolean Optimization Problems
Abstract
With the rapid advancement of quantum computing, Quantum Approximate Optimization Algorithm (QAOA) is considered as a promising candidate to demonstrate quantum supremacy, which exponentially solves a class of Quadratic Unconstrained Binary Optimization (QUBO) problems. However, limited qubit availability and restricted coherence time challenge QAOA to solve large-scale pseudo-Boolean problems on currently available Near-term Intermediate Scale Quantum (NISQ) devices. In this paper, we propose a distributed QAOA which can solve a general pseudo-Boolean problem by converting it to a simplified Ising model. Different from existing distributed QAOAs’ assuming that local solutions are part of a global one, which is not often the case, we introduce community detection using Louvian algorithm to partition the graph where subgraphs are further compressed by community representation and merged into a higher level subgraph. Recursively and backwards, local solutions of lower level subgraphs are updated by heuristics from solutions of higher level subgraphs. Compared with existing methods, our algorithm incorporates global heuristics into local solutions such that our algorithm is proven to achieve a higher approximation ratio and outperforms across different graph configurations. Also, ablation studies validate the effectiveness of each component in our method.
伪布尔优化简介
伪布尔优化形式及其松弛形式
一个伪布尔优化的目标函数可以表示为如下形式(不考虑常数项):
我们可以把这种形式进行改写:
其中, 表示出现在目标函数中的变量数, 表示集合, 表示集合 的幂集的一个子集(这是因为,即:
于是 表示幂集中的元素,其中 为子集的标签(也就是函数中的某一项), 表示项的系数
Example
例如:
这里,,,我们的 (也就是幂集子集的大小),于是我们有(均按照函数项的顺序给出):
那么对于 PBO 问题,我们还存在多条约束(假设均为 的类型),我们可以将约束统一松弛为一种形式:
这里的 为变量的总数(注意,,这是因为在松弛时,我们会引入新变量)
例如约束:
我们可以引入一个新的布尔变量 ,使得:
松弛形式
通过上面的松弛变换后,我们可以得到如下形式的 PBO 问题:
这里 表示约束的个数
更进一步的,我们可以将约束作为函数的惩罚项,加在优化函数的后面,形式如下(此方法称为序列无约束最小化方法):
我们只需要保证 是一个足够大的整数即可,于是,当函数有最小值时,我们可以保证惩罚项为 (也就是满足约束)
而由于 与后面的惩罚项 均为多项式,于是,我们可以将其合并同类项后,写成一个类似伪布尔优化目标函数的形式:
这里的 与上文中的 类似,都是项的系数
PBO 到 Ising 模型
这一步显然是使用 QAOA 的关键,我们需要将目标函数写为 Ising 模型的格式,将其作为哈密顿量进行求解
解耦变量
这里定义了一种解耦变量,其定义为:
Info
当 为 中的一个变量时,如果在所有项的系数均为 的条件下,改变 的取值只对其自身有影响,我们将其称为解耦变量
这里的有影响定义为 注意, 中所有项的系数已经被设置为 了
Example
例如 ,这里,只有 为解耦变量,在这个条件下,我们可以进一步推导出:
放在这个例子中, ,可以化为
二次化
为了编码为 Ising 模型(方便量子退火进行求解),我们需要对高次的多项式进行二次化,关于这一点,我们的做法为引入额外的辅助变量
Example
例如在 中,我们引入一个 ,从而将这一个三次项重写为二次项,显然
于是,考虑原来的优化函数 ,我们的做法是:
- 对于 的项 ,我们选择其中两个不相同的变量
- 我们引入一个新的变量 ,将此项写为
- 于是,对于新的优化函数,我们将其写为 ,也就是再新增一条等式约束的平方,与前面类似的,这里的 也是一个非常大的整数
于是,重复迭代这个过程,我们就可以得到一个完全由二次项构成的优化函数 (虽然会引入非常多的新变量)
Ising 模型
现在我们拿到的函数为 ,这里的 指代 或 ,并且
Quote
Ising 模型 是一种用于描述磁性材料中自旋相互作用的经典统计力学模型。它最初是为了研究铁磁性材料的相变现象而提出的。其核心思想是:
- 系统由一组自旋(spins)组成,每个自旋可以取两个值:+1+1(向上)或 −1−1(向下)。
- 自旋之间通过相互作用(interaction)相互影响,通常是二次相互作用,即每个自旋只与其相邻的自旋有相互作用。
- 系统的能量(哈密顿量)由自旋的排列和相互作用决定。
Ising 模型的哈密顿量(能量函数)可以表示为:
其中:
- 是第 个自旋的值。
- 是自旋 和自旋 之间的相互作用强度(通常是二阶相互作用)。
- 是外部磁场对自旋 的影响。
这里,我们的问题就转化为,如何把 转化为 的形式
我们考虑引入一组新的变量 ,并构建一个新的映射 ,其中 ,于是,对于 ,我们有:
这里的
然而,由于 为一个二次项函数, 也必然是二次的,我们将其展开,即可写为如下形式(我们可以不用关注常数项,因为这不影响我们的优化目标):
Note
到这一步,其实已经可以直接使用 QAOA 进行求解了,但论文在这个基础上,还进行了一次化简
化简 Ising 模型
在 中,如果有一些变量只存在于一个二次项中,因此我们认为这些变量存在唯一依赖关系,即:当确定了其他变量的值以最小化目标时,可以确定这些变量的值。
换而言之,这类变量的决策与否,对最小化目标函数并没有实质的贡献,因此我们可以延迟决策这些变量。
Example
考虑 , 显然 存在唯一依赖关系,在延迟决策 后,我们发现 也成为了唯一依赖关系 于是,我们的做法是,将 从优化函数中去除:,且
删除这类变量后,我们可以简化 Ising 模型,最终,我们将函数表示为:
Important
需要注意的是,当我们把问题转化为 Ising Model 后,这本质上就可以看作是一个图上的问题:
每个需要确定的 是图 上的顶点,一个二次项 表示顶点 之间有一条边,边权为 ,其中,每个顶点 还需要有一个点权 ,于是,这个约束函数就可以转变为一个图的顶点集上的带权集合分割问题:
将顶点集合分为两类,取值集合为 ,优化目标为:使得取值 最小
QAOA 算法
得到了 的表示后,我们可以很轻松的将其转变为哈密顿量 :
这里的 表示 的矩阵形式(量子比特):
这里的 ,
分布式 QAOA
考虑到单台机器上的量子比特有限(如果不是模拟的话),因此,我们需要将问题拆分为多个子问题,对每个子问题使用 QAOA,这样就能在每个子问题上使用有限的量子比特了
我们已经在 化简 Ising 模型 中将问题转化为了图上的加权集合分割问题, 现在,如果我们将图进行子图划分,并在每个子图上使用 QAOA 来进行求解,最后将所有子问题的解合并,即可得到最终解
那么如何找到一个好的划分成为了我们需要考虑的问题
这里采用的做法是:
- 使用社区检测算法有效地将图划分为子图,并使用 QAOA 求解子图
- 在社区表示下,迭代压缩并合并不同级别的子图
- 使用更高级别的启发式策略来更新子图的局部解
这种分层的方法,能够为全局最优提供更良好的近似
工作流
我们通过这个节点数为 24 的最大割问题,来讲述算法的工作流程
首先,我们需要明确,在全局中,我们存在一个 Task
队列,这里使用 来表示,其容纳的为划分出来的子图
最开始时,我们通过社区检测算法( Louvain 算法),将原图划分为多个不重叠的社区(子图),如上面的 所示,最终,我们保证每个子图中的顶点数不超过 (量子计算机最多可容纳的量子比特数),并将所有子图 加入到任务队列 中去
Important
此时,我们得到了一个子图集合 ,现在,我们进一步给出定义:
in-node
:如果一个顶点 ,且 ,我们称 为in-node
out-node
:非in-node
的顶点
接着,我们会开始分发任务(本质上就是使用 QAOA 求解子图)
首先,我们对分发到的子图 做出压缩操作,对于所有的 in-node
,我们将其视为一个顶点,记作 ,此时, 与 所有 out-node
顶点之间边的权重通过下式计算:
这里, 表示子图上的目标函数, 表示 in-node
和 out-node
的取值串,而 表示将其按位取反, 为拼接操作
压缩求解之后,我们将此图放到任务队列 中,并将其标记为需要被合并的图。
接着,我们需要将压缩后的图进行合并,成为新的子图,以这里的 为例,我们将 out-node
之间相连(因为这在就有边存在),成为一个新图,然后再进行 QAOA 的求解。
然后不断重复这个过程,直到 为空
Note
当然,这里如果 相连也是可以的,这里的合并看的是在 中完成是先后顺序
这里的问题在于,我们在求解合并的子图时,假设得到了解 ,那么一定会出现如下情况:
- 与合成此图的子图解 不同
- 与合成此图的子图解 相同(或等于其按位取反)
第二种情况是显然的,我们不需要做任何事,因为局部解已经变为了全局解;对于第一种情况,我们需要对解进行修正。
以下图的加权最大割(不考虑点权)为例:
我们考虑在这两个子图上,对于传统的最大割方法,我们得到的解为: ,合并后得到解为
然而这显然不是最优解,我们求解完后进行压缩合并,得到的集合为:,在这个图上,QAOA 求得的最优解为:,展开为
可以发现, 与 不相同,我们的更新策略为: 更新 ,并将其与合并后得到的 拼接,以得到更好的局部解
例如这里,我们将 更新为 ,然后与 拼接,得到最终的解为
更新的算法如下图所示:
Important
值得注意的是,我们是将所有的局部解都求出来之后,再开始合并为全局解的,而不是在压缩合并完图,使用 QAOA 求解之后,立刻就使用上面的更新规则,将局部解更新,这一点在工作流的图中有较好的体现(即先走左边的流程,走完后才走右边的流程)