OM | 顶刊论文解读:一种求解最大边权团问题的精确算法

news2025/8/1 15:28:10

在这里插入图片描述

解读人:曲晨辉,陈盈鑫,孙楚天,杨李平,张云天

编者按

本次解读的文章是于2020年发表在INFORMS Journal on Computing的“A Lagrangian Bound on the Clique Number and an Exact Algorithm for the Maximum Edge Weight Clique Problem”。本文作者为Seyedmohammadhossein Hosseinian, Dalila B. M. M. Fontes 和 Sergiy Butenko 。​

本文探索了最大团(Maximum clique, MC)问题和最大边权团(Maximum edge weigh clique, MEWC)问题之间的联系,提出了计算团数解析上界的新思路和解决MEWC问题的精确性算法。​

本文在对MEWC问题的整数规划(Integer Programming, IP)模型进行拉格朗日松弛(Lagrangian Relaxation)得到团数解析上界之后,结合图着色问题,将团数解析上界作为上界方案,并采用了分支定界法(Branch
-and-bound, B&B),提出了一个解决MEWC问题的精确解法。​

计算实验的结果表明,与现有方法相比,本文提出的算法具有优越的性能。

写在前面

最大团 (Maximum clique, MC)问题,即在图中找到最大团,是组合优化中最流行的问题之一。给定一个简单无向图 G = ( V , E ) G = (V, E) G=(V,E),其中 V = { 1 , 2 , . . . , n } V=\{1,2,...,n\} V={1,2,...,n}是顶点集, C ⊆ V C ⊆ V CV是边集。团是顶点 C ⊆ V C ⊆ V CV推导出的一个完整的子图。如果一个团不是一个更大的团的子集,则它被称为极大团,如果图中没有更大的团,则其被称为最大团。 G G G中最大团的基数则称为图的团数,用 ω ( G ) \omega(G) ω(G)表示。

最大边权团 (Maximum edge weigh clique, MEWC)问题是最大团问题在加权图上的扩展,目的是找到图中边权和最大的团。在给定一个加权图 G = ( V , E , w E ) G = (V, E, w^E) G=(V,E,wE),每一条边 { i , j } ∈ E \{i,j\} \in E {i,j}E都有正权重 w i j w_{ij} wij,团的顶点 C ⊆ V C ⊆ V CV的权重和定义为 W ( C ) = ∑ ( i , j ) ∈ E ( C ) w i j W(C)=\sum_{(i,j)\in E(C)}w_{ij} W(C)=(i,j)E(C)wij E ( C ) E(C) E(C)是两个端点都在 C C C上的边的集合。如果每条边的权重都是1,那么MEWC问题就退化成了MC问题。因此,解决MEWC问题至少和解决MC问题一样困难,是一个NP-hard问题。

本文探究了MEWC问题和MC问题之间的紧密联系。首先,本文将拉格朗日松弛 (Lagrangian Relaxation)应用于MEWC问题的整数规划模型来得到团数的解析上界。其次,结合分支定界法(Branch -and-bound, B&B)提出一种解决MEWC问题的精确算法。

最大团数上界的算法

对于图 G = ( V , E , ω E ) G=(V,E,ω_E) G=(V,E,ωE),MEWC问题的整数规划模型如下:

进一步的,对MEWC问题的整数规划模型进行拉格朗日松弛:

μ i j 1 = μ i j 2 = μ i j 3 = μ μ_{ij}^1=μ_{ij}^2=μ_{ij}^3=μ μij1=μij2=μij3=μ,得到:

已知:

更进一步化简:

进而得到:

求得拉格朗日对偶的最小值,即为原问题最优值的上界:

上述式子中,令 w e = 1 w_e=1 we=1,即图中所有边权重为1,MEWC问题就变成了MC问题。当边权均为1时,得到MC问题的上界为:

其中

由于MC问题的最优值为 ( ω ( G ) 2 ) \binom{\omega(G)}{2} (2ω(G)),可得:

即得到最大团数的上界为:

图一给出了示例:

从图中可以看到,团数为3,利用本文所提团数上界计算如下,结果为4,优于Amin and Hakimi (1972)提出的可以在多项式时间内计算的团数上界(计算为5)。

详细证明请见附录。

一种解决MEWC问题的精确算法

Upper-Bounding Method

假设 C ∗ C^* C G G G的一个MEWC。对于 V V V中的每一个顶点,令 Γ ( i ) = { 1 2 ∑ j ∈ C ∗ \ i w i j , i ∈ C ∗ 0 , i ∈ V \ C ∗ \Gamma(i) = \left\{ \begin{array}{lr} \frac{1}{2}\sum_{j\in{C^*}\backslash{i}}w_{ij}, i\in{C^*}& \\ 0, i\in{V\backslash{C^*}}& \end{array} \right. Γ(i)={21jC\iwij,iC0,iV\C

那么,就可以将 W ∗ = W ( C ∗ ) W^*=W(C^*) W=W(C)用顶点的属性而不是边的属性来表达,即 W ( C ∗ ) = ∑ i ∈ C ∗ Γ ( i ) . W(C^*)=\sum_{i\in{C^*}}\Gamma(i). W(C)=iCΓ(i).

可以得到 Γ ( i ) \Gamma(i) Γ(i) W ( C ∗ ) W(C^*) W(C)的上界为 Γ ( i ) ≤ Γ ‾ ( i ) = 1 2 ∑ k = 1 w ‾ − 1 w e ( k ) : e ∈ δ i ∀ i ∈ V , W ( C ∗ ) ≤ ∑ k = 1 w ‾ Γ ‾ ( k ) , \Gamma(i)\leq{\overline{\Gamma}(i)}=\frac{1}{2}\sum_{k=1}^{\overline{w}-1}{w_e^{(k)}}: e\in{\delta_i}\quad\forall i\in{V},\\ W(C^*)\leq \sum_{k=1}^{\overline{w}}{\overline{\Gamma}}^{(k)}, Γ(i)Γ(i)=21k=1w1we(k):eδiiV,W(C)k=1wΓ(k),

其中 δ i \delta_i δi是一个顶点 i ∈ V i\in{V} iV所附带的边的集合,上标 ( k ) (k) (k)表示相应集合中的第 k k k个最大值。

我们根据整个搜索过程中所访问的子图的特殊结构来细化上述方程。回顾一下,每个子图都是由现有团 C C C和它的候选列表 L L L的集合所引起的,用 G [ C ∪ L ] G[C∪L] G[CL]表示。考虑由 C C C的所有顶点合并成一个顶点 v v v组成的的次要部分,产生 G ′ G^{'} G。在这种情况下,连接 v v v L L L的顶点的边的权重被定义如下:$
w^{\prime}{iv}=\sum{j\in{C}}{w_{ij}},\forall i\in L.$

最终,我们可以得到如下上界,并在所提出的算法中得到了应用: W G [ C ∪ L ] ∗ ≤ W ( C ) + ∑ k = 1 w ‾ L Γ ‾ ′ ( k ) . W^*_{G[C∪L]}\leq{W(C)+\sum_{k=1}^{\overline{w}_L}}\overline{\Gamma}^{\prime (k)}. WG[CL]W(C)+k=1wLΓ(k).

为了计算模型中的 ω ‾ L \overline{\omega}_L ωL,选择了两种着色方法。第一个是任意图的着色数 χ ( G ) ≧ ω ( G ) \chi(G)\geqq\omega(G) χ(G)ω(G)。第二种方法是基于最初由Li和Quan提出的MC问题的MaxSAT编码。对于MC问题来说,第二个方法比第一个方法要更好。然而,正如我们的实验结果所示,MEWC问题并非如此,因为这两个问题使用了不同的剪枝标准,而且后一种方法中计算剪枝阈值的开销很大。

算法伪代码

本文求解框架的核心为分支定界法(Branch-and-bound, B&B),是一种用于求解混合或纯整数规划模型的精确规划算法

分支定界法是一种搜索与迭代的方法,通过选择不同的分支变量和子问题进行搜索。具体地,把全部可行解空间反复地分割为越来越小的子集,称为分支;并且对每个子集内的解集计算一个目标下界(对于最小值问题),称为定界。在每次分支后,凡是界限超出已知最好可行解目标值的那些子集将不再进一步分支,因此许多子集可不予考虑,称为剪枝

本文的求解框架如Algorithm 1所示:

Algorithm 1首先进行变量与参数的初始化。初始化当前候选团 C = ∅ C=\emptyset C=,其权重 W = 0 W=0 W=0;最优团 C ∗ = ∅ C^*=\emptyset C=,其权重 W ∗ = 0 W^*=0 W=0。同时,初始化与维护两个节点列表U与L,具体方法详见Appendix B的Algorithm B.1中的INITIALIZE函数。随后,调用分支定界法主函数模块BRANCH,以递归的方式展开搜索树进行寻优。BRANCH函数的所有输入参数均为全局变量,并随着搜索的进行实时更新。BRANCH函数模块具体为Algorithm 2。

Algorithm 2(即BRANCH函数模块)首先进行剪枝操作的判定,具体调用PRUNE函数。若该分支未被剪枝,则进一步分支,并将新分支出的节点加入候选集合进行分析。在调用BRANCH函数对新节点进行分析前,需要调用关键的SUBCOLOR函数生成着色的候选列表 L v L_v Lv。注意Algorithm 2第13行调用的SUBCOLOR函数,包括两种不同的实现方式,文中分别记作 S U B C O L O R 1 SUBCOLOR^1 SUBCOLOR1 S U B C O L O R 2 SUBCOLOR^2 SUBCOLOR2。Algorithm 2以递归的方式运行,直至候选集合中再无待分析的节点,则分支定界法结束,程序回溯并输出期望的解。

关于算法伪代码的更多细节,在此不做赘述,请感兴趣的读者自行参考原文Section 3.2和Appendix。

计算实验

本节将展示各算法在DIMACS数据集(Johnson and Trick 1996)的41个基准实例的计算结果。DIMACS的实例最初是不加权的。Pullan(2008)提出了这些图的边缘加权版本,命名为DIMACS-EW。在DIMACS-EW图中,边 { i , j } ∈ E \{i,j\}∈E {i,j}E的权重为 w i j = ( i + j )   m o d 200 + 1 w_{ij}=(i+j)\,mod 200+1 wij=(i+j)mod200+1。Table 1列出了测试实例的特征。在这个表中 ∣ V ∣ |V| V ∣ E ∣ |E| E和 "Density"分别表示图的顶点数量、边的数量和边的密度。

本文提出的所有算法都是用C++实现,用Visual C++编译,在Intel®CoreTM i7 CPU@2.90 GHz, 8 GB RAM的计算机上执行,操作系统为Windows 8.1。团数的谱上界是在同一系统上使用Intel Math Kernel Library计算得出。

Table 2展示了关于拉格朗日松弛约束质量的结果,即Proposition 1中的a,以及文献中提出的其他分析性约束,以及Tomita和Kameda(2007)的基于着色的约束。此外,Table 3 列出了相应的CPU时间(以毫秒计)。如前所述,这些界限中有三个需要对图的邻接矩阵进行谱计算。鉴于所需计算量的不同,我将它们与Amin和Hakimi(1972)的第一个界限和本文提出的拉格朗日界限区分开来。在Table 2和Table 3中,“Wilf”、"A&H"和 "Budinich"分别指Wilf(1967)、Amin和Hakimi(1972)以及Budinich(2003)提出的界限。"LRB"一栏显示的是第2节中提出的拉格朗日松弛约束的结果。最后,"T&K"一栏报告了根据Tomita和Kameda(2007)提出的基于着色的约束的结果。

值得注意的是,除了大多涉及稀疏图形的c-fat和p-hat族之外,拉格朗日松弛约束相对接近Wilf(1967)提出的谱约束,即 ρ ( A G ) + 1 ρ(A_{G})+1 ρ(AG)+1。除了这两个家族,拉格朗日松弛约束在所有其他图上都优于Amin和Hakimi(1972)的第一个约束,且时间复杂性相同。

接下来,将在关于MEWC问题上的表现,对本文所提出的算法、Gouveia和Martins(2015)的结果、Hosseinian等人(2018)的结果以及Shimizu等人(2019)的EWCLIQUE算法进行比较。前两项工作结果考虑了来自brock、C、c-fat、hamming、johnson、keller、MANN和p-hat族的不超过300个顶点的实例,并将解决每个实例的时间上限定为3小时。Shimizu等人(2019)报告了34个DIMACS实例的结果,时间限制为1,000秒。我们的实验涉及DIMACS-EW图的所有系列。除了所有顶点不超过300个的图之外,我们还考虑了顶点不超过700个、边缘密度不超过0.50的实例,并对每个实例使用三小时的时间限制。

Table 4总结了所记录的解决时间。在这个表中,"W*"显示了每个实例的MEWC问题的最优解值(如果知道的话)。"IP"列提供了Gouveia和Martins(2015)的结果。"CBQ"列显示了Hosseinian等人(2018)提出的算法的计算结果。"EWC"列显示的是Shimizu等人(2019)报告的EWCLIQUE算法的结果。最后两栏是关于本文提出的算法的结果。"Algorithm(1)"一栏显示了算法中使用Subcolor1函数时的求解时间,"Algorithm(2)"对应的是Subcolor2的应用。我们在表中使用了 "t-lim"来表示相应的算法在完成搜索之前由于时间限制而终止。我们用Hosseinian等人(2018)中使用的初始下限来运行我们的算法。Table 4中报告的结果包括初始下限的计算时间。

本文提出的算法(简称“本算法”)可以在三个小时内解决41个实例中的36个。本算法的求解时间比IP和CBQ获得的最佳结果要好一个数量级(除了小图)。在本算法与EWCLIQUE的比较中,两者的表现相当。然而,在两种方法都解决的30个实例中,EWCLIQUE、Algorithm(1)和Algorithm(2)解决所有这30个实例的总时间分别为1,516.54、837.866和1,122.228秒。这种差异主要源于更有挑战性的实例的解决时间。事实上,对于大多数EWCLIQUE的求解时间小于Algorithm(1)的实例,两种算法的求解时间都小于10秒。

本算法对c-fat200-5、C125.9和san族实例取得了最好的时间改进。CBQ算法未能在三个小时内解决c-fat200-5,而Gouveia和Martins(2015)的一个整数编程模型在大约155秒内解决了它,EWCLIQUE在74.31秒内解决了它。而本算法在0.077秒内解决了这个实例。Gouveia和Martins(2015)的所有九个整数编程模型都未能解决C125.9,而本算法解决这个实例的速度是CBQ算法的42倍。对于本文的方法和EWCLIQUE所涉及的san族的五个实例,Algorithm(1)解决这五个实例的总时间为264.089秒,而EWCLIQUE解决这些实例的时间为979.15秒。

在Table 4中的五种求解方法中,有四种是组合式B&B算法,其中三种(EWC是一个例外)使用相同的初始下限和顶点排序。对于这些方法中的每一种,本文在Table 5中列出了相应搜索树的节点数,且从这个表中排除了无法解决的五个实例。可以看出,本文介绍的任何一个版本的算法中的B&B节点数都比CBQ和EWCLIQUE算法少得多,但CBQ和EWCLIQUE算法各有一个例外(Johnson8-2-4和hamming6-4)。此外,在本文的算法中,除了一个实例(san200-0.9-3)外,第二种色度方法下的B&B节点数小于(或等于)第一种方法。较好的上界预计会产生较少的B&B节点,但不能保证,因为上界的质量对B&B树的结构的影响很难预测。结合Table 4的结果,这意味着第二种色度方法产生的更好的上界(关于团数)的质量并没有弥补计算MEWC问题的剪枝阈值的开销。

参考文献

[1] 整数规划:基础、扩展及应用 (2022.06 First Edition). 殷允强,王杜娟,余玉刚.
[2]Hosseinian, S., Fontes, D. B., & Butenko, S. (2020). A lagrangian bound on the clique number and an exact algorithm for the maximum edge weight clique problem. INFORMS Journal on Computing, 32(3), 747-762.
[3] Li, C. M., & Quan, Z. (2010, July). An efficient branch-and-bound algorithm based on maxsat for the maximum clique problem. In Twenty-fourth AAAI conference on artificial intelligence.
[4] Li, C. M., & Quan, Z. (2010, October). Combining graph structure exploitation and propositional reasoning for the maximum clique problem. In 2010 22nd IEEE International Conference on Tools with Artificial Intelligence (Vol. 1, pp. 344-351). IEEE.
[5] Tomita E, Kameda T (2007) An efficient branch-and-bound algorithm for finding a maximum clique with computational experiments. J. Global Optim. 37(1):95–111.
[6] San Segundo P, Nikolaev A, Batsyn M (2015) Infra-chromatic bound for exact maximum clique search. Comput. Oper. Res. 64:293–303.

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

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

相关文章

双指针、字符串、哈希表、链表、数组总结

目录总结1、交换元素swap2、链表设置哑结点3、while(cur -> next ! nullptr)代表运行到倒数第二个元素,也就是cur此时为倒数第一个元素4、在cur初始指向哑结点时,下面执行cur指向index的前一个节点5、关于链表,什么移动删除元素等&#xf…

关于用windows开发遇到的各种乌龙事件之node版本管理---nvm install node之后 npm 找不到的问题

友情提醒,开发最好用nvm控制node版本 nrm 控制镜像源,能少掉很多头发开发过程中技术迭代更新的时候最要老命的就是 历史项目的node版本没有记录,导致开启旧项目的时候就会报错。尤其是npm 升级到8.x.x以后,各种版本不兼容。 真…

如何5分钟跑起来一个完整项目?

今天熊哥和大家聊聊,我怎么在5分钟之内生成一个完整的项目。 效果 看看这个面板,这居然是我花了5分钟成功跑起来的项目。 竟然具备超过三十项功能。还可以直接在页面上生成代码。 它是什么?它是 go-gin-api 它支持哪些功能? 可…

【OpenAI】基于 Gym-CarRacing 的自动驾驶练习项目 | 路径训练功能的实现 | GYM-Box2D CarRacing

限时开放,猛戳订阅! 👉 《一起玩蛇》🐍 💭 写在前面: 本篇是关于多伦多大学自动驾驶专业项目的博客。GYM-Box2D CarRacing 是一种在 OpenAI Gym 平台上开发和比较强化学习算法的模拟环境。它是流行的 Box2…

RocketMQ实现延迟队列精确到秒级实现

前言篇:为了节约成本,决定通过自研来改造rocketmq,添加任意时间延迟的延时队列,开源版本的rocketmq只有支持18个等级的延迟时间,其实对于大部分的功能是够用了的,但是以前的项目,全部都是使用了…

剑指 Offer 12. 矩阵中的路径

⭐简单说两句⭐ CSDN个人主页:后端小知识 🔎GZH:后端小知识 🎉欢迎关注🔎点赞👍收藏⭐️留言📝 Hello吖,各位小伙伴大家好呀,今天我采用了一种特别的方式😎来…

《关于我找了好久的bug,却没找出来的,又不小心解决了的事》

个人简介 作者简介:大家好!我是yukki。个人主页:yukki. 喜欢:🌈点赞🌈收藏🌈一键三连!共勉问题: 这是一个SpringBoot问题 刚开始很正常可以启动,但是加了r…

键盘布局持久化技术

**01 **键盘布局简介 键盘布局是按键在键盘上的分布模式,决定了键位顺序。键盘布局在发展过程中,由于使用习惯的不同,各国间使用的键盘布局存在细微差别,因此在Windows系统上以国家为单位区分不同的键盘布局方案。我们最熟悉的布…

后端接收格式为x-www-form-urlencoded的数据

1.x-www-form-urlencoded是什么? x-www-form-urlencoded纸面翻译即所谓url格式的编码,是post的默认Content-Type,其实就是一种编码格式,类似json也是一种编码传输格式。form表单中使用 form的enctype属性为编码方式&#xff0…

【MySQL】5.7版本解压安装配置

前言 之所以使用解压版本,而不使用exe安装,因为exe的安装方式删除过于麻烦!!! 如果安装MySQL过程中,出错了或者想重新在来一把,删除mysql服务即可 sc delete mysql # 删除已经安装好的Mysql&a…

ifconfig不显示ipv4地址,ifconfig eth0 192.168.5.9失败

ifconfig eth0 192.168.5.9设置ip地址后,通过ifconfig仍然没有ipv4地址: 一、 执行ifup eth0启动eth0: ifconfig、ifup、ifdown :这三个命令的用途都是启动网络接口,不过,ifup 与 ifdown 仅就 /etc/sysconfig/network-…

【数据结构】红黑树

红黑树一、红黑树的概念二、红黑树的接口2.1 插入三、验证四、源码一、红黑树的概念 红黑树也是一个二叉搜索树,他是通过对任何一条从根到叶子的路径上各个结点着色方式的限制,最长路径长度不超过最短路径长度的 2 倍保持近似平衡。他在每个节点添加了一…

华为OD机试题,用 Java 解【勾股数元组】问题

最近更新的博客 华为OD机试 - 猴子爬山 | 机试题算法思路 【2023】华为OD机试 - 分糖果(Java) | 机试题算法思路 【2023】华为OD机试 - 非严格递增连续数字序列 | 机试题算法思路 【2023】华为OD机试 - 消消乐游戏(Java) | 机试题算法思路 【2023】华为OD机试 - 组成最大数…

骨传导耳机靠谱吗,骨传导耳机的原理是什么

很多人刚开始接触骨传导耳机时都会具有一个疑问,骨传导耳机是不是真的靠谱,是不是真的不伤害听力?骨传导耳机传输声音的原理是什么? 下面就给大家讲解一下骨传导耳机传输声音的原理以及骨传导耳机对听力到底有没有伤害。 骨传导…

Python编写GUI界面,实现小说下载器

嗨害大家好鸭&#xff01;我是小熊猫~思路一、数据来源分析二. 代码实现步骤代码实现一、单章小说下载二、整本小说下载三、多线程采集四、采集排行榜所有小说五、搜索小说功能六、GUI界面<center>**&#x1f447;问题解答 源码获取 技术交流 抱团学习请联系&#x1f…

【蓝桥集训】第七天——并查集

作者&#xff1a;指针不指南吗 专栏&#xff1a;Acwing 蓝桥集训每日一题 &#x1f43e;或许会很慢&#xff0c;但是不可以停下来&#x1f43e; 文章目录1.亲戚2.合并集合3.连通块中点的数量有关并查集的知识学习可以移步至—— 【算法】——并查集1.亲戚 或许你并不知道&#…

华为OD机试题,用 Java 解【喊 7 的次数重排】问题

最近更新的博客 华为OD机试 - 猴子爬山 | 机试题算法思路 【2023】华为OD机试 - 分糖果(Java) | 机试题算法思路 【2023】华为OD机试 - 非严格递增连续数字序列 | 机试题算法思路 【2023】华为OD机试 - 消消乐游戏(Java) | 机试题算法思路 【2023】华为OD机试 - 组成最大数…

大数据开发 - Java入门2

目录Java基础知识注释关键字常量标识符测试题回顾Java基础知识 注释 对程序的解释说明 分类&#xff1a; 单行注释&#xff1a;// 对本行后面的内容进行注释多行注释&#xff1a;/*解释内容 */文档注释 &#xff1a;/** 注释内容*/ --用于产生帮助文档&#xff0c;也有多行注…

高通平台开发系列讲解(SIM卡篇)SIM卡基础概念

文章目录 一、SIM卡基本定义二、卡的类型三、SIM卡的作用三、SIM卡基本硬件结构四、SIM卡的内部物理单元五、卡文件系统沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇文章将介绍SIM的相关组件。 一、SIM卡基本定义 SIM卡是一种智能卡(ICC Card/UICC Card) SIM…

在线客服系统接入网站会员,绑定会员ID,展示会员昵称头像,传递手机号等扩展字段【唯一客服】...

在客服系统聊天链接里&#xff0c;可以带上自己网站的会员信息&#xff0c;例如&#xff1a;昵称、头像、手机号等 具体使用方式如下 聊天链接中增加以下参数&#xff1a; visitor_id: 自有会员visitor_name: 自有会员名称avator: 自有会员头像lang: 多语言 cn 中文 &#xff0…