Минимальное покрывающее дерево графика
возвращает минимальное связующее дерево, T = minspantree(G)T, для графика G.
использует дополнительные параметры, указанные одним или несколькими аргументами пары Name-Value. Например, T = minspantree(G,Name,Value)minspantree(G,'Method','sparse') использует алгоритм Крускала для вычисления минимального покрывающего дерева.
Создайте и постройте график куба с взвешенными ребрами.
s = [1 1 1 2 5 3 6 4 7 8 8 8];
t = [2 3 4 5 3 6 4 7 2 6 7 5];
weights = [100 10 10 10 10 20 10 30 50 10 70 10];
G = graph(s,t,weights);
p = plot(G,'EdgeLabel',G.Edges.Weight);
Вычислите и постройте график минимального покрывающего дерева графика в верхней части графика. T содержит те же узлы, что и G, но подмножество ребер.
[T,pred] = minspantree(G); highlight(p,T)

Создайте и постройте график с несколькими компонентами.
s = {'a' 'a' 'a' 'b' 'b' 'c' 'e' 'e' 'f' 'f' 'f' 'f' 'g' 'g'};
t = {'b' 'c' 'd' 'c' 'd' 'd' 'f' 'g' 'g' 'h' 'i' 'j' 'i' 'j'};
G = graph(s,t);
p = plot(G,'Layout','layered');
Найти минимальный покрывающий лес для графика, начиная с узла i. Выделите полученный лес на участке. Имена узлов графика переносятся в минимальный график покрывающего дерева.
[T,pred] = minspantree(G,'Type','forest','Root',findnode(G,'i')); highlight(p,T)

Используйте вектор узлов-предшественников, pred, для создания направленной версии минимального покрывающего леса. Все ребра в этом дереве направлены от корневых узлов в каждом компоненте (узлы i и a).
rootedTree = digraph(pred(pred~=0),find(pred~=0),[],G.Nodes.Name); plot(rootedTree)

G - Входной графикgraph объектВходной график, заданный как graph объект. Использовать graph для создания неориентированного объекта графика.
Пример: G = graph(1,2)
Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.
[T,pred] = minspantree(G,'Method','sparse')'Method' - Алгоритм минимального покрывающего дерева'dense' (по умолчанию) | 'sparse'Минимальный алгоритм покрывающего дерева, указанный как разделенная запятыми пара, состоящая из 'Method' и один из вариантов в таблице.
| Выбор | Описание |
|---|---|
'dense' (по умолчанию) | Алгоритм Прима. Этот алгоритм начинается с корневого узла и добавляет ребра к дереву во время прохождения графа. |
'sparse' | Алгоритм Крускала. Этот алгоритм сортирует все ребра по весу, а затем добавляет их в дерево, если они не создают цикл. |
'Root' - Корневой узел1 (по умолчанию) | индекс узла | имя узлаКорневой узел, указанный как разделенная запятыми пара, состоящая из 'Root' и индекс узла или имя узла. Корневой узел по умолчанию: 1.
Если 'Method' является 'dense' (по умолчанию), то корневой узел является начальным.
Если 'Method' является 'sparse', то корневой узел используется только для вычисления pred, вектор узлов-предшественников.
Корневой узел можно указать в любом из следующих форматов:
| Стоимость | Пример |
|---|---|
| Индекс скалярного узла | 1 |
| Имя узла вектора символов | 'A' |
| Имя скалярного узла строки | "A" |
'Type' - Тип минимального покрывающего дерева'tree' (по умолчанию) | 'forest'Тип минимального покрывающего дерева, указанного как разделенная запятыми пара, состоящая из 'Type' и один из вариантов в таблице.
| Выбор | Описание |
|---|---|
'tree' |
Возвращается только одно дерево. Дерево содержит корневой узел. |
'forest' |
Возвращается лес с минимальными покрывающими деревьями. Другими словами, укажите |
T - Минимальное покрывающее деревоgraph объектМинимальное покрывающее дерево, возвращаемое как graph объект.
pred - Узлы-предшественникиУзлы-предшественники, возвращаемые как вектор индексов узлов. pred(I) - индекс узла предшественника узла I. По конвенции, pred(rootNode) = 0. Если Type является 'tree', то pred(I) = NaN для всех узлов I , которые находятся не в том же компоненте, что и корневой узел.
pred указывает направленную версию минимального покрывающего дерева со всеми ребрами, направленными от корневого узла.
Для связных графов покрывающее дерево - это подграф, который соединяет каждый узел графа, но не содержит циклов. Может быть много покрывающих деревьев для любого данного графа. При назначении веса каждой кромке различным покрывающим деревьям присваивается номер для общего веса их кромок. Минимальное связующее дерево - это связующее дерево, края которого имеют наименьший общий вес.
Для графов с равными весами рёбер все покрывающие деревья являются минимальными покрывающими деревьями, так как пересечение n узлы требуют n-1 края.
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.