Найдите все полные подграфы на графике

Есть ли известный алгоритм или метод для поиска всех полных подграфов в графе? У меня есть неориентированный невзвешенный граф, и мне нужно найти все подграфы в нем, где каждый узел в подграфе связан с каждым другим узлом в подграфе.

Есть ли для этого существующий алгоритм?


person Mantas Vidutis    schedule 10.05.2010    source источник
comment
@bummi, ты ведь шутишь? StackOverflow изначально создан не только для решения вопросов по разработке алгоритмов, но и программные алгоритмы - это вторая тема, о которой я могу спросить в справочном центре. stackoverflow.com/help/on-topic   -  person Mantas Vidutis    schedule 11.02.2015


Ответы (2)


Это известно как проблема клики; это сложно и в целом является NP-полным, и да, для этого существует множество алгоритмов.

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

Из Википедии

В информатике проблема клики относится к любой из проблем, связанных с поиском определенных полных подграфов (клик) в графе, то есть наборов элементов, в которых каждая пара элементов связана.

К проблемам клики относятся:

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

Все эти проблемы сложны: проблема решения клики является NP-полной (одна из 21 NP-полных проблем Карпа), проблема поиска максимальной клики является одновременно труднопреодолимой с фиксированным параметром и трудной для аппроксимации, а перечисление всех максимальных клик может потребовать экспоненциальное время, поскольку существуют графы с экспоненциально большим числом максимальных клик. Тем не менее, есть алгоритмы для этих проблем, которые выполняются в экспоненциальном времени или которые обрабатывают определенные более специализированные входные графы за полиномиальное время.

Смотрите также

person polygenelubricants    schedule 10.05.2010
comment
наши домашние зрители должны заметить, что полный текст статьи находится за стеной членства ACM. - person Mantas Vidutis; 10.05.2010
comment
Привет, говоря NP-hard, вы имеете в виду, что не существует алгоритма, работающего за полиномиальное время? - person SexyBeast; 04.06.2013
comment
Да, NP-Hard означает, что не существует алгоритма, который мог бы решить эту проблему за асимптотически полиномиальное время. Более того, это означает, что исправление алгоритма НЕ может быть проверено за полиномиальное время. - person divanshu; 11.06.2013

Что ж, проблема поиска k-вершинного подграфа в графе размера n имеет сложность

O(n^k k^2)

Так как нужно проверить n^k подграфов, и каждый из них имеет k^2 ребра.

То, о чем вы просите, найти все подграфы в графе - это NP-полная проблема, которая объясняется в алгоритме Брон-Кербоша, указанном выше.

person Pradeep Banavara    schedule 07.08.2018