【问题标题】:Find graph colouring that minimises sum of weights of edges that share vertex colours找到使共享顶点颜色的边的权重总和最小化的图形着色
【发布时间】:2022-01-27 08:44:23
【问题描述】:

假设我们有一个带有 n 个顶点的加权完全图。我们想为每个顶点着色 k 种颜色。任何着色的成本是连接相同颜色顶点的所有边的权重之和。

对于我的用例,n 将在 20-50 左右。对于 k = 2, 3 蛮力工作正常,但理想情况下我想要任何 k 的解决方案。我正在处理的图也具有合理的稀疏性,但同样,我希望解决一般情况。

【问题讨论】:

  • 这个问题包含图着色作为一个特例(如果图是 k 可着色的,你可以获得零权重),所以它是 NP-hard 并且可能与图着色具有相同的近似难度。
  • 图不能稀疏且完整。
  • @ErwinKalvelagen 权重可以是稀疏的(即主要为零)。这就是我所指的。
  • 您能否在问题中澄清一下:您需要最好的颜色,还是足够好?最佳不一定是唯一的,尤其是对于稀疏权重,所以你想要一个还是全部?
  • 我们可以假设权重是非负的吗?

标签: algorithm optimization graph-theory


【解决方案1】:

第一个开始可能是把它扔给 MIQP(混合整数二次规划)求解器。它可以线性化为 MIP(这就是像 Cplex 这样的求解器自动执行的操作)。

min sum( (arcs(i,j),c), w(i,j)*x(i,c)*x(j,c))   (sum over all arcs i<j and colors c)
subject to  sum(c, x(i,c)) = 1 for all nodes i
            x(i,c) in {0,1} 

有 50 个节点,权重 25% 密集,k=5,我花了几秒钟来解决已证明的最优性(但可能更多取决于数据;许多零权重使问题更容易)。 k=3 稍微困难一些,运行时间在 30 到 60 秒之间,具体取决于具体公式。

线性化的数学公式可以在here找到。

【讨论】:

    猜你喜欢
    • 2020-04-01
    • 1970-01-01
    • 2013-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多