K-клика с максимальным весом в полном графе K-partite

Моя Проблема

есть ли эффективный алгоритм для поиска максимального веса (или минимального веса) k -клик полное k - partite graph (граф, в котором вершины смежны, если и только если они принадлежат к различным множествам partite в соответствии с Википедия)?

подробнее об условиях

клика максимального веса: каждое ребро на графике имеет вес. Этот вес клики-это сумма весов всех ребер в клике. Цель состоит в том, чтобы найти клику с максимальным весом.

обратите внимание, что размер клики равен k, который является максимально возможным размером клики в полном графе K-partite.

что я пробовал

Я встретил эту проблему во время проекта. Поскольку я не человек CS, я не уверен в сложности и т. д.

я погуглил несколько взаимосвязанных документов, но ни один из они занимаются той же проблемой. Я также запрограммировал жадный алгоритм + имитационный отжиг, чтобы справиться с ним (результат кажется не очень хорошим). Я также пробовал что-то вроде динамического программирования (но это не кажется эффективным). Поэтому я задаюсь вопросом, Можно ли эффективно вычислить точный Оптимал. Спасибо заранее.

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

2 ответов


максимальная задача клики в взвешенном графе в целом неразрешима. В вашем случае, если граф содержит N узлов, вы можете перечислить все возможные K-клики за N ** k раз. Если K фиксирован (не знаю, если это так), ваша проблема тривиально полиномиально разрешима, так как это полином в N. Я не считаю, что проблема может быть разрешима, если k является свободным параметром, потому что я не вижу, как предположение о графе k-partite значительно упростит задачу из генерал один.

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


обобщенная задача максимальной клики (GMCP)

  • Я понимаю, что вы ищете обобщенную проблему максимальной/ минимальной клики (GMCP), где поиск клики с максимальным счетом или минимальной стоимостью является проблемой оптимизации.
  • эта проблема является NP-трудной проблемой, как показано в обобщенные проблемы проектирования сетей, поэтому в настоящее время нет полиномиального точного решения вашей проблемы.
  • Так, нет полиномиальное решение вашей проблемы, у вас есть 2 варианта. Уменьшение размера проблемы, чтобы найти точное решение или найти оценочное решение, ослабляя вашу проблему, и это приводит вас к оценке оптимального решения.

пример и решение для небольшого размера проблема

  • в небольших K-частичных графах (в нашем случае k равно 30, и каждая частица имеет 92 узла) мы смогли получить оптимальное решение в разумное время тяжелой ветвью и алгоритм ограничения. Мы преобразовали задачу в другую NP-трудную задачу (смешанное целочисленное Программирование), уменьшили количество целочисленных переменных и использовали IBM Cplex optimizer для поиска оптимального решения GMCP.
  • вы можете найти страница проекта бумага и полезны. Я также могу поделиться с вами кодом.

Как оценить решение

  • одна прямая оценка этой NP-трудной задачи расслабляет смешанное целое число Задача программирования и решить ее как задачу линейного программирования. Конечно, это даст вам оценку решения, но все же вы можете получить разумный ответ на практике.

более общая задача (обобщенная максимальная задача с несколькими кликами)

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