【问题标题】:Is there a good algorithm for this graph problem?这个图问题有一个好的算法吗?
【发布时间】:2011-03-16 17:54:33
【问题描述】:

有一个边上有权重的无向图(权重是非负整数,它们的和不大,大多数为 0)。我需要以最小化不同子图之间的边权重总和的方式将其划分为一定数量的子图(比如说 20 个节点的图到 4 个每个 5 个节点的子图)。

这听起来有点像最小割问题,但还不够接近。

在替代公式中 - 有一堆桶,所有项目恰好属于两个桶,我需要将桶划分为桶组,以最大限度地减少多个桶组中的项目数量。 (节点映射到桶,边权重映射到重复项数)

【问题讨论】:

  • 嗯,最小化子图之间的边之和与最大化子图中的边之和相同。分割图的具体约束是什么?
  • 这是图像分割问题吗?
  • 您的意思是“好”还是“最佳”?我能想到一些“好”的方法:)
  • Hamish:子图不能包含比指定更多的节点(必须相同大小,如果节点数不均匀,可能 +-1)。 Jacob:这是一个并行合并来自多个服务器的大数据集而不会耗尽磁盘空间的问题 ;-) dvogel:一次贪婪地构建一个节点,同时保持 50 个最佳结果在实践中似乎工作得很好,我只是想知道是否这可能是一些众所周知的问题,但算法更好。

标签: algorithm graph


【解决方案1】:

这是最小 k-cut 问题,并且是 NP 难题。这是一个贪婪的启发式,可以保证你得到一个 2-1/k 的近似值:

虽然图的分量少于 k 个: 1)在每个组件中找到一个最小切割 2)拆分最小重量最小切割的组件。

本文研究的问题:http://www.cc.gatech.edu/~vazirani/k-cut.ps

【讨论】:

  • 这是否满足子图大小应该相等(或 +-1)的限制?似乎我们应该能够通过两种方式来减少它来证明 NP-hardness 并使用 min k-cut 给出算法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-30
  • 1970-01-01
  • 2011-04-10
  • 1970-01-01
  • 2020-04-15
  • 1970-01-01
相关资源
最近更新 更多