タイトルが示すように..接続されたグラフをJavaに保存する最も効率的な方法は何ですか?
たとえば、さまざまな方法で相互に接続している複数の場所があり、接続されているかどうかを確認するためにグラフをトラバースする必要があるとしましょう..ヘルプ/コメントは役に立ちます!
タイトルが示すように..接続されたグラフをJavaに保存する最も効率的な方法は何ですか?
たとえば、さまざまな方法で相互に接続している複数の場所があり、接続されているかどうかを確認するためにグラフをトラバースする必要があるとしましょう..ヘルプ/コメントは役に立ちます!
よく使用される表現の 1 つは、グラフ内のすべてのノードによってインデックス付けされた行列 (2 次元配列)です。ノードから へM[i,j] == true
の有向エッジがある場合。テーマのバリエーションは、2 つのノード間のエッジの長さ/重みを格納することです (欠落したエッジは値 -1 で表される場合があります)。i
j
対称性のない隣接行列を使用して、単純な隣接関係ではなく方向を表します。
隣接行列を使用する場合、多数のノードがある場合は疎行列を使用すると効率的です。Coltは疎行列の実装を提供します。この SO postから取得した情報。
また、以前にJUNGをうまく使用したことがあるので、ボンネットの下をのぞいて、有向グラフがどのように実装されているかを確認してください。
ルックアップ効率のために - ブール行列を使用します (ノードを接続するアークがある場合は true、ない場合は false)。メモリ効率のために、オブジェクト プロパティの 1 つを、それが指すオブジェクトの (動的) リストとして定義します。後者は、グラフに多数のノードがある場合にのみ役立つことに注意してください。
何か不足していますか?データはすでにグラフです。それをシリアル化するだけです。行列について書かれた話は完全に時期尚早です。