約10億個の頂点を持つグラフがあり、それぞれがランダムに約100個の他の頂点に接続されています。
2点間の最短経路の長さを求めたい。使用される実際のパスは気にしません。
ノート:
- エッジが切断または追加されることがあります。これは、ルックアップの約500分の1の頻度で発生します。また、パフォーマンスを向上させることができるのであれば、エッジ変更をバッチ処理することもできます。
- 私がすることができ、グラフを事前に処理します。
- 6ステップ以上かかる場合は、無限に戻ることができます。
- 0.01%の確率で間違っていても問題ありませんが、長すぎる長さを返す場合のみです。
- すべてのエッジの長さは1です。
- すべてのエッジは双方向です。
アルゴリズムを探しています。Psuedocode、英語の説明、実際のコードはすべて素晴らしいです。
A *を使用することもできますが、パスファインディング用に最適化されているようです。ダイクストラのアルゴリズムの
使用を考えましたが、すべての頂点の最短パス検出属性を無限大に設定する必要がある手順があります
(ユースケースについて疑問がある場合は、アンダーハンドCコンテスト用です。)