0

2Dグラフでアイテムを描画する方法を探しているわけではありません。これは、期待される出力が何である必要があるかを絵で表したものにすぎません。

私は次のようなリストを持っています

a=[]
b=['c','d','e']
c=['a','b','d']
d=['a']
e=['b','a']
l=['g','r','p']
g=['r']
r=['g']
p=['l']

上から、bがcを指していることは明らかです。d、e
a、b、c、dは密接にリンクされていますが、l、g、r、pはリンクされてい
ます。心)これらの類似したアイテムを一緒に表現する方法。

上記は単なる例です。リストは動的に作成されます

4

2 に答える 2

2

Graphvizに出くわしたことがありますか?さまざまな形式のグラフレイアウト用のアルゴリズムがあり、上記の小さな例をうまくレイアウトできると思います。また、サポートされているさまざまなレイアウトを試すことができるいくつかのシンプルなGUIも含まれています。

編集:いくつかの説明に応えて:

グラフが完全に接続されている場合でも、グラフ内で密なサブグラフを見つける必要がある場合は、ネットワーク内のコミュニティを見つけるアルゴリズムを探しています。大きなグラフ(ソーシャルネットワークを表す200万以上のノード)でこのようなことを効率的に行う最近開発されたアルゴリズムの例は、この論文で見つけることができます。

于 2012-06-21T07:40:44.000 に答える
1

Alexの答えを拡張するために、グラフでのgraphvizの使用例を次に示します。

graph.dot:

digraph G
{
  b -> c;
  b -> d;
  b -> e;
  c -> a;
  c -> b;
  c -> d;
  d -> a;
  e -> b;
  e -> a;
  l -> g;
  l -> r;
  l -> p;
  g -> r;
  r -> g;
  p -> l;
}

Graphvizの出力:

グラフの例

グラフを描画せずにグラフ内のクラスターを知りたいだけの場合は、このアルゴリズムを使用してください。

于 2012-06-21T07:59:56.063 に答える