Минимальное связующее дерево против кратчайшего пути


45

В чем разница между алгоритмом минимального связующего дерева и алгоритмом кратчайшего пути?

В моем классе структур данных мы рассмотрели два алгоритма минимального связующего дерева (Прима и Крускала) и один алгоритм кратчайшего пути (Дейкстры).

Минимальное остовное дерево - это дерево в графе, которое охватывает все вершины, а общий вес дерева минимален. Кратчайший путь вполне очевиден, это кратчайший путь от одной вершины к другой.

Чего я не понимаю, так как минимальное связующее дерево имеет минимальный общий вес, разве пути в дереве не будут кратчайшими? Кто-нибудь может объяснить, что мне не хватает?

Любая помощь приветствуется.


Вот мой пример к подобному вопросу, который доказывает, что минимальное остовное дерево не совпадает с кратчайшим путем. cs.stackexchange.com/a/43327/34363
атайенел

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

Ответы:


38

Рассмотрим граф треугольников с единичными весами - он имеет три вершины , и все три ребра { x , y } , { x , z } , { y , z } имеют вес 1 . Кратчайший путь между любыми двумя вершинами - это прямой путь, но если вы сложите их все вместе, вы получите треугольник, а не дерево. Каждая коллекция из двух ребер образует минимальное остовное дерево в этом графе, но если (например) вы выберете { x , y } , { y ,Икс,Y,Z{Икс,Y},{Икс,Z},{Y,Z}1 , тогда вы пропустите кратчайший путь { x , z } .{Икс,Y},{Y,Z}{Икс,Z}

В заключение, если вы сложите все кратчайшие пути, вы не обязательно получите дерево.


32

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

Однако значение, которое они минимизируют, отличается. Дейкстра выбирает в качестве следующего ребра тот, который ведет от дерева к узлу, еще не выбранному ближе всего к начальному узлу. (Затем при этом выборе расстояния пересчитываются.) Прим выбирает в качестве ребра самый короткий, ведущий из дерева, построенного до сих пор. Итак, оба алгоритма выбрали «минимальное преимущество». Основное отличие заключается в том, что значение выбрано минимальным. Для Дейкстры это длина полного пути от начального узла к узлу-кандидату, а для Prim это просто вес этого единственного ребра.

Икс,Y,Z{Икс,Y}{Икс,Z}{Y,Z}Икс{Икс,Y}{Икс,Z}{Икс,Y}{Y,Z}

деревья: Дейкстра против Крускала

Что касается Kruskal , это немного отличается. Он решает минимальное остовное дерево, но во время выполнения выбирает ребро, которое может не образовывать дерево, а просто избегает циклов. Таким образом, частичные решения могут быть отключены. В конце концов вы получаете дерево.


12

Хотя вычисления алгоритмов Минимального связующего дерева и Кратчайшего пути выглядят одинаково, они ориентированы на 2 различных требования.

В MST требование состоит в том, чтобы достичь каждой вершины один раз (создать дерево графа), а общая (коллективная) стоимость достижения каждой вершины должна быть минимальной среди всех возможных комбинаций.

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

Вот пример, чтобы прояснить, почему MST не обязательно дает кратчайший путь между 2 вершинами.

(A)----5---(B)----5---(C)
 |                     |
 |----------7----------| 

В случае MST ребра AB. BC будет на MST с общим весом 10. Таким образом, стоимость достижения A к C в MST равна 10.

Но в случае кратчайшего пути кратчайшим путем между A и C является AC, равный 7. AC никогда не был на MST.


4

Разница заключается в том, что является конечной целью этих алгоритмов.

Дейкстры - Здесь цель состоит в том, чтобы достичь от начала до конца. Вы обеспокоены только этими двумя пунктами и соответственно оптимизируете свой путь.

Krusal's - Здесь вы можете начать с любой точки и посетить все остальные точки на графике. Таким образом, вы не всегда можете выбрать кратчайший путь для любых двух точек. Вместо этого необходимо выбрать путь, который приведет вас к более короткому пути для всех остальных точек.


1

Я думаю, что пример прояснит ситуацию ..

введите описание изображения здесь

Охватывающее дерево выглядит как ниже. Это потому, что если мы сложим ребра в этой конфигурации, мы получим наименьшую возможную стоимость : 2 + 5 + 14 + 4 = 25.

(1)   (4)
  \   /
   (2)
  /   \
(3)   (5)

Глядя на связующее дерево, вы можете ошибочно думать, что оно дает вам кратчайшие пути, но на практике это не так. В качестве примера. Если бы мы хотели перейти от узла (1)к (4)нему, это стоило бы нам 7. Однако, если бы мы использовали алгоритм Дейкстры на исходном графе, мы бы обнаружили, что мы можем перейти непосредственно от узла (1)к (4)со стоимостью 5.


-1

Практический пример, чтобы показать разницу>

Предположим, вы приехали на поезде в город и хотите добраться до вашего отеля.

Вариант 1: Получить такси: Такси будет следовать по кратчайшему пути до отеля от станции. Если водитель должен следовать по пути вдоль дерева кратчайшего пути с центром на станции.

Вариант 2: сесть на автобус. Автобусная компания хочет обслуживать людей, а не только вас. Идеальная тропа будет проходить во всех ключевых точках города. Таким образом, он будет следовать (*) по пути вдоль минимального связующего дерева. Вот почему автобус медленнее, но поскольку расходы распределяются, он дешевле.

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


1
Добро пожаловать на сайт. Я не думаю, что ваша аналогия хорошая, поскольку маршрут, по которому ходит автобус, похоже, не имеет ничего общего с остовными деревьями. В частности, он не охватывает (он не посещает все точки города) и не является деревом. Скорее, это какой-то путь (или цикл), который посещает или проходит рядом с таким количеством значимых точек, как это разумно, так что маршрут является достаточно полезным для достаточно большого числа людей.
Дэвид Ричерби

-1

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

Разрез разбивает график на две составляющие. Это может включать несколько ребер. В MST мы выбираем ребро с наименьшим весом.

Расслабление краев говорит, что, если я знаю расстояние между A и B: dist (a, b) и dist между A и C: dist (a, c), если dist (a, b) + edge (b, c) меньше dist (a, c), тогда я могу расслабить ребро (ac). Расслабив все края, мы получаем кратчайший путь.

Я настоятельно рекомендую смотреть видео на алгоритмах графа от профессора Роберта Седжвика.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.