biconncomp

Двухсоединенные компоненты графика

Описание

пример

bins = biconncomp(G) возвращает двухсоединенные компоненты график G как интервалы. Номера интервалов указывают, к какому двухсоединенному компоненту принадлежит каждое ребро в графике. Каждое ребро в G принадлежит одному двухсоединенному компоненту, в то время как узлы в G может принадлежать более чем одному двухсоединенному компоненту. Два узла относятся к одному и тому же двухсоединенному компоненту, если удаление какого-либо одного узла из графика не отключает их.

пример

bins = biconncomp(G,'OutputForm',form), где form является 'cell', возвращает выход как массив ячеек, такой что bins{j} содержит идентификаторы узла всех узлов в компоненте j. Значение по умолчанию для form является 'vector'.

пример

[bins,iC] = biconncomp(___) дополнительно возвращает индексы узлов iC указывает, какие узлы являются вырезанными вершинами (также называемыми точками сочленения).

Примеры

свернуть все

Создайте и постройте график. Окрашивайте ребра на основе того, к какому двухсоединенному компоненту принадлежит каждое ребро.

s = [1 1 2 2 3 4 4 5 6 6 7 7 8];
t = [2 3 3 4 4 5 7 6 7 10 8 9 9];
G = graph(s,t);
p = plot(G,'LineWidth',2);

Figure contains an axes. The axes contains an object of type graphplot.

p.EdgeCData =  biconncomp(G);

Figure contains an axes. The axes contains an object of type graphplot.

В этом примере показано, как извлечь двухсоединенные компоненты из графика как подграфики, а затем пометить узлы в каждом подграфике, используя индексы узлов в исходном графике.

Создайте и постройте график.

s = [1 1 2 2 3 4 4 5 6 6 7 7 8];
t = [2 3 3 4 4 5 7 6 7 10 8 9 9];
G = graph(s,t);
plot(G)

Figure contains an axes. The axes contains an object of type graphplot.

Сгруппируйте узлы графика в интервалы на основе двухсоединенных компонентов (компонентов ), к которым принадлежит каждый узел. Затем закольцовывайте каждое из интервалов и извлеките подграфик для каждого двухсоединенного компонента. Пометьте узлы в каждом подграфике, используя их исходные индексы узлов.

bincell = biconncomp(G, 'OutputForm', 'cell');
n = length(bincell);

for ii = 1:n
    subplot(2,2,ii)
    plot(subgraph(G, bincell{ii}), 'NodeLabel', bincell{ii});
end

Figure contains 4 axes. Axes 1 contains an object of type graphplot. Axes 2 contains an object of type graphplot. Axes 3 contains an object of type graphplot. Axes 4 contains an object of type graphplot.

Идентифицируйте вырезанные вершины в график и затем подсвечивайте эти вершины в график графика.

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

s = [1 1 2 2 3 4 4 5 6 6 7 7 8];
t = [2 3 3 4 4 5 7 6 7 10 8 9 9];
G = graph(s,t);
p = plot(G);

Figure contains an axes. The axes contains an object of type graphplot.

[edgebins,iC] = biconncomp(G)
edgebins = 1×13

     4     4     4     4     4     3     3     3     3     2     1     1     1

iC = 1×3

     4     6     7

Узлы 4, 6 и 7 являются вырезанными вершинами график G. Использование highlight чтобы увеличить вершины разреза, на которые ссылаются в iC.

highlight(p, iC)

Figure contains an axes. The axes contains an object of type graphplot.

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

свернуть все

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

Пример: G = graph(1,2)

Тип выхода, заданный в качестве одного из следующих значений:

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

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

свернуть все

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

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

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

Индексы вырезанных вершин, возвращенные как вектор числовых идентификаторов узла.

Подробнее о

свернуть все

Двухсоединенные компоненты

Двухсоединенный компонент графика является максимально двухсоединенным подграфиком. График соединяется двоично, если он не содержит каких-либо вырезанных вершин.

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

Рисунок изображает:

  • (a) Неориентированный граф с 11 узлами.

  • (b) Пять двухсоединенных компонентов графика с вырезанными вершинами исходного графика, окрашенными для каждого компонента, к которому они относятся.

  • (c) Блочное дерево графика, которое содержит узел для каждого двухсоединенного компонента (как большие круги) и узел для каждой вырезанной вершины (как меньшие многоцветные круги). В дереве вырезов блоков ребра соединяет каждую вершину выреза с каждым компонентом, к которому она принадлежит.

Вырезать вершины

Также известные как точки сочленения, вырезанные вершины являются узлами графика, удаление которых увеличивает количество связанных компонентов. На предыдущем рисунке вырезанными вершинами являются те узлы с более чем одним цветом: узлы 4, 6 и 7.

Введенный в R2016b