Почему нельзя использовать алгоритмы Прима или Крускала на ориентированном графе?

Алгоритмы Прима и Крускала используются для нахождения минимального остовного дерева графа, который связан и неориентирован. Почему их нельзя использовать на ориентированном графе?


person user1472747    schedule 26.03.2014    source источник
comment
а каково определение остовного дерева на ориентированном графе?   -  person elias    schedule 26.03.2014
comment
Аналогичной проблемой для MST для ориентированных графов была бы проблема минимальной стоимости остовного дерева или проблема минимального ветвления. алгоритм Эдмонда может быть реализован с той же асимптотической сложностью, что и Prim, но концептуально более сложный.   -  person Niklas B.    schedule 26.03.2014


Ответы (2)


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

 5
  --> a
 /   / ^
s   1| |2
 \   v /
  --> b
 3

Мы возьмем дугу a-> b стоимости 1, а затем застрянем, потому что мы действительно хотели s-> b стоимости 3 и b-> a стоимости 2.

Для Прима этот график проблематичен.

 5
  --> a
 /   /
s   1|
 \   v
  --> b
 3

Мы возьмем s-> b стоимости 3, но мы действительно хотели s-> a стоимости 5 и a-> b стоимости 1.

person David Eisenstat    schedule 26.03.2014
comment
Я хотел бы немного добавить, как в первом примере нельзя сформировать mst с помощью kruskal. Сначала мы получаем ребро (a, b) стоимости 1, а затем видим, что следующее полученное ребро (b, a) стоимости 2, но не может быть использовано, потому что a и b находятся в одном наборе и алгоритм Краскала победил. не позволяю это. Теперь идет ребро (s, b) стоимости 3, которое будет разрешено алгоритмом Краскала, потому что s и b не находятся в одном наборе, но если мы добавим (s, b) ребро, то сформированная структура не будет деревом, это граф, потому что в ориентированном дереве не может быть двух узлов с исходящей степенью 1. - person Anshu Shahi; 26.08.2019

Алгоритмы Прима и Краскала выводят минимальное остовное дерево для связанных и неориентированных графов. Если граф не связан, мы можем настроить алгоритмы для вывода минимальных остовных лесов.

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

В алгоритме Краскала идея состоит в том, чтобы отсортировать ребра в порядке возрастания по их весу, собрать их по порядку и включить их в MST исследуемых узлов / ребер, если они еще не образуют цикл с какими-либо исследованными узлами. Это делается с помощью структуры данных Union-Find. Но обнаружение циклов для ориентированных графов с этим методом не удается. Например, граф, содержащий ребра [1- ›2] [2-› 3] [1- ›3], будет считаться содержащим цикл с методом поиска объединения.

Таким образом, Prim терпит неудачу, потому что предполагает, что каждый узел доступен из каждого узла, что, хотя и верно для неориентированных графов, может быть неверным для орграфов. Крускал терпит неудачу из-за неспособности обнаружить циклы, и иногда необходимо добавить ребра, образующие циклы, чтобы удовлетворить свойству минимального веса MST.

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

person elborak9    schedule 28.02.2016
comment
:) Спасибо, седобородый. Исправлено сейчас !! - person elborak9; 29.02.2016
comment
терпит неудачу, потому что предполагает, что каждый узел доступен из каждого узла, который - ›Если у вас есть полный ориентированный граф (т.е. обратные ребра имеют разный вес), то алгоритм Прима все равно не даст вам минимального связующего дерева (эквивалент неориентированного графа) - person Karussell; 10.03.2021