主要内容

conncomp

连通图组件

描述

例子

垃圾箱= conncomp (G返回连接组件的图G垃圾箱。bin编号表示图中的每个节点属于哪个组件。

  • 如果G为无向图,则如果有路径连接两个节点,则两个节点属于同一个组件。

  • 如果G是有向图,则两个节点只有在两个方向上有路径连接时才属于同一个强分量。

例子

垃圾箱= conncomp (G名称,值使用由一个或多个名称-值对参数指定的其他选项。例如,conncomp (G, OutputForm”、“细胞”)返回一个单元格数组来描述连接的组件。

垃圾箱binsizes= concomp (___还返回连接的组件的大小。binsizes(我)给出组件中的节点数

例子

全部折叠

创建并绘制具有三个连接组件的无向图。使用conncomp确定每个节点属于哪个组件。

G = graph([1 1 4],[2 3 5],[1 1 1],6);情节(G)

图中包含一个轴对象。axis对象包含一个graphplot类型的对象。

bin = conncomp(G)
垃圾箱=1×61 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 =有向图(s,t);情节(G,“布局”“分层”

图中包含一个轴对象。axis对象包含一个graphplot类型的对象。

str_bins = conncomp(G)
str_bins =1×104 4 4 4 4 4 6 5 1 3 2
weak_bin = conncomp(G,“类型”“弱”
weak_bins =1×101 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 =有向图(s,t,[],20);情节(G,“布局”“分层”

图中包含一个轴对象。axis对象包含一个graphplot类型的对象。

计算弱连接组件并指定两个输出conncomp得到每个组件的大小。

[bin,binsize] = conncomp(G,“类型”“弱”
本=1×2011 11 11 2 2 2 3 4 5 6 7 8 9 10 11 12
binsize =1×127 3 1 1 1 1 1 1 1 1 1 1 1 1 1 1

使用binsize从图中提取最大的分量。idx是一个逻辑索引,指示每个节点是否属于最大组件。的子图函数提取所选择的节点idxG

Idx = binsize(bin) == max(binsize);SG =子图(G, idx);情节(SG)

图中包含一个轴对象。axis对象包含一个graphplot类型的对象。

类似的用法binsizes是根据大小过滤组件。这个过程类似于提取最大的组件,但是在这种情况下,每个节点可以属于满足大小要求的任何组件。

过滤掉所有的组件G节点数小于3的。idx是一个逻辑索引,指示每个节点是否属于具有3个或更多节点的组件。

Idx = binsize(bin) >= 3;SG =子图(G, idx);情节(SG)

图中包含一个轴对象。axis对象包含一个graphplot类型的对象。

输入参数

全部折叠

输入图形,指定为a有向图对象。使用创建无向图或有向图创建有向图。

例子:G =图(1,2)

例子:G =有向图([1 2],[2 3])

名称-值参数

指定可选参数对为Name1 = Value1,…,以=家,在那里的名字参数名称和价值对应的值。名称-值参数必须出现在其他参数之后,但对的顺序无关紧要。

在R2021a之前,使用逗号分隔每个名称和值,并将其括起来的名字在报价。

例子:bin = conncomp(G,'OutputForm','cell')

输出类型,指定为逗号分隔的对,由“OutputForm”,要么“向量”“细胞”

选项 输出
“向量”(默认) 垃圾箱数值向量,指示每个节点属于哪个连接的组件。
“细胞” 垃圾箱是单元格数组,和垃圾箱{j}包含属于组件的所有节点的节点idj

请注意

“类型”选项仅支持用于创建的万博1manbetx有向图有向图

连接组件的类型,指定为由逗号分隔的对组成“类型”,要么“强”(默认)或“弱”

选项 结果
“强”(默认) 只有当两个节点之间存在连接路径时,它们才属于同一个连接组件这两个的方向。
“弱” 如果有路径连接两个节点,则两个节点属于同一个连接组件,忽略边缘方向。

例子:bin = conncomp(G,'Type','weak')计算有向图的弱连通分量G

输出参数

全部折叠

连接的组件,作为向量或单元格数组返回。bin编号将图中的每个节点分配给连接的组件:

  • 如果OutputForm“向量”(默认)垃圾箱数值向量,指示每个节点所属的连接组件(bin)。

  • 如果OutputForm“细胞”,然后垃圾箱是单元格数组,与垃圾箱{j}包含属于组件的所有节点的节点idj

每个连接组件的大小,作为一个向量返回。binsizes(我)给出组件中元素的个数.的长度binsizes等于连接组件的数量,马克斯(箱)

更多关于

全部折叠

弱连通分量

如果存在连接两个节点的路径(忽略边缘方向),则两个节点属于同一个弱连接组件。两个弱连接组件之间没有边。

强分量和弱分量的概念只适用于有向图,因为它们对于无向图是等价的。

强连接组件

如果两个节点在两个方向上都有路径连接,则两个节点属于同一个强连接分量。两个强连接组件之间可以有边,但这些连接边从来不是循环的一部分。

强连通分量的仓号是这样的:连接两个分量的任何边都是从仓号较小的分量指向仓号较大的分量。

强分量和弱分量的概念只适用于有向图,因为它们对于无向图是等价的。

扩展功能

版本历史

在R2015b中引入

另请参阅

||