【问题标题】:C++ Graph Vertex Coloring Library or Source CodeC++ 图形顶点着色库或源代码
【发布时间】:2011-07-24 11:31:18
【问题描述】:

对于graph coloring 的问题,是否有包含算法组合的 C++(或任何其他语言)库?

当然有幼稚的贪婪顶点着色算法,但我对更有趣的算法感兴趣,例如:

  1. wiki 的“精确算法”部分中提到的算法
  2. 利用特殊图形属性的近似算法,例如图形为planarunit disk graph
  3. 查找图的fractional coloring 的算法。

最后一个对我来说特别重要。

到目前为止,我发现的是this page 上的列表,但它们都没有上述任何算法。此外,最好的是Joe Culberson's Graph Coloring code,它是在 90 年代后期实现的,因此在没有记录 API 方面已经过时了(并不是说这对于这个问题的意义很重要,但我想我会提到它)。

Koala graph coloring library 具有我正在寻找的精神,但如果你看看他们的source code,它还没有兑现承诺。它似乎处于非常早期的开发阶段。

this stackoverflow question 中提到了其他通用图形库。它们包括:

  1. Graphviz
  2. Boost Graph Library
  3. Lemon
  4. igraph
  5. OGDF

我应该注意到我在很多事情上都使用Boost Graph Library。事实上,它提供了一个简单的顶点着色实现。 Joe Culberson 的代码(上面提到过)做得更多。

以下是我发现(并在大多数情况下测试过)的图形着色代码列表,但它们在上述三个算法类方面仍然大多不足。

  1. GraphCol - 文档不是英文的,唉。
  2. Planarity - 包含一种着色算法,可保证平面图的着色为 5 次或更好。
  3. Graph-Coloring - 似乎是对 Joe Culberson(上图)已经实现的少数算法的重新实现。

【问题讨论】:

    标签: c++ algorithm graph graph-theory


    【解决方案1】:

    http://rhydlewis.eu/gcol/ 有一些不错的。这些对应于我书中审查和测试的算法组合:

    Lewis, R. (2021) 图形着色指南:算法和应用(第二版)。施普林格。国际标准书号:978-3-030-81053-5。 https://link.springer.com/book/10.1007/978-3-030-81054-2

    这些方法包括贪婪、回溯和元启发式方法。我在上面的链接中包含了编译说明等。

    【讨论】:

      【解决方案2】:

      你可以试试CXXGraph 库。它包含一些关于 Graph 的有用算法

      【讨论】:

      • 虽然没有着色
      【解决方案3】:

      也许您可以通过Boost Graph Library 帮助自己。

      【讨论】:

      • 我喜欢 BGL,它确实提供了一种顶点着色算法,但它是一种幼稚的算法,而且 Joe Culberson 的代码(在问题中提到)做得更多。此外,BGL 肯定没有我提到的我正在寻找的三个“更有趣”的算法。
      猜你喜欢
      • 2012-08-05
      • 1970-01-01
      • 1970-01-01
      • 2015-10-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-25
      • 1970-01-01
      相关资源
      最近更新 更多