私は古いアルゴリズムのメモを確認していて、この証拠に出くわしました。それは私が持っていた課題からのものであり、私はそれを正しく理解しましたが、確かに証拠が不足していると感じています。
問題はprove that the distance values taken from the priority queue in Dijkstra's algorithm is a non-decreasing sequence.
私の証明は次のようになります:
矛盾による証明。まず、d値'i'でQから頂点をプルするとします。次回は、d値が「j」の頂点をプルします。iを引いたとき、d値を確定し、開始頂点sからiまでの最短経路を計算しました。正のエッジウェイトがあるため、パスに頂点を追加するときにd値を縮小することはできません。Qからiを引いた後、より小さなd値でjを引く場合、jを介してiに到達できる可能性があるため、iへの最短経路がない可能性があります。ただし、iへの最短経路はすでに計算されています。可能なパスは確認しませんでした。保証されたパスはもうありません。矛盾。
この証明をどのように改善できますか?またはさらに良いことに、別のアプローチがありますか?かなり弱いようです:)
編集:申し訳ありませんが、この場合、私の優先キューは最小ヒープで実装されています