Найдите минимальное покрывающее дерево в графике
[
Tree
, pred
]
= graphminspantree(G
)
[Tree
, pred
]
= graphminspantree(G
, R
)
[Tree
, pred
]
= graphminspantree(..., 'Method', MethodValue
, ...)
[Tree
, pred
]
= graphminspantree(..., 'Weights', WeightsValue
, ...)
G | N-на-N разреженная матрица, которая представляет неориентированный граф. Ненулевые значения в матричных G представляют веса ребер. |
R | Скаляр между 1 и числом узлов. |
Совет
Для получения вводной информации о функциях теории графиков, см. «Функции теории графиков».
[
находит ациклическое подмножество ребер, которое соединяет все узлы неориентированного графа Tree
, pred
]
= graphminspantree(G
)G
и для которого общий вес минимизируется. Веса ребер являются ненулевыми значениями в нижнем треугольнике разреженной матрицы N на N G
. Выходные Tree
является покрывающим деревом, представленным разреженной матрицей. Выходные pred
- вектор, содержащий предшествующие узлы минимального покрывающего дерева (MST) с корневым узлом, обозначенным 0
. Корневой узел по умолчанию является первым узлом в самом большом связном компоненте. Для этот расчет требуется дополнительный вызов graphconncomp
функция.
[
устанавливает корень минимального покрывающего дерева в узел Tree
, pred
]
= graphminspantree(G
, R
)R
.
[
вызывает Tree
, pred
] = graphminspantree (..., 'PropertyName
', PropertyValue
, ...)graphminspantree
с необязательными свойствами, которые используют пары имя/значение свойства. Можно задать одно или несколько свойств в любом порядке. Каждый PropertyName
должны быть заключены в одинарные кавычки и нечувствительны к регистру. Эти имена свойства/пары значения свойств следующие:
[
позволяет вам задать алгоритм, используемый для поиска минимального покрывающего дерева (MST). Варианты:Tree
, pred
]
= graphminspantree(..., 'Method', MethodValue
, ...)
'Kruskal'
- Выращивает минимальное покрывающее дерево (MST) по одному ребру за раз, находя ребро, который соединяет два дерева в растущем лесу растущих MST. Сложность во времени O(E+X*log(N))
, где X
количество ребер не больше, чем самое длинное ребро в MST, и N
и E
являются числом узлов и кромками соответственно.
'Prim'
- Алгоритм по умолчанию. Наращивает минимальное покрывающее дерево (MST) по одному ребру за раз путем добавления минимального ребра, который соединяет узел в растущем MST с любым другим узлом. Сложность во времени O(E*log(N))
, где N
и E
являются числом узлов и кромками соответственно.
Примечание
Когда график не связан, алгоритм Прима возвращает только дерево, которое содержит R, в то время как алгоритм Крускаля возвращает MST для каждого компонента.
[
позволяет задать пользовательские веса для ребер. Tree
, pred
]
= graphminspantree(..., 'Weights', WeightsValue
, ...)WeightsValue
является вектором-столбцом, имеющим одну запись для каждого ненулевого значения (края) в матрице G
. Порядок пользовательских весов в векторе должен совпадать с порядком ненулевых значений в матрице G
при прохождении по столбцу. По умолчанию graphminspantree
получает информацию о весе из ненулевых значений в матрице G
.
Создайте и просмотрите неориентированный график с 6 узлами и 11 ребрами.
W = [.41 .29 .51 .32 .50 .45 .38 .32 .36 .29 .21]; DG = sparse([1 1 2 2 3 4 4 5 5 6 6],[2 6 3 5 4 1 6 3 4 2 5],W); UG = tril(DG + DG') UG = (2,1) 0.4100 (4,1) 0.4500 (6,1) 0.2900 (3,2) 0.5100 (5,2) 0.3200 (6,2) 0.2900 (4,3) 0.5000 (5,3) 0.3200 (5,4) 0.3600 (6,4) 0.3800 (6,5) 0.2100 view(biograph(UG,[],'ShowArrows','off','ShowWeights','on'))
Найдите и просмотрите минимальное покрывающее дерево неориентированного графа.
[ST,pred] = graphminspantree(UG) ST = (6,1) 0.2900 (6,2) 0.2900 (5,3) 0.3200 (5,4) 0.3600 (6,5) 0.2100 pred = 0 6 5 5 6 1 view(biograph(ST,[],'ShowArrows','off','ShowWeights','on'))
[1] Крускаль, Дж. Б. (1956). На самом коротком покрывающем поддереве графика и задачи коммивояжера. Труды Американского математического общества 7, 48-50.
[2] Прим, Р. (1957). Кратчайшие сети соединений и некоторые обобщения. Bell System Technical Journal 36, 1389-1401.
[3] Siek, J.G. Lee, L-Q, and Lumsdaine, A. (2002). Руководство пользователя библиотеки График (Upper Saddle River, NJ: Pearson Education).
graphallshortestpaths
| graphconncomp
| graphisdag
| graphisomorphism
| graphisspantree
| graphmaxflow
| graphpred2path
| graphshortestpath
| graphtopoorder
| graphtraverse
| minspantree