2010-06-09 4 views
1

Я хотел бы знать быстрый алгоритм, чтобы найти только номер клики (без фактического нахождения клики) графа с примерно 100 вершинами.clique number of graph

Я пытаюсь решить следующую проблему. http://uva.onlinejudge.org/external/1/193.html

+1

@poly: http://en.wikipedia.org/wiki/Clique_number#Definitions – kennytm

+2

Число кликов - это число вершин в максимальной клике. – copperhead

+0

Спасибо за ссылку UVA; Я попытаюсь работать над этим в выходные. Обратите внимание, что проблема заключается в Brute Force/Backtracking - простые категории, однако: http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=108&page=show_problem&problem=129 – polygenelubricants

ответ

3

Это NP-полный, и вы не можете сделать это намного лучше, чем на самом деле находить максимальную клику и подсчитывать ее вершины. От Wikipedia:

Clique проблемы включают в себя:

  • решения проблемы принятия тестирования содержит ли граф кликой больше, чем N

Эти проблемы все сложно: Клика проблема решение составляет NP -полный (один из Карпа 21 NP -полные проблемы),

Если вы можете найти номер клики в P, тогда проблема решения ответит в P (вы просто вычислите номер клики и сравните его с N).

Поскольку проблема решения - NP-Complete, поиск номера клики общего графика должен быть NP-Hard.

1

Как уже было сказано другими, это, вероятно, очень сложно.

Но, как и многие теоретически сложные проблемы, на практике это может быть довольно быстро с хорошим алгоритмом и подходящими данными. Если вы реализуете что-то вроде Bron-Kerbosch для поиска кликов, а отслеживая наибольший размер клики, который вы нашли до сих пор, вы можете отступить от бесплодных поисковых деревьев.

Например, если вы нашли клику с 20 узлами в ней, и ваша сеть имеет большое количество узлов со степенью менее 20, вы можете немедленно исключить эти узлы из дальнейшего рассмотрения. С другой стороны, если распределение степени более однородно, то это может быть так же медленным, как поиск всех клик.

1

Хотя проблема в NP-hard, размер шрифта, который вы упомянули, не является проблемой для самых быстрых максимальных максимальных кликов сегодняшнего дня (для любой конфигурации).

Если вы готовы реализовать код, я рекомендую вам ознакомиться с документами, связанными с семейством алгоритмов MCQ, MCR и MCS, а также с семейными BBMC, BBMCL и BBMCX. Интересной отправной точкой является сравнительный обзор Prosser [Prosser 12]. Он включает объяснение реализации Java этих алгоритмов.