Я пытаюсь найти все максимальные клики в графе без перекрытия. функция max_cliques()
возвращает все возможные максимальные клики в графе, но я хочу, чтобы каждая вершина входила в только одну клику — в самую большую клику, частью которой она может быть.
например, если выходом max_cliques()
являются следующие клики:
{A,B,C}, {A,B,D}, {A,B,J,K}, {E,F,G,H}, {E,F,G,I}
Я хочу удалить некоторые клики, чтобы все вершины отображались ровно в одной клике, поэтому окончательный набор будет таким:
{A,B,J,K}, {E,F,G,H}
A и B входят в 3 клики, поэтому я хочу выбрать клики так, чтобы конечный набор включал максимально возможное количество вершин. если есть две возможные клики одинаковой длины, выберите случайную. (Я не возражаю, чтобы не включать все вершины)
Я был бы очень признателен за идею решить эту проблему, даже не вдаваясь в подробности клик - вопрос в основном заключается в том, как удалить самые короткие «списки», содержащие перекрывающиеся элементы.
заранее спасибо