Самый короткий путь между двумя одинарными узлами
вычисляет самый короткий путь, начиная с исходного узла P
= shortestpath(G
,s,t
)s
и заканчивается на целевом узле t
. Если график взвешен (то есть G.Edges
содержит переменную Weight
), затем эти веса используются в качестве расстояний вдоль ребер в графике. В противном случае все расстояния по ребрам будут 1
.
опционально задает алгоритм, который будет использоваться при вычислении кратчайшего пути. Для примера, если P
= shortestpath(G
,s,t
,'Method',algorithm
)G
является взвешенным графиком, тогда shortestpath(G,s,t,'Method','unweighted')
игнорирует веса кромок в G
и вместо этого рассматривает все веса кромок как 1
.
The shortestpath
, shortestpathtree
, и distances
функции не поддерживают неориентированные графы с отрицательными весами ребер или вообще любой график, содержащий отрицательный цикл, по этим причинам:
Отрицательный цикл - это путь, который ведет от узла назад к себе, при этом сумма весов ребер на пути отрицательная. Если отрицательный цикл находится на пути между двумя узлами, то между узлами не существует кратчайшего пути, поскольку более короткий путь всегда можно найти, пройдя отрицательный цикл.
Один отрицательный вес ребра в неориентированном графе создает отрицательный цикл.
digraph
| distances
| graph
| nearest
| shortestpathtree