Дерево кратчайшего пути - Shortest-path tree

Учитывая связаны, ненаправленный график грамм, а дерево кратчайшего пути укорененный в вершине v это остовное дерево Т из грамм, такое, что расстояние от корня v в любую другую вершину ты в Т это кратчайший путь расстояние от v к ты в грамм.

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

  1. Вычислить расстояние (ты) кратчайшее расстояние от корня v к вершине ты в грамм с помощью Алгоритм Дейкстры или же Алгоритм Беллмана – Форда.
  2. Для всех некорневых вершин ты, мы можем назначить ты родительская вершина пты такой, что пты связан с ты, и это расстояние (пты) + edge_dist (пты,ты) = расстояние (ты). Если несколько вариантов пты существовать, выбрать пты для которого существует кратчайший путь из v к пты с минимальным количеством граней; это правило разрыва связей необходимо для предотвращения циклов, когда существуют циклы нулевой длины.
  3. Постройте дерево кратчайшего пути, используя ребра между каждым узлом и его родителем.

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

В графах, у которых веса всех ребер равны единице, деревья кратчайших путей совпадают с поиск в ширину деревья.

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

Смотрите также

Рекомендации

Кан, Роберт С. (1998). Дизайн глобальной сети: концепции и инструменты для оптимизации. Сеть. Морган Кауфманн. ISBN  978-1558604582.