Tính đúng đắn của giải thuật của Dijkstra

Một phần của tài liệu chương 10 single-source shortest paths (Trang 31 - 35)

ª Đị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 SuVS.

Gọi y là đỉnh đầu tiên trên p sao cho yVS. Đặ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

Một phần của tài liệu chương 10 single-source shortest paths (Trang 31 - 35)

Tải bản đầy đủ (PPT)

(45 trang)