ª Định lý 25.10 (Tính đúng đắn của giải thuật của Dijkstra)
Thực thi giải thuật của Dijkstra lên đồ thị G = (V, E) có trọng số và có hướng với
– hàm trọng số w : E → ℜ không âm – đỉnh nguồn s.
⇒
Khi giải thuật thực thi xong,
d[u] = δ(s, u) cho mọi đỉnh u ∈ V .
Chứng minh
Sẽ chứng minh: ∀u ∈ V, d[u] = δ(s, u) khi u được đưa vào tập S và sau đó đẳng thức luôn được duy trì.
20.11.2004 Ch. 10: Single-Source Shortest Paths Shortest Paths
32
Tính đúng đắn của giải thuật của Dijkstra
Chứng minh (tiếp)
Chứng minh bằng phản chứng.
(*) Gọi u là đỉnh đầu tiên sao cho d[u] ≠ δ(s, u) khi u được đưa vào tập S.
– Phải có một đường đi từ s đến u. Vì nếu không thì δ(s, u) = ∞, do đó d[u] = ∞, do đó d[u] = δ(s, u) dùng Hệ luận 25.6, mâu thuẫn! – Do đó có đường đi ngắn nhất p từ s đến u, với s ∈ S và u ∈ V − S.
Gọi y là đỉnh đầu tiên trên p sao cho y ∈ V − S. Đặt x = π[y].
s x y u p1 p2 S
20.11.2004 Ch. 10: Single-Source Shortest Paths Shortest Paths
33
Tính đúng đắn của giải thuật của Dijkstra
Chứng minh (tiếp)
– Chứng tỏ d[y] = δ(s, y) khi u được đưa vào tập S: theo (*) ta phải có d[x] = δ(s, x) khi x được đưa vào S. Khi đó cạnh (x, y) được nới lỏng nên d[y] = δ(s, y) dùng Lemma 25.7.
– Vì y trước u trên đường đi ngắn nhất từ s đến u và mọi trọng số đều dương nên δ(s, y) ≤ δ(s, u).
d[y] = δ(s, y) ≤ δ(s, u) ≤ d[u] dùng Lemma 25.5. s x y u p1 p2 S
20.11.2004 Ch. 10: Single-Source Shortest Paths Shortest Paths
34
Tính đúng đắn của giải thuật của Dijkstra
Chứng minh (tiếp)
– Khi u được chọn bởi EXTRACT-MIN thì y cũng còn trong Q nên
d[u] ≤ d[y], do đó bất đẳng thức :
d[y] = δ(s, y) = δ(s, u) = d[u], từ đó d[u] = δ(s, u), mâu thuẫn với (*)!
20.11.2004 Ch. 10: Single-Source Shortest Paths Shortest Paths
35