非常にまばらな非常に大規模なネットワークのデータがあります。2つのノードが接続されているかどうかを保存し、アクセスするのに最もメモリ効率の良い方法は何でしょうか。
明らかにNノードの場合、N * N行列を維持することは、格納するスペースの点でそれほど効率的ではありません。だから私は多分以下のような隣接リストを維持することを考えました:
Array(Vector{Int64}, N_tmp)
N_tmp <= Nの場合、多くのノードに接続がない可能性があります。
より良い方法があるのか、それともメモリとアクセスの点でより良いパッケージがあるのか、私を助けてくれませんか?
でLightGraphs.jl、我々は、各ノードの隣人を格納するための隣接リスト(ベクトルの基本的に、ベクトル)を使用します。これにより、大規模なスパースグラフのメモリ使用率が非常に高くなり、コモディティハードウェア上の数億のノードに拡張できると同時に、ほとんどのグラフ操作でネイティブのスパース行列データ構造に勝る高速アクセスが提供されます。
LightGraphsがニーズを直接満たすかどうかを検討するかもしれません。
追加情報で編集:ネイバーのソートされたリストを保存します-これにより、エッジの作成でパフォーマンスが低下しますが、後続のルックアップの実行がはるかに高速になります。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加