C ++ Graph Vertex Coloring Library или исходный код - PullRequest
8 голосов
/ 28 марта 2011

Существует ли библиотека C ++ (или любого другого языка) с набором алгоритмов для задачи раскраски графов ?

Конечно, существуют наивные жадные алгоритмы раскраски вершин, но яМеня интересуют более интересные алгоритмы, такие как:

  1. Алгоритмы, упомянутые в разделе «Точные алгоритмы» wiki
  2. Алгоритмы аппроксимации, использующие преимущества специального графатакие свойства, как граф планарный или граф единичных дисков .
  3. Алгоритмы, которые находят дробную раскраску графа.

Этот последний имеет для меня особое значение.

На данный момент я нашел список на этой странице , но ни один из них не имеет ни одного из вышеперечисленных алгоритмов.Более того, лучшим из них является код раскраски графиков Джо Калберсона , который был реализован в конце 90-х годов, поэтому он очень устарел с точки зрения отсутствия документированного API (не то, что это важно для того, о чем этот вопрос, но я подумал, что упомяну это).

Есть библиотека раскрасок графа Коала , которая имеет дух того, что я ищу, но если вы посмотрите на их исходный код он еще не выполнил обещание.Похоже, что он находится на очень ранних стадиях разработки.

Другие общие библиотеки графов упоминаются в этом вопросе о стекопереработке .Они включают в себя:

  1. Graphviz
  2. Boost Graph Library
  3. Лимон
  4. igraph
  5. OGDF

Следует отметить, что я использую Boost Graph Library длямного вещей.Фактически, это обеспечивает наивную реализацию раскраски вершин.Код Джо Калберсона (упомянутый выше) делает гораздо больше.

Ниже приведен список кода раскраски графов, который я обнаружил (и тестировал в большинстве случаев), но он все еще в основном не соответствует требованиям трех алгоритмов.классы выше.

  1. GraphCol - документация не на английском языке, вздох.
  2. Planarity - содержит алгоритм раскраски, который гарантирует 5-краска или лучше для плоских графов.
  3. Color-Coloring - представляется повторной реализацией небольшого числа алгоритмов, уже реализованных Джо Калберсоном (см. выше).

1 Ответ

1 голос
/ 28 марта 2011

Может быть, вы можете помочь себе с Boost Graph Library .

...