Как убрать циклы в невзвешенном ориентированном графе, чтобы число ребер было максимальным? - PullRequest
13 голосов
/ 08 июня 2011

Пусть G - невзвешенный ориентированный граф, содержащий циклы.Я ищу алгоритм, который находит / создает все ациклические графы G ', состоящие из всех вершин в G и подмножества ребер G, достаточно малых, чтобы сделать G' ациклическим.

Более формально:требуемый алгоритм использует G и создает набор ациклических графов S, где каждый граф G 'в S удовлетворяет следующим свойствам:

  1. G' содержит все вершины G.
  2. G 'содержитподмножество ребер G, такое, что G 'ациклично.
  3. Число ребер G' максимизировано.Это означает: не существует G '', удовлетворяющего свойствам 1 и 2, так что G '' содержит больше ребер, чем G ', а G' 'ациклично.

Справочная информация: Исходный граф G моделируетпопарное упорядочение между элементами.Это не может быть использовано как упорядочение по всем элементам из-за циклов в графе.Таким образом, максимальные ациклические графы G 'должны моделировать максимально возможное приближение к этому упорядочению, стараясь максимально учитывать отношение парного упорядочения.

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

Примечание. Проблема может быть связана с остовным деревом, и вы можете определить графы G как вид * 1017.* направлено остовное дерево.Но имейте в виду, что в моем сценарии пара ребер в G 'может иметь одинаковую начальную или одинаковую конечную вершину.Это противоречит некоторым определениям направленных остовных деревьев, используемым в литературе .

РЕДАКТИРОВАТЬ: Добавлено интуитивно понятное описание, справочная информация и примечания, относящиеся к остовным деревьям.

Ответы [ 3 ]

10 голосов
/ 04 августа 2011

Эта проблема называется Набор дуги обратной связи . Так как это NP-жесткий, маловероятно, что вы найдете масштабируемый быстрый алгоритм. Однако, если ваши экземпляры малы, то алгоритмы, подобные описанному в статье «О перечислении всех минимальных решений проблем обратной связи» Б. Швиковского и Э. Шпекенмейера, могут работать.

1 голос
/ 09 июня 2011
0 голосов
/ 06 июля 2017

Если ваша цель заключается в удалении ребер циклов (разрывных циклов) при максимально возможном сохранении иерархий (структур) графов, эта работа может быть полезна: https://github.com/zhenv5/breaking_cycles_in_noisy_hierarchies

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...