Компоненты связного графа
возвращает связанные компоненты графика bins
= conncomp(G
)G
как интервалы. Числа интервала указывают, какому компоненту каждый узел в графике принадлежит.
Если G
неориентированный граф, затем два узла принадлежат тому же компоненту, если существует путь, соединяющий их.
Если G
ориентированный граф, затем два узла принадлежат тому же сильному компоненту, только если существует путь, соединяющий их в обоих направлениях.
дополнительные опции использования заданы одним или несколькими Аргументами пары "имя-значение". Например, bins
= conncomp(G
,Name,Value
)conncomp(G,'OutputForm','cell')
возвращает массив ячеек, чтобы описать связанные компоненты.
Создайте и постройте неориентированного графа с тремя связанными компонентами. Используйте conncomp
определить, которому принадлежит компонент каждый узел.
G = graph([1 1 4],[2 3 5],[1 1 1],6); plot(G)
bins = conncomp(G)
bins = 1×6
1 1 1 2 2 3
Создайте и постройте ориентированного графа, и затем вычислите строго связанные компоненты и слабо соединенные компоненты. Слабо соединенные компоненты игнорируют направление соединяющихся ребер.
s = [1 2 2 3 3 3 4 5 5 5 8 8]; t = [2 3 4 1 4 5 5 3 6 7 9 10]; G = digraph(s,t); plot(G,'Layout','layered')
str_bins = conncomp(G)
str_bins = 1×10
4 4 4 4 4 6 5 1 3 2
weak_bins = conncomp(G,'Type','weak')
weak_bins = 1×10
1 1 1 1 1 1 1 2 2 2
Используйте второй выход conncomp
извлечь самый большой компонент графика или удалить компоненты ниже определенного размера.
Создайте и постройте ориентированного графа. График имеет один большой компонент, один маленький компонент и несколько компонентов, которые содержат только один узел.
s = [1 2 2 3 3 3 4 5 5 5 8 8 9]; t = [2 3 4 1 4 5 5 3 6 7 9 10 10]; G = digraph(s,t,[],20); plot(G,'Layout','layered')
Вычислите слабо связанные компоненты и задайте два выходных параметров к conncomp
получить размер каждого компонента.
[bin,binsize] = conncomp(G,'Type','weak')
bin = 1×20
1 1 1 1 1 1 1 2 2 2 3 4 5 6 7 8 9 10 11 12
binsize = 1×12
7 3 1 1 1 1 1 1 1 1 1 1
Используйте binsize
извлекать самый большой компонент из графика. idx
логический индекс, указывающий, принадлежит ли каждый узел самому большому компоненту. subgraph
функционируйте извлекает узлы, выбранные idx
от G
.
idx = binsize(bin) == max(binsize); SG = subgraph(G, idx); plot(SG)
Подобное использование binsizes
должен отфильтровать компоненты на основе размера. Процедура похожа на извлечение самого большого компонента, однако в этом случае каждый узел может принадлежать любому компоненту, который удовлетворяет требование размера.
Отфильтруйте любые компоненты в G
это имеет меньше чем 3 узла. idx
логический индекс, указывающий, принадлежит ли каждый узел компоненту с 3 или больше узлами.
idx = binsize(bin) >= 3; SG = subgraph(G, idx); plot(SG)
Задайте дополнительные разделенные запятой пары Name,Value
аргументы. Name
имя аргумента и Value
соответствующее значение. Name
должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN
.
bins = conncomp(G,'OutputForm','cell')
'OutputForm'
— Тип выхода'vector'
(значение по умолчанию) | 'cell'
Тип выхода, заданного как разделенная запятой пара, состоящая из 'OutputForm'
и любой 'vector'
или 'cell'
.
Опция | Вывод |
---|---|
'vector' (значение по умолчанию) | bins числовой вектор, указывающий, который соединил компонент, которому принадлежит каждый узел. |
'cell' | bins массив ячеек и bins{j} содержит идентификаторы узла для всех узлов, которые принадлежат j компонента . |
'Type'
— Тип связанных компонентов'strong'
(значение по умолчанию) | 'weak'
'Type'
опция поддерживается только для ориентированных графов, созданных с помощью digraph
.
Тип связанных компонентов, заданных как разделенная запятой пара, состоящая из 'Type'
и любой 'strong'
(значение по умолчанию) или 'weak'
.
Опция | Результат |
---|---|
'strong' (значение по умолчанию) | Два узла принадлежат тому же связанному компоненту, только если существует путь, соединяющий их в обоих направлениях. |
'weak' | Два узла принадлежат тому же связанному компоненту, если существует путь, соединяющий их, игнорируя направления ребра. |
Пример: bins = conncomp(G,'Type','weak')
вычисляет слабо связанные компоненты ориентированного графа G
.
bins
— Связанные компонентыСвязанные компоненты, возвращенные как векторный массив или массив ячеек. Числа интервала присваивают каждый узел в графике к связанному компоненту:
Если OutputForm
isvector
(значение по умолчанию), затем bins
числовой вектор, указывающий, который соединил компонент (интервал), каждый узел принадлежит.
Если OutputForm
iscell
, затем bins
массив ячеек, с bins{j}
содержа идентификаторы узла для всех узлов, которые принадлежат j
компонента.
binsizes
— Размер каждого связанного компонентаРазмер каждого связанного компонента, возвращенного как вектор. binsizes(i)
дает число элементов в i
компонента. Длина
binsizes
равно количеству связанных компонентов, max(bins)
.
Два узла принадлежат тому же слабо связанному компоненту, если существует путь, соединяющий их (игнорирование направления ребра). Между двумя слабо связанными компонентами нет никаких ребер.
Концепции сильных и слабых компонентов применяются только к ориентированным графам, когда они эквивалентны для неориентированных графов.
Два узла принадлежат тому же строго связанному компоненту, если существуют пути, соединяющие их в обоих направлениях. Между двумя строго связанными компонентами могут быть ребра, но эти соединительные ребра никогда не являются частью цикла.
Количества интервала строго связанных компонентов таковы, что любое ребро, соединяющее два компонента, указывает от компонента меньшего номера интервала к компоненту с большим номером интервала.
Концепции сильных и слабых компонентов применяются только к ориентированным графам, когда они эквивалентны для неориентированных графов.
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.