Ответ - нет. Чтобы понять почему, давайте сначала сформулируем вопрос так:
В: Для связного, неориентированного, взвешенного графа G = (V, E, w)
только с неотрицательными весами ребер, образует ли подграф предшественника, созданный алгоритмом Дейкстры, минимальное остовное дерево G?
(Обратите внимание, что неориентированные графы - это особый класс ориентированных графов, поэтому вполне нормально использовать алгоритм Дейкстры на неориентированных графах. Кроме того, MST определены только для связных, неориентированных графов и тривиальны, если граф не взвешен , поэтому мы должны ограничить наш запрос этими графиками.)
A: Алгоритм Дейкстры на каждом шаге жадно выбирает следующее ребро, ближайшее к некоторой исходной вершине s . Это происходит до тех пор, пока s не соединится с любой другой вершиной графа. Ясно, что созданный предшествующий подграф является остовным деревом G
, но минимизирована ли сумма весов ребер?
Алгоритм Прима , который, как известно, создает минимальное остовное дерево, очень похож на алгоритм Дейкстры, но на каждом этапе он жадно выбирает следующее ребро, ближайшее к любой вершине, в настоящее время находящейся в рабочий MST на этом этапе . Давайте использовать это наблюдение, чтобы произвести контрпример.
Контрпример: рассмотрим неориентированный граф G = (V, E, w)
, где
V = { a, b, c, d }
E = { (a,b), (a,c), (a,d), (b,d), (c,d) }
w = {
( (a,b) , 5 )
( (a,c) , 5 )
( (a,d) , 5 )
( (b,d) , 1 )
( (c,d) , 1 )
}
Взять a
в качестве исходной вершины.
![Picture of the Graph G](https://i.stack.imgur.com/dbUNR.png)
Алгоритм Дейкстры берет ребра { (a,b), (a,c), (a,d) }
.
Таким образом, общий вес этого остовного дерева составляет 5 + 5 + 5 = 15 .
Алгоритм Прима берет ребра { (a,d), (b,d), (c,d) }
.
Таким образом, общий вес этого остовного дерева составляет 5 + 1 + 1 = 7 .