Вычислите максимальный поток в ориентированном графе
[
MaxFlow
, FlowMatrix
, Cut
] = graphmaxflow(G
, SNode
, TNode
)
[...] = graphmaxflow(G
, SNode
, TNode
, ...'Capacity', CapacityValue
, ...)
[...] = graphmaxflow(G
, SNode
, TNode
, ...'Method', MethodValue
, ...)
G | N на n разреженная матрица, которая представляет ориентированного графа. Ненулевые записи в матричном G представляют мощности ребер. |
SNode | Узел в G . |
TNode | Узел в G . |
CapacityValue | Вектор-столбец, который задает пользовательские мощности к ребрам в матричном G . Это должно иметь одну запись для каждого ненулевого значения (ребро) в матричном G . Порядок пользовательских мощностей в векторе должен совпадать с порядком ненулевых значений в матричном G , когда это пересечено по столбцам. По умолчанию graphmaxflow получает полную информацию от ненулевых записей в матричном G . |
MethodValue | Вектор символов или строка, которая задает алгоритм, раньше находили минимальное дерево охвата (MST). Выбор:
|
Дополнительные сведения о функциях теории графов см. в Функциях Теории графов.
[
вычисляет максимальный поток ориентированного графа MaxFlow
, FlowMatrix
, Cut
] = graphmaxflow(G
, SNode
, TNode
)G
от узла SNode
к узлу TNode
. Вход G
является N на n разреженной матрицей, которая представляет ориентированного графа. Ненулевые записи в матричном G
представляют мощности ребер. Вывод MaxFlow
является максимальным потоком, и FlowMatrix
является разреженной матрицей со всеми значениями потока для каждого ребра. FlowMatrix
(X
, Y
) является потоком от узла X
к узлу Y
. Вывод Cut
является логическим вектором - строкой, указывающим на узлы, соединенные с SNode
после вычисления минимального сокращения между SNode
и TNode
. Если несколько решений минимальной проблемы сокращения существуют, то Cut
является матрицей.
Алгоритм, который определяет Cut
, все минимальные сокращения, имеет временную сложность
, где N является количеством узлов. Если эта информация не нужна, используйте функцию O(2^N)
graphmaxflow
без третьего вывода.
вызывает [...] = graphmaxflow(G, SNode, TNode, ...'PropertyName', PropertyValue, ...)
graphmaxflow
с дополнительными свойствами, которые используют имя свойства / пары значения свойства. Можно задать одно или несколько свойств в любом порядке. Каждый PropertyName
должен быть заключен в одинарные кавычки и нечувствительный к регистру. Это имя свойства / пары значения свойства следующие:
[...] = graphmaxflow(
позволяет вам задать пользовательские мощности к ребрам. G
, SNode
, TNode
, ...'Capacity', CapacityValue
, ...)CapacityValue
является вектор-столбцом, имеющим одну запись для каждого ненулевого значения (ребро) в матричном G
. Порядок пользовательских мощностей в векторе должен совпадать с порядком ненулевых значений в матричном G
, когда это пересечено по столбцам. По умолчанию graphmaxflow
получает полную информацию от ненулевых записей в матричном G
.
[...] = graphmaxflow(
позволяет вам указать, что алгоритм раньше находил минимальное дерево охвата (MST). Выбор:G
, SNode
, TNode
, ...'Method', MethodValue
, ...)
'Edmonds'
— Использует алгоритм Эдмондса и Карпа, реализация которого основана на изменении, названном алгоритмом маркировки. Временной сложностью является O(N*E^2)
, где N
и E
являются количеством узлов и ребер соответственно.
'Goldberg'
— Алгоритм по умолчанию. Использует алгоритм Голдберга, который использует общий метод, известный как нажатие перед потоком. Временной сложностью является O(N^2*sqrt(E))
, где N
и E
являются количеством узлов и ребер соответственно.
[1] Эдмондс, J. и Карп, R.M. (1972). Теоретические улучшения алгоритмической эффективности для сетевых проблем потока. Журнал ACM 19, 248-264.
[2] Голдберг, A.V. (1985). Новый Алгоритм Потока Max. Технический отчет MIT MIT/LCS/TM-291, Лаборатория для Информатики, MIT.
[3] Siek, J.G., Ли, L-Q и Lumsdaine, A. (2002). Руководство пользователя библиотеки графика повышения и справочник, (верхний Сэддл-Ривер, образование НДЖ:ПИРСОНА).
graphallshortestpaths
| graphconncomp
| graphisdag
| graphisomorphism
| graphisspantree
| graphminspantree
| graphpred2path
| graphshortestpath
| graphtopoorder
| graphtraverse
| maxflow