首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将图划分为k个非空块-最大化

将图划分为k个非空块-最大化
EN

Stack Overflow用户
提问于 2014-10-23 19:43:14
回答 1查看 62关注 0票数 0

我正在寻找算法(链接/名称就足够了)将图划分为k(在我的例子中是2-4)非空块,这样总边权之和(每个块的和权)是最大的。我知道这个问题可能在NP类中,但是我有少量的顶点(8-15),图是稠密且连通的。边缘权重可能为负值。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-24 00:41:50

考虑到实例的规模很小,动态编程应该运行得很好。

这样做的目的是建立一个由对组成的表,该表由一个从j0k的数字和一个顶点集S组成。当将S诱导的子图划分为j片段时,表的值是片内边权的最大和。我们有一个重复

代码语言:javascript
复制
T[0, {}] = 0
T[0, S] such that S ≠ {} = -infinity
T[j, S] such that j > 0 = max over subsets T of S of value(T) + T[j - 1, S - T],

其中,value(T)是由顶点T集合导出的片内边缘权重之和。运行时间为O(n^2 3^n),其中n为顶点数。假定只保存表T的当前行和前一行,空间使用为T

我预计这种方法在C中的实际运行时间为n= 15和k= 4,假设良好的位集执行,在普通硬件上仅为一秒。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26536131

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档