conncomp

Компоненты связного графа

Синтаксис

bins = conncomp(G)
bins = conncomp(G,Name,Value)
[bins,binsizes] = conncomp(___)

Описание

пример

bins = conncomp(G) возвращает связанные компоненты графика G как интервалы. Числа интервала указывают, какому компоненту каждый узел в графике принадлежит.

  • Если G является неориентированным графом, то два узла принадлежат тому же компоненту, если существует путь, соединяющий их.

  • Если G является ориентированным графом, то два узла принадлежат тому же сильному компоненту, только если существует путь, соединяющий их в обоих направлениях.

пример

bins = conncomp(G,Name,Value) использует дополнительные опции, заданные одним или несколькими Аргументами в виде пар "имя-значение". Например, conncomp(G,'OutputForm','cell') возвращает массив ячеек, чтобы описать связанные компоненты.

[bins,binsizes] = conncomp(___) также возвращает размер связанных компонентов. binsizes(i) дает количество узлов в компоненте i.

Примеры

свернуть все

Создайте и постройте график неориентированного графа с тремя связанными компонентами. Используйте 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)

Входные параметры

свернуть все

Входной график, заданный как объект граф или диграф. Используйте граф для создания неориентированного графа или диграф для создания ориентированного графа.

Пример: G = график (1,2)

Пример: G = digraph([1 2],[2 3])

Аргументы в виде пар имя-значение

Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми. Имя (Name) — это имя аргумента, а значение (Value) — соответствующее значение. Имя должно появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: интервалы = conncomp (G, 'OutputForm', 'ячейка')

Тип вывода, заданного как пара, разделенная запятой, состоящая из 'OutputForm' и или 'vector' или 'cell'.

ОпцияВывод
'vector' (значение по умолчанию)bins является числовым вектором, указывающим, который соединил компонент, которому принадлежит каждый узел.
ячейкаbins является массивом ячеек, и bins{j} содержит идентификаторы узла для всех узлов, которые принадлежат компоненту j.

Примечание

Опция 'Type' поддержана только для ориентированных графов, созданных с помощью digraph.

Тип связанных компонентов, заданных как пара, разделенная запятой, состоящая из 'Type' и или 'strong' (значение по умолчанию) или 'weak'.

ОпцияРезультат
'strong' (значение по умолчанию)Два узла принадлежат тому же связанному компоненту, только если существует путь, соединяющий их в обоих направлениях.
'weak'Два узла принадлежат тому же связанному компоненту, если существует путь, соединяющий их, игнорируя граничные направления.

Пример: интервалы = conncomp (G, 'Тип', 'слабый'), вычисляют слабо связанные компоненты ориентированного графа G.

Выходные аргументы

свернуть все

Связанные компоненты, возвращенные как векторный массив или массив ячеек. Числа интервала присваивают каждый узел в графике к связанному компоненту:

  • Если OutputForm является 'vector' (значение по умолчанию), то bins является числовым вектором, указывающим, который соединил компонент (интервал), каждый узел принадлежит.

  • Если OutputForm является 'cell', то bins является массивом ячеек с bins{j}, содержащим идентификаторы узла для всех узлов, которые принадлежат компоненту j.

Размер каждого связанного компонента, возвращенного как вектор. binsizes(i) дает число элементов в компоненте i. Длина binsizes равна количеству связанных компонентов, max(bins).

Больше о

свернуть все

Слабо соединенные компоненты

Два узла принадлежат тому же слабо связанному компоненту, если существует путь, соединяющий их (игнорирование граничного направления). Между двумя слабо связанными компонентами нет никаких краев.

Концепции сильных и слабых компонентов применяются только к ориентированным графам, когда они эквивалентны для неориентированных графов.

Строго соединенные компоненты

Два узла принадлежат тому же строго связанному компоненту, если существуют пути, соединяющие их в обоих направлениях. Между двумя строго связанными компонентами могут быть края, но эти соединительные края никогда не являются частью цикла.

Количества интервала строго связанных компонентов таковы, что любой край, соединяющий два компонента, указывает от компонента меньшего номера интервала к компоненту с большим номером интервала.

Концепции сильных и слабых компонентов применяются только к ориентированным графам, когда они эквивалентны для неориентированных графов.

Смотрите также

| |

Введенный в R2015b

Была ли эта тема полезной?