Как применить алгоритм Дейкстры для графа, чтобы найти MST таким образом, чтобы результирующее дерево должно было иметь ребро между двумя заданными вершинами? (пример: MST должен включать ребро между X и Y)
Спасибо
Как применить алгоритм Дейкстры для графа, чтобы найти MST таким образом, чтобы результирующее дерево должно было иметь ребро между двумя заданными вершинами? (пример: MST должен включать ребро между X и Y)
Спасибо
Алгоритм Дейкстры предназначен для поиска кратчайших путей (не MST), но что-то похожее на алгоритм Дейкстры, модифицированное для поиска минимального остовного дерева, называется алгоритмом Прима. Алгоритм Прима сохраняет дерево, которое растет до тех пор, пока не охватит весь граф. Введенное здесь дополнительное ограничение не представляет особых трудностей: вы просто начинаете с X-Y в качестве дерева.
В частности, учитывая, что ваш MST должен включать ребро (X, Y) (если таких ребер несколько, выберите ребро с наименьшим весом), начните с вашего дерева, имеющего два узла X и Y и ребро между ними. Теперь на каждом шаге выберите наименьшее ребро (u, v), где u находится в вашем дереве, а v снаружи, добавьте узел v и ребро (u, v) в ваше дерево и повторите.