Найти все полные подграфы в графе
есть ли известный алгоритм или метод для поиска всех полных подграфов в графе? У меня есть неориентированный, невзвешенный граф, и мне нужно найти все подграфы внутри него, где каждый узел в подграфе связан друг с другом узлом в подграфе.
существует ли алгоритм для этого?
2 ответов
Это называется проблема камарилья; это сложно и в NP-complete в целом, и да, есть много алгоритмов для этого.
Если граф имеет дополнительные свойства (например, двудольный), то задача становится значительно проще и разрешима в полиномиальное время, но в остальном она очень сложна и полностью разрешима только для небольших графов.
Из Википедии
в информатике проблема клики относится к любой из проблем, связанных с поиском конкретных полных подграфов ("кликов") в графе, т. е. множеств элементов, где каждая пара элементов связана.
проблемы клики включают в себя:
- поиск максимальной клики (клика с наибольшим количеством вершин),
- поиск клики максимального веса в взвешенном графике,
- список всех максимальных клик (клики, которые не могут быть увеличены)
- решение проблемы решения проверки того, содержит ли граф клику больше заданного размера.
все эти проблемы сложны: задача решения клики NP-полная (одна из 21 NP-полных задач карпа), задача поиска максимальной клики является как неразрешимой с фиксированным параметром, так и трудной для аппроксимации, и перечисление всех максимальных клик может потребовать экспоненциального времени, поскольку существуют графики с экспоненциально большим количеством максимальных клик. Тем не менее, алгоритмы для этих задач, которые работают в экспоненциальном времени или обрабатывают некоторые более специализированные входные графики в полиномиальное время.
см. также
- мост Bron–Kerbosch
Ну, проблема нахождения K-вершинного подграфа в графе размера n имеет сложность
O (n^k K^2)
поскольку n^k
подграфы для проверки, и каждый из них имеет k^2
края.
то, что вы просите, поиск всех подграфов в графе является NP-полной проблемой и объясняется в алгоритме Bron-Kerbosch, перечисленном выше.