我有一个网络(无向图),其由下面的稀疏矩阵来表示:MATLAB:在无向图中找到强连通分量
% A B C D E F G H I J K L M
mm=[0 0 1 1 0 0 1 0 0 0 0 0 0; % A
0 0 0 0 1 0 0 0 0 0 1 0 0; % B
1 0 0 1 0 1 0 0 0 0 0 1 0; % C
1 0 1 0 0 0 0 0 0 0 0 0 0; % D
0 1 0 0 0 0 0 0 0 0 0 0 1; % E
0 0 1 0 0 0 1 0 0 0 0 0 1; % F
1 0 0 0 0 1 0 0 0 0 0 1 0; % G
0 0 0 0 0 0 0 0 1 1 0 0 1; % H
0 0 0 0 0 0 0 1 0 1 0 0 0; % I
0 0 0 0 0 0 0 1 1 0 1 0 1; % J
0 1 0 0 0 0 0 0 0 1 0 0 0; % K
0 0 1 0 0 0 1 0 0 0 0 0 0; % L
0 0 0 0 1 1 0 1 0 1 0 0 0; % M
];
xx=tril(mm + mm');
view(biograph(sparse(xx),[],'ShowArrows','off','ShowWeights','off'))
是否有一些聪明的算法来识别这种强连接的子网?
请注意,我的矩阵比较大,〜10.000x10.000条目,因此简单的搜索算法可能太慢。非常感谢!
我不认为MATLAB有内置的东西来做这样的事情,但基本上你在找什么是Kosaraju Sharir算法,它是最强大的连接组件的发现算法。它很小且相当容易实施。看看这里: https://en.wikipedia.org/wiki/Kosaraju%27s_algorithm –
谢谢。不幸的是,Kosaraju算法仅适用于有向图。但是,我的图形是无向的。我没有发现任何适应无向情况。你是否也有无向图的解决方案?谢谢! – NicoDean
我不明白为什么这个问题“搁置”。这是一个非常有效的请求,可以帮助您找到一种使用matlab解决特定问题的良好方法(详细描述,即使使用图像)。有人(@adriaan Dan-Cornilescu aschipfl Himanshu bigOTHER)请向我解释这一点。 – NicoDean