まず第一に、ここで当てはまる答えは、質問へのコメントでラファエルによってすでに与えられました:「私たちは線形時間で1つの単純な最短経路を見つける方法すら知らないので、私はそれを疑います。」以下では、したがって、私はあなたが現在の最先端技術で利用可能な最良のアルゴリズムについて知ることに興味があると仮定します。以下では、(私の知る限り)最良の最悪の場合の限界について説明しますが、特定のケースでは線形時間で実行される可能性のあるアルゴリズムについても説明します。
しかし、最先端の最新の開発について説明する前に、この特定の問題における単純なパスの重要性を強調したいと思いました。実際のところ、多くの人はこの要件の重要性を見過ごしており、一見しただけでは理解できない人もいます。
開始頂点から目標頂点までの最短経路を計算する場合、最適経路は必然的に単純です。つまり、どの頂点も繰り返されません。ただし、最適パスを計算する場合、2番目、3番目、...の最良パスは単純ではない可能性があります。それを証明するために、ハーシュバーガー、マクセル&スリ、2007年からわずかに変更された例をここに示します。k
stπ1:⟨s,A,B,C,D,t⟩π2:⟨s,A,B,C,D,C,D,t⟩π3:⟨s,A,B,A,B,C,D,t⟩π2:⟨s,F,t⟩π3:⟨s,G,t⟩
G(V,E)V⟨u,v⟩∈E,u,v∈Vuv
kO(|E|+|V|log|V|+k)K∗
O(k|V|(|E|+|V|log|V|))O(k(|E|+|V|log|V|))k
k
お役に立てれば、
参考文献
K∗k
k
k
k
k
k
k