我正在尝试实现0扩展算法。
它用于为具有多种颜色的图形着色,其中一些节点已经分配了颜色,并且每个边缘都有距离。该算法计算颜色的分配,以便具有相同颜色的相邻节点之间的距离尽可能多。
我发现这篇论文解释了算法:http://citeseer.ist.psu.edu/viewdoc/download;jsessionid=1FBA2D22588CABDAA8ECF73B41BD3D72?doi=10.1.1.100.8049&rep=rep1&type=pdf 但我不明白我需要如何实现它。
我已经在“理论计算机科学”网站上提出了这个问题,但在讨论的中途,我们超出了网站的范围: https://cstheory.stackexchange.com/questions/6163/explain-0-extension-algorithm
任何人都可以用外行的话解释这个算法吗? 我打算在jgrapht包中创建最终代码opensource。
答案 0 :(得分:0)
0扩展的目标是最小化具有不同颜色端点的边的总加权成本而不是最大化它,因此0扩展实际上是聚类问题而不是着色问题。我通常怀疑使用聚类算法进行着色会产生很好的效果。如果你想要一些具有理论保证的东西,你可以查看MAXCUT问题的近似值(如果有两种以上的颜色,这实际上是一种推广),但我怀疑局部搜索算法在实践中会更好。