問題: 重み付けされていない無向グラフで最短経路を見つける。
幅優先探索は 2 つのノード間の最短経路を見つけることができますが、これには最大で O(|V| + |E|) の時間がかかる場合があります。事前に計算されたルックアップ テーブルを使用すると、O(1) 時間でリクエストに応答できますが、O(|V|^2) スペースが犠牲になります。
私が疑問に思っていること:よりきめの細かい時空トレードオフを提供するアルゴリズムはありますか? 言い換えれば、次のようなアルゴリズムはありますか?
- O(1) よりも長い時間で最短経路を見つけますが、双方向の幅優先検索よりも高速です
- O(|V|^2) より少ないスペースを占有する事前計算されたデータを使用しますか?
実用面:グラフは 800,000 ノードであり、スモールワールド ネットワークであると考えられています。すべてのペアの最短パス テーブルはギガバイトのオーダーになります。これは最近では法外なことではありませんが、私たちの要件には合いません。
しかし、私は好奇心から質問しています。夜、私を悩ませているのは、「どうすれば全ペア ルックアップ テーブルのキャッシュ ミスを減らすことができるか?」ではなく、「聞いたことのないまったく異なるアルゴリズムが世の中にあるのだろうか?」ということです。
答えはノーかもしれませんが、それは問題ありません。