shortestpath (biograph)

Решите задачу кратчайшего пути в объекте биографика

Синтаксис

[dist, path, pred] = shortestpath(BGObjS)
[dist, path, pred] = shortestpath(BGObjST)
[...] = shortestpath(..., 'Directed', DirectedValue, ...)
[...] = shortestpath(..., 'Method', MethodValue, ...)
[...] = shortestpath(..., 'Weights', WeightsValue, ...)

Аргументы

BGObj Объект биографика, созданный biograph (конструктор объектов).
SУзел в графике, представленном матрицей смежности N на N, извлеченной из объекта биографика, BGObj.
TУзел в графике, представленном матрицей смежности N на N, извлеченной из объекта биографика, BGObj.
DirectedValueСвойство, которое указывает, извлечен ли из объекта биографика графиков, представленный матрицей смежности N на N BGObj, направлен или неориентирован. Введите false для неориентированного графа. Это приводит к игнорированию верхнего треугольника разреженной матрицы. По умолчанию это true.
MethodValueВектор символов, которая задает алгоритм, используемый для поиска кратчайшего пути. Варианты:
  • 'Bellman-Ford' - Принимает веса ребер ненулевыми записями в матрице смежности N на N. Сложность во времени O(N*E), где N и E являются числом узлов и кромками соответственно.

  • 'BFS' - Широта - первый поиск. Принимает все веса равными, и ненулевые значения в матрице смежности N на N, чтобы представлять ребра. Сложность во времени O(N+E), где N и E являются числом узлов и кромками соответственно.

  • 'Acyclic' - Принимает граф, представленный матрицей смежности N на N, извлеченной из объекта биографика, BGObj, чтобы быть ориентированным ациклическим графиком и что веса ребер являются ненулевыми записями в N-на-N матрице смежности. Сложность во времени O(N+E), где N и E являются числом узлов и кромками соответственно.

  • 'Dijkstra' - Алгоритм по умолчанию. Принимает веса ребер как положительные значения в матрице смежности N на N. Сложность во времени O(log(N)*E), где N и E являются числом узлов и кромками соответственно.

WeightsValueВектор-столбец, который задает пользовательские веса для ребер в матрице смежности N на N, извлеченной из объекта биографика BGObj. Он должен иметь одну запись для каждого ненулевого значения ( ребра) в матрице смежности N на N. Порядок пользовательских весов в векторе должен совпадать с порядком ненулевых значений в матрице смежности N на N, когда она пройдена по столбцу. Это свойство позволяет использовать нулевые веса. По умолчанию shortestpaths получает информацию о весе из ненулевых значений в матрице смежности N на N.

Описание

Совет

Для получения вводной информации о функциях теории графиков, см. «Функции теории графиков».

[dist, path, pred] = shortestpath(BGObjS) определяет кратчайшие пути с одним источником из узла S ко всем другим узлам в графике, представленной матрицей смежности N на N, извлеченной из объекта биографика, BGObj. Веса ребер являются ненулевыми значениями в матрице смежности N на N. dist являются ли N расстояния от источника до каждого узла (использование Infs для недоступных узлов и 0 для исходного узла). path содержит выигрышные пути к каждому узлу. pred содержит предшествующие узлы выигрышных путей.

[dist, path, pred] = shortestpath(BGObjST) определяет кратчайший путь от узла с одним источником-одним адресатом S к узлу T.

[...] = короткий путь (..., 'PropertyName', PropertyValue, ...) вызывает shortestpath с необязательными свойствами, которые используют пары имя/значение свойства. Можно задать одно или несколько свойств в любом порядке. Каждый PropertyName должны быть заключены в одинарные кавычки и нечувствительны к регистру. Эти имена свойства/пары значения свойств следующие:

[...] = shortestpath(..., 'Directed', DirectedValue, ...) указывает, извлечен ли из объекта биографика графиков, представленный матрицей смежности N на N BGObj, направлен или неориентирован. Задайте DirectedValue на false для неориентированного графа. Это приводит к игнорированию верхнего треугольника разреженной матрицы. По умолчанию это true.

[...] = shortestpath(..., 'Method', MethodValue, ...) позволяет вам задать алгоритм, используемый для поиска кратчайшего пути. Варианты:

  • 'Bellman-Ford' - Принимает веса ребер ненулевыми записями в матрице смежности N на N. Сложность во времени O(N*E), где N и E являются числом узлов и кромками соответственно.

  • 'BFS' - Широта - первый поиск. Принимает все веса равными, и ненулевые значения в матрице смежности N на N, чтобы представлять ребра. Сложность во времени O(N+E), где N и E являются числом узлов и кромками соответственно.

  • 'Acyclic' - Принимает граф, представленный матрицей смежности N на N, извлеченной из объекта биографика, BGObj, чтобы быть ориентированным ациклическим графиком и что веса ребер являются ненулевыми записями в N-на-N матрице смежности. Сложность во времени O(N+E), где N и E являются числом узлов и кромками соответственно.

  • 'Dijkstra' - Алгоритм по умолчанию. Принимает веса ребер как положительные значения в матрице смежности N на N. Сложность во времени O(log(N)*E), где N и E являются числом узлов и кромками соответственно.

[...] = shortestpath(..., 'Weights', WeightsValue, ...) позволяет задать пользовательские веса для ребер. WeightsValue - вектор-столбец, имеющая одну запись для каждого ненулевого значения (ребра) в матрице смежности N на N, извлеченной из объекта биографика, BGObj. Порядок пользовательских весов в векторе должен совпадать с порядком ненулевых значений в матрице смежности N на N, когда она пройдена по столбцу. Это свойство позволяет использовать нулевые веса. По умолчанию shortestpath получает информацию о весе из ненулевых значений в матрице смежности N на N.

Ссылки

[1] Dijkstra, E.W. (1959). Примечание о двух задачах в соединении с графиками. Нумерише Математик 1, 269-271.

[2] Bellman, R. (1958). По проблеме маршрутизации. Ежеквартально по прикладной математике 16 (1), 87-90.

[3] Siek, J.G., Lee, L-Q, and Lumsdaine, A. (2002). Руководство пользователя библиотеки График (Upper Saddle River, NJ: Pearson Education).

Введенный в R2006b