1

タイトルが示すように..接続されたグラフをJavaに保存する最も効率的な方法は何ですか?

たとえば、さまざまな方法で相互に接続している複数の場所があり、接続されているかどうかを確認するためにグラフをトラバースする必要があるとしましょう..ヘルプ/コメントは役に立ちます!

4

5 に答える 5

5

よく使用される表現の 1 つは、グラフ内のすべてのノードによってインデックス付けされた行列 (2 次元配列)です。ノードから へM[i,j] == trueの有向エッジがある場合。テーマのバリエーションは、2 つのノード間のエッジの長さ/重みを格納することです (欠落したエッジは値 -1 で表される場合があります)。ij

于 2011-02-14T21:26:33.363 に答える
1

対称性のない隣接行列を使用して、単純な隣接関係ではなく方向を表します。

于 2011-02-14T21:26:22.543 に答える
1

発生率または隣接行列を使用すると、うまくいきます。

隣接行列を使用する場合、多数のノードがある場合は疎行列を使用すると効率的です。Coltは疎行列の実装を提供します。この SO postから取得した情報。

また、以前にJUNGをうまく使用したことがあるので、ボンネットの下をのぞいて、有向グラフがどのように実装されているかを確認してください。

于 2011-02-14T21:36:14.423 に答える
0

ルックアップ効率のために - ブール行列を使用します (ノードを接続するアークがある場合は true、ない場合は false)。メモリ効率のために、オブジェクト プロパティの 1 つを、それが指すオブジェクトの (動的) リストとして定義します。後者は、グラフに多数のノードがある場合にのみ役立つことに注意してください。

于 2011-02-14T21:26:55.110 に答える
0

何か不足していますか?データはすでにグラフです。それをシリアル化するだけです。行列について書かれた話は完全に時期尚早です。

于 2011-02-14T22:10:22.407 に答える