Matlab中二部图的连通组件

菱形十二面体

我有两种类型的数据,X和Y。X中的每个x都与一定数量的Y相关联,Y中的每个y都可能与某些Xs相关或不相关。

X不与其他X关联,Y不与其他Y关联。所以情况看起来像这样:

连接的组件

左侧为Xs,右侧为Ys。

当我只有一种类型的数据时,我知道如何查找图的连接组件:创建一个N×N矩阵并对其进行调用graphconncomp当我有两种类型的数据时,如何查找所有连接的组件?

hai

如何将图的亲和力矩阵构造为稀疏矩阵

G = sparse( length(X)+length(Y), length(X)+length(Y) );

这将创建一个大小为|X|+|Y|-by-的“全零”稀疏矩阵|X|+|Y|
如果您输入

>> whos G

您会看到,尽管事实上G有大约50K ^ 2的内存,但几乎不需要占用任何内存。

现在,所有你要做的就是用你的函数来设置1的相应节点之间XY,然后你就可以运行graphconncompG


二分情况

要为二部图构造一个邻接矩阵,您可以(最初)使用一个更小的(仍然稀疏)B的size- |X|by-矩阵|Y|x=length(X)y=length(Y),然后

 B = sparse( x, y ); % if you have an estimate of the number of edges, you can preallocate here

如果节点连接到节点,则该条目B( ix, jy )设置为一旦完成构建,就可以使用它来简单地通过1X(ix)Y(jy)
BG

 G = [ sparse( x, x ), B; B.', sparse(y, y)];

请注意,我不用于zeros创建全零的矩阵,但是sparse构造会节省内存。

现在,您可以运行graphconncompG

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何定义连通二部图?

来自分类Dev

证明图是二部图

来自分类Dev

NetworkX中的二部图

来自分类Dev

二部图和动态规划

来自分类Dev

在R中创建二部图?

来自分类Dev

算法-平衡断开的二部图

来自分类Dev

二部图-卖方和买方

来自分类Dev

二部图匹配以匹配两组

来自分类Dev

这个二部图优化任务NP是否完成?

来自分类Dev

在Python中使用networkx绘制二部图

来自分类Dev

保留原始权重的加权双峰二部图投影

来自分类Dev

从python数据框的列构造二部图

来自分类Dev

二部图的所有可能的最大匹配

来自分类Dev

获取简单二部图的节点权重

来自分类Dev

如何用JUNG绘制二部图的投影

来自分类Dev

保留原始权重的加权双峰二部图投影

来自分类Dev

具有节点顺序的二部图

来自分类Dev

使用igraph绘制用Networkx创建的二部图

来自分类Dev

修改二部图,使其具有完美匹配

来自分类Dev

NetworkX - 生成随机连接的二部图

来自分类Dev

如何使用networkx读取以制表符分隔格式表示的二部图的图?

来自分类Dev

将边属性从二部图转换为单模图

来自分类Dev

汽化具有约500个节点的二部图

来自分类Dev

读取二部图和一种模式投影

来自分类Dev

将二部图转换为邻接矩阵python

来自分类Dev

将二部图转换为邻接矩阵Spark Scala

来自分类Dev

d3绘制水平二部图以进行单词对齐可视化

来自分类Dev

将二部图转换为邻接矩阵python

来自分类Dev

将二部图转换为邻接矩阵Spark Scala