1. Trang chủ
  2. » Thể loại khác

graph04_duong-di-ngan-nhat

25 5 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 25
Dung lượng 779 KB

Nội dung

Single Source Shortest Paths Nguyễn Đức Nghĩa Chương 4 BÀI TOÁN ĐƯỜNG ĐI NGẮN NHẤTBÀI TOÁN ĐƯỜNG ĐI NGẮN NHẤT Nguyễn Đức Nghĩa Nội dung 5 1 Bài toán đường đi ngắn nhất (ĐĐNN)5 1 Bài toán đường đi ngắn[.]

Chương BÀI TOÁN ĐƯỜNG ĐI NGẮN NHẤT Nguyễn Đức Nghĩa Nội dung 5.1 Bài toán đường ngắn (ĐĐNN) 5.2 Tính chất ĐĐNN, Giảm cận 5.3 Thuật toán Dijkstra Nguyễn Đức Nghĩa 5.1 Bài toán đường ngắn  Cho đơn đồ thị có hướng G = (V,E) với hàm trọng số w: E → R (w(e) gọi độ dài hay trọng số cạnh e)  Độ dài đường P = v1 → v2 → … → vk số k −1 w( P ) = ∑ w(vi , vi +1 ) i =1  Đường ngắn từ đỉnh u đến đỉnh v đường có độ dài ngắn số đường nối u với v  Độ dài đường ngắn từ u đến v gọi khoảng cách từ u tới v ký hiệu δ(u,v) Nguyễn Đức Nghĩa Ví dụ Cho đồ thị có trọng số G = (V, E), đỉnh nguồn s∈V, tìm đường ngắn từ s đến đỉnh lại a đỉnh nguồn d s c b s a b weight path s s,a s,a,b Nguyễn Đức Nghĩa e c s,a,b,c d s,a,d f e s,a,b,e f s,a,b,e,f Các ứng dụng thực tế  Giao thông (Transportation)  Truyền tin mạng (Network routing) (cần hướng gói tin đến đích mạng theo đường nào?)  Truyền thơng (Telecommunications)  Speech interpretation (best interpretation of a spoken sentence)  Điều khiển robot (Robot path planning)  Medical imaging  Giải toán phức tạp mạng  Nguyễn Đức Nghĩa Các dạng toán ĐĐNN Bài tốn nguồn đích: Cho hai đỉnh s t, cần tìm đường ngắn từ s đến t Bài tốn nguồn nhiều đích: Cho s đỉnh nguồn, cần tìm đường ngắn từ s đến tất đỉnh lại Bài tốn cặp: Tìm đường ngắn cặp đỉnh đồ thị  Đường ngắn theo số cạnh - BFS Nguyễn Đức Nghĩa Nhận xét  Các toán xếp theo thứ tự từ đơn giản phức tạp đến  Hễ có thuật toán hiệu để giải ba toán thuật tốn sử dụng để giải hai tốn cịn lại Nguyễn Đức Nghĩa Nội dung 5.1 Bài toán đường ngắn (ĐĐNN) 5.2 Tính chất ĐĐNN, Giảm cận 5.3 Thuật tốn Dijkstra Nguyễn Đức Nghĩa Các tính chất ĐĐNN  Tính chất Đường ngắn ln tìm số đường đơn • CM: Bởi việc loại bỏ chu trình độ dài khơng âm khỏi đường khơng làm tăng độ dài u v C w(C) ≥  Tính chất Mọi đường ngắn đồ thị G qua khơng q n-1 cạnh, n số đỉnh • Như hệ tính chất Nguyễn Đức Nghĩa Các tính chất ĐĐNN Tính Tínhchất chất3: 3:Giả Giảsử sửPP==‹v ‹v11,,vv22,,…, …,vvkk››làlàđđnn đđnntừ từvv11đến đếnvvkk Khi Khi đó, , …, v › đđnn từ v đến v , với ≤ i ≤ j ≤ k đó,PPijij==‹v ‹vi,i,vvi+1 i+1, …, vj j› đđnn từ vi i đến vj j, với ≤ i ≤ j ≤ k (Bằng lời: Mọi đoạn đường đường ngắn đường ngắn nhất) CM Phản chứng Nếu Pij không đđnn từ vi đến vj, tìm P’ij đường từ vi đến vj thoả mãn w(P’ij) < w(Pij) Khi gọi P’ đường thu từ P việc thay đoạn Pij P’ij, ta có w(P’) < w(P) ?! vi v1 Pij P’ij Nguyễn Đức Nghĩa vj vk Các tính chất ĐĐNN Ký hiệu: δ(u, v) = độ dài đđnn từ u đến v (gọi khoảng cách từ u đến v) p' Hệ quả: Giả sử P đđnn từ s tới v, P = s uu→v  → Hệ quả: Giả sử P đđnn từ s tới v, P = s →v Khi Khiđó δ(s, δ(s,v) v)==δ(s, δ(s,u) u) ++w(u, w(u,v) v) Tính Tínhchất chất4: 4:Giả Giảsử sửss∈∈V V Đối Đốivới vớimỗi mỗicạnh cạnh(u,v) (u,v)∈∈E, E,tatacó có δ(s, δ(s,v) v)≤≤ δ(s, δ(s,u) u) ++w(u,v) w(u,v) Nguyễn Đức Nghĩa Đường ngắn xuất phát từ đỉnh Single-Source Shortest Paths Nguyễn Đức Nghĩa Biểu diễn đường ngắn Các thuật tốn tìm đường ngắn làm việc với hai mảng: d(v) = độ dài đường từ s đến v ngắn biết (cận cho độ dài đường ngắn thực sự) p(v) = đỉnh trước v đường nói (sẽ sử dụng để truy ngược đường từ s đến v) Khởi tạo (Initialization) for v ∈ V(G) d[v] ← ∞ p[v] ← NIL d[s] ← Nguyễn Đức Nghĩa Giảm cận (Relaxation) Sử dụng cạnh (u, v) để kiểm tra xem đường đến v tìm làm ngắn nhờ qua u hay không u Relax(u, v) if d[v] > d[u] + w(u, v) then d[v] ← d[u] + w(u, v) p[v] ← u s v z p(v) d[v] > d[u] + w(u, v) Các thuật tốn tìm đđnn khác số lần dùng cạnh trình tự duyệt chúng để thực giảm cận u s v z Nguyễn Đức Nghĩa p(v) Nhận xét chung  Việc cài đặt thuật toán thể nhờ thủ tục gán nhãn:  Mỗi đỉnh v có nhãn gồm thành phần (d[v], p[v]) Nhãn biến đổi q trình thực thuật tốn  Nhận thấy để tính khoảng cách từ s đến t, đây, ta phải tính khoảng cách từ s đến tất đỉnh lại đồ thị  Hiện chưa biết thuật toán cho phép tìm đđnn hai đỉnh làm việc thực hiệu thuật tốn tìm đđnn từ đỉnh đến tất đỉnh lại Nguyễn Đức Nghĩa Nội dung 5.1 Bài toán đường ngắn (ĐĐNN) 5.2 Tính chất ĐĐNN, Giảm cận 5.3 Thuật toán Dijkstra Nguyễn Đức Nghĩa Thuật toán Dijkstra  Trong trường hợp trọng số cung không âm, thuật toán Dijkstra đề nghị hữu hiệu nhiều so với thuật toán FordBellman  Thuật toán dựa thủ tục gán nhãn Thoạt đầu nhãn đỉnh tạm thời Ở bước lặp có nhãn tạm thời trở thành nhãn cố định Nếu nhãn đỉnh u trở thành cố định d[u] cho ta độ dài đđnn từ đỉnh s đến u Thuật toán kết thúc nhãn tất đỉnh trở thành cố định Nguyễn Đức Nghĩa Edsger W.Dijkstra (1930-2002) Thuật toán Dijkstra Đầu vào: Đồ thị có hướng G=(V,E) với n đỉnh, s ∈ V đỉnh xuất phát, w[u,v], u,v ∈ V - ma trận trọng số dương; Giả thiết: w[u,v] > 0, u, v ∈ V Đầu ra: Với v ∈ V d[v] = δ (s, v); p[v] - đỉnh trước v đđnn từ s đến v Nguyễn Đức Nghĩa Thuật toán Dijkstra procedure Dijkstra; Tập S: Chỉ cần cho chứng minh định lý begin for v ∈ V begin (* Khởi tạo *) d[v] := w[s,v] ; p[v]:=s; end; d[s] := 0; S := {s}; (* S – tập đỉnh có nhãn cố định *) T := V \ {s}; (* T tập đỉnh có nhãn tạm thời *) while T ≠ ∅ (* Bước lặp *) begin Tìm đỉnh u ∈ T thoả mãn d[u] = min{ d[z] : z ∈ T}; T := T \ {u}; S:= S ∪ {u}; (* Cố định nhãn đỉnh u *) for v ∈ T (* Gán nhãn lại cho đỉnh T *) if d[v] > d[u] + w[u,v] then begin d[v] := d[u] + w[u,v] ; p[v] := u ; end; end; end; Nguyễn Đức Nghĩa Thuật toán Dijkstra  Chú ý: Nếu cần tìm đường ngắn từ s đến t chấm dứt thuật tốn đỉnh t trở thành có nhãn cố định  Định lý Thuật tốn Dijkstra tìm đường ngắn từ đỉnh s đến tất đỉnh lại đồ thị sau thời gian O(n2)  CM: Rõ ràng thời gian tính O(n2) Nguyễn Đức Nghĩa Chứng minh tính đắn Thuật tốn Dijkstra Ta CM với v ∈ S, d(v) = δ (s, v) • Qui nạp theo |S| • Cơ sở qui nạp: Với |S| = 1, rõ ràng y P* x s • Chuyển qui nạp: v S  giả sử thuật toán Dijkstra bổ sung v vào S  d(v) độ dài đường từ s đến v  d(v) không độ dài đđnn từ s đến v, gọi P* đđnn từ s đến v  P* phải sử dụng cạnh khỏi S, chẳng hạn (x, y)  d(v)> δ(s, v) giả thiết = δ(s, x) + w(x, y) + δ(y, v) tính chất ≥ δ(s, x) + w(x, y) δ(y, v) không âm = d(x) + w(x, y) giả thiết quy nạp ≥ d(y) theo thuật tốn thuật tốn Dijkstra phải chọn y thay chọn v ?! Nguyễn Đức Nghĩa Ví dụ Tìm đường ngắn từ đỉnh đến tất đỉnh lại Khởi tạo 1 Đỉnh Đỉnh Đỉnh Đỉnh Đỉnh Đỉnh [0, 1] [1, 1]* [∞ , 1] [∞ , 1] [∞ , 1] [∞ , 1] [3, 2]* [∞ , 1] [8, 2] - [7, 4] [8, 2] [5, 3]* - - [6, 2] - - [4, 4]* - - - - [6, 3] - - - - [6, 3]* - - - - Nguyễn Đức Nghĩa - - 10 Ví dụ: Tìm đường ngắn từ đỉnh a đến tất đỉnh lại? Nguyễn Đức Nghĩa Bài tập Tìm đường ngắn từ đỉnh đến đỉnh lại đồ thị sau: Nguyễn Đức Nghĩa Cây đường ngắn  Tập cạnh {(p(v), v): v∈ V \ {s} } tạo thành có gốc đỉnh nguồn s gọi đđnn xuất phát từ đỉnh s • Các cạnh màu đỏ tạo thành đđnn xuất phát từ đỉnh • Số màu đỏ viết bên cạnh đỉnh độ dài đường ngắn từ đến Nguyễn Đức Nghĩa 1 4 10

Ngày đăng: 20/04/2022, 15:38

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w