【发布时间】:2011-07-24 11:31:18
【问题描述】:
对于graph coloring 的问题,是否有包含算法组合的 C++(或任何其他语言)库?
当然有幼稚的贪婪顶点着色算法,但我对更有趣的算法感兴趣,例如:
- wiki 的“精确算法”部分中提到的算法
- 利用特殊图形属性的近似算法,例如图形为planar 或unit disk graph。
- 查找图的fractional coloring 的算法。
最后一个对我来说特别重要。
到目前为止,我发现的是this page 上的列表,但它们都没有上述任何算法。此外,最好的是Joe Culberson's Graph Coloring code,它是在 90 年代后期实现的,因此在没有记录 API 方面已经过时了(并不是说这对于这个问题的意义很重要,但我想我会提到它)。
Koala graph coloring library 具有我正在寻找的精神,但如果你看看他们的source code,它还没有兑现承诺。它似乎处于非常早期的开发阶段。
this stackoverflow question 中提到了其他通用图形库。它们包括:
我应该注意到我在很多事情上都使用Boost Graph Library。事实上,它提供了一个简单的顶点着色实现。 Joe Culberson 的代码(上面提到过)做得更多。
以下是我发现(并在大多数情况下测试过)的图形着色代码列表,但它们在上述三个算法类方面仍然大多不足。
- GraphCol - 文档不是英文的,唉。
- Planarity - 包含一种着色算法,可保证平面图的着色为 5 次或更好。
- Graph-Coloring - 似乎是对 Joe Culberson(上图)已经实现的少数算法的重新实现。
【问题讨论】:
标签: c++ algorithm graph graph-theory