グラフの親和性行列を疎行列として構築する方法:
G = sparse( length(X)+length(Y), length(X)+length(Y) );
|X|+|Y|これにより、サイズが-by-の「すべてゼロ」のスパース行列が作成され|X|+|Y|ます。
入力すると
>> whos G
G約 50K^2 の容量があるにもかかわらず、ほとんどメモリを必要としないことがわかります。
Xあとは、関数を使用してとの対応するノード間に 1 を設定するだけで、実行できるようにYなりますgraphconncompG
二部ケース
2 部グラフの隣接行列を作成するには、(最初に)Bサイズが|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ため、構築はメモリ効率が高くなります。
で実行できるようgraphconncompになりましたG。