1. Trang chủ
  2. » Giáo Dục - Đào Tạo

slide chương 5 bài toán đường đi ngắn nhất , toán rời rạc

78 1,2K 1

Đ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 78
Dung lượng 1,3 MB

Nội dung

slide chương 5, bài toán đường đi ngắn nhất , toán rời rạc

Chương BÀI TOÁN ĐƯỜNG ĐI NGẮN NHẤT Nguyễn Đức Nghĩa Toán rời rạc, Fall 2005 Bài toán đường ngắn n 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 Bellman-Ford 5.4 Thuật toán Dijkstra 5.5 Đường ngắn đồ thị chu trình 5.6 Thuật toán Floyd-Warshal Nguyễn Đức Nghĩa Toán rời rạc, Fall 2005 Bài toán đường ngắn n 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 Toán rời rạc, Fall 2005 Bài toán đường ngắn n 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 Toán rời rạc, Fall 2005 f e s,a,b,e f s,a,b,e,f Bài toán đường ngắn n 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 Toán rời rạc, Fall 2005 Bài toán đường ngắn n Các dạng toán ĐĐNN Bài toán nguồn đích: Cho hai đỉnh s t, cần tìm đường ngắn từ s đến t Bài toá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 toá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 Toán rời rạc, Fall 2005 Bài toán đường ngắn n Nhận xét Các toán xếp theo thứ tự từ đơn giản đến phức tạp Hễ có thuật toán hiệu để giải ba toán thuật toán sử dụng để giải hai toán lại Nguyễn Đức Nghĩa Toán rời rạc, Fall 2005 Bài toán đường ngắn n Giả thiết  Nếu đồ thị có chu trình âm độ dài đường hai đỉnh làm nhỏ tuỳ ý: b a c Xét đường từ a đến e: P: a→ σ(d → b →c →d) → e -18 d e w(P) = 7-10σ → -∞, σ →+ ∞ Giả thiết: Đồ thị không chứa chu trình độ dài âm (gọi tắt chu trình âm) Nguyễn Đức Nghĩa Toán rời rạc, Fall 2005 Bài toán đường ngắn n Trọng số âm Độ dài đường ngắn ∞ – ∞ đỉnh nguồ n s a -4 c e -∞ -3 b -1 d 11 h g -∞ f -∞ -6 chu trình âm Nguyễn Đức Nghĩa Toán rời rạc, Fall 2005 i ∞ ∞ -8 ∞ j không đạt tới từ s Bài toán đường ngắn n 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 Bellman-Ford 5.4 Thuật toán Dijkstra 5.5 Đường ngắn đồ thị chu trình 5.6 Thuật toán Floyd-Warshal Nguyễn Đức Nghĩa Toán rời rạc, Fall 2005 Bài toán đường ngắn nh Tiếp Đầu -4 Đường đi: 1- - - - -5 =–4+6–5+4 -3 -4 -4 -1 -1 -5 -2 - 1- 5-4-1 Nguyễn Đức Nghĩa Toán rời rạc, Fall 2005 Bài toán đường ngắn nh Thuật toán Floyd-Warshall (m) d ij = độ dài đường ngắn từ i đến j sử dụng đỉnh trung gian tập đỉnh { 1, 2, …, m } i ≤m ≤m ≤m Khi độ dài đường ngắn từ i đến j Nguyễn Đức Nghĩa Toán rời rạc, Fall 2005 j (n) dij Bài toán đường ngắn nh Công thức đệ qui tính d(h) (0) d ij = wij i j d (h) = ( d (h-1), d (h-1)+ d (h-1) ) ij ij (h-1) dih ih hj h h ≥ dhj(h-1) j i (h-1) dij Nguyễn Đức Nghĩa Toán rời rạc, Fall 2005 Bài toán đường ngắn nh Thuật toán Floyd-Warshall Floyd-Warshall(n, W) D(0) ← W for k ← to n for i ← to n for j ← to n (k) (k-1) (k-1) (k-1) dij ← (dij , dik + dkj ) return D(n) Thời gian tính Θ(n3) ! Nguyễn Đức Nghĩa Toán rời rạc, Fall 2005 Bài toán đường ngắn nh Xây dựng đường ngắn (k) (k) Predecessor matrix P = (p ij ) : (k) p ij i j đường ngắn từ i đến j qua đỉnh trung gian {1, 2, (0) pij = i, (i, j) ∈ E NIL, (i, j) ∉ E (k-1) i (k) k Nguyễn Đức Nghĩa j pij = p ij dij (k-1) pkj Toán rời rạc, Fall 2005 (k-1) …, k} (k-1) (k-1) ≤ d ik + dkj trái lại Bài toán đường ngắn nh Ví dụ 1 D(0) P 4 (0) ∞ ∞ ∞ ∞ ∞ ∞ NIL 1 NIL NIL NIL 2 NIL NIL NIL NIL NIL NIL Có thể sử dụng đỉnh trung gian: D (1) Nguyễn Đức Nghĩa ∞ ∞ ∞ ∞ (1) NIL 1 NIL NIL NIL 2 NIL NIL NIL 1 NIL Bài toán đường ngắn nh Toán rời rạc, Fall 2005 P Ví dụ (tiếp) D (2) D (3) D(4) Nguyễn Đức Nghĩa ∞ ∞ ∞ 0 ∞ ∞ ∞ 0 P (2) NIL NIL NIL NIL NIL NIL P (3) P Toán rời rạc, Fall 2005 NIL NIL NIL NIL NIL NIL NIL (4) 1 2 3 3 NIL NIL NIL NIL NIL Bài toán đường ngắn nh Ví dụ (tiếp) 1 3 Nguyễn Đức Nghĩa 2 1 3 Toán rời rạc, Fall 2005 2 4 4 Bài toán đường ngắn nh Thuật toán Floyd-Warshall Floyd-Warshall(n, W) D ←W for k ← to n for i ← to n for j ← to n dij ← (dij , dik + dkj) return D Thời gian tính Θ(n3) ! Nguyễn Đức Nghĩa Toán rời rạc, Fall 2005 Bài toán đường ngắn nh Robert W Floyd, 1936-2001  Born in New York, Floyd finished school at age 14 At the University of Chicago, he received a Bachelor's degree in liberal arts in 1953 (when still only 17) and a second Bachelor's degree in physics in 1958  Becoming a computer operator in the early 1960s, he began publishing many noteworthy papers and was appointed an associate professor at Carnegie Mellon University by the time he was 27 and became a full professor at Stanford University six years later He obtained this position without a Ph.D  Turing Award, 1978 Nguyễn Đức Nghĩa 2007/4/2 73 All-pairs distance Stephen Warshall  1935 – 2006  Proving the correctness of the transitive closure algorithm for boolean circuit • (Wikipedia) There is an interesting anecdote about his proof that the transitive closure algorithm, now known as Warshall's algorithm, is correct He and a colleague at Technical Operations bet a bottle of rum on who first could determine whether this algorithm always works Warshall came up with his proof overnight, winning the bet and the rum, which he shared with the loser of the bet Because Warshall did not like sitting at a desk, he did much of his creative work in unconventional places such as on a sailboat in the Indian Ocean or in a Greek lemon orchard Nguyễn Đức Nghĩa 2007/4/2 74 All-pairs distance Questions? Nguyễn Đức Nghĩa Toán rời rạc, Fall 2005 Bài toán đường ngắn nh Bao đóng truyền ứng (Transitive Closure) Bao đóng truyền ứng đồ thị G = (V, E) G* = (V, E*) cho (i, j) ∈ E* iff có đường từ i đến j G G*: G: 1 Nguyễn Đức Nghĩa Toán rời rạc, Fall 2005 Bài toán đường ngắn nh Thuật toán Floyd-Warshall Ma trận xuất phát ma trận kề a (i , j) = i = j có cạnh nối đỉnh i j trái lại i Nếu Thuật toán Floyd-Warshall thay + boolean OR boolean AND j AND x i OR AND y j OR Thời gian tính Θ(n3 ) Nguyễn Đức Nghĩa Toán rời rạc, Fall 2005 Bài toán đường ngắn nh Questions? Nguyễn Đức Nghĩa Toán rời rạc, Fall 2005 Bài toán đường ngắn nh [...]... Ngha Toỏn ri rc, Fall 20 05 Bi toỏn ng i ngn nh Thut toỏn Dijkstra Chú ý: Nếu chỉ cần tìm đường đi ngắn nhất từ s đên t thì có thể chấm dứt thuật toán khi đỉnh t trở thành có nhãn cố định Định lý 1 Thuật toán Dijkstra tìm được đường đi ngắn nhất từ đỉnh s đến tất cả các đỉnh còn lại trên đồ thị sau thời gian O(n2) CM: Rừ rng thi gian tớnh l O(n2) Nguyn c Ngha Toỏn ri rc, Fall 20 05 Bi toỏn ng i ngn nh... d[v] := d[u] + w[u,v] ; p[v] := u ; end; Thuật toán có độ phức tạp O(n.m) Nguyn c Ngha Toỏn ri rc, Fall 20 05 Bi toỏn ng i ngn nh Ni dung 5. 1 Bi toỏn ng i ngn nht (NN) 5. 2 Tớnh cht ca NN, Gim cn trờn 5. 3 Thut toỏn Bellman-Ford 5. 4 Thut toỏn Dijkstra 5. 5 ng i ngn nht trong th khụng cú chu trỡnh 5. 6 Thut toỏn Floyd-Warshal Nguyn c Ngha Toỏn ri rc, Fall 20 05 Bi toỏn ng i ngn nh Thut toỏn Dijkstra Trong... rc, Fall 20 05 Bi toỏn ng i ngn nh Ni dung 5. 1 Bi toỏn ng i ngn nht (NN) 5. 2 Tớnh cht ca NN, Gim cn trờn 5. 3 Thut toỏn Bellman-Ford 5. 4 Thut toỏn Dijkstra 5. 5 ng i ngn nht trong th khụng cú chu trỡnh 5. 6 Thut toỏn Floyd-Warshal Nguyn c Ngha Toỏn ri rc, Fall 20 05 Bi toỏn ng i ngn nh Thut toỏn Ford-Bellman Richard Bellman 1920-1984 Nguyn c Ngha Lester R Ford, Jr 1927~ Toỏn ri rc, Fall 20 05 Bi toỏn ng... quy hoạch động Độ phức tạp tính toán của thuật toán là O(n3) Có thể chấm dứt vòng lặp theo k khi phát hiện trong quá trình thực hiện hai vòng lặp trong không có biến d[v] nào bị đổi giá trị Việc này có thể xảy ra đối với k < n-2, và đi u đó làm tăng hiệu quả của thuật toán trong việc giải các bài toán thực tế Nguyn c Ngha Toỏn ri rc, Fall 20 05 Bi toỏn ng i ngn nh Vớ d t x 5 -2 6 s 0 2 8 -3 7 -4 7 y... Ford-Bellman Thuật toán Ford - Bellman tìm đường đi ngắn nhất từ đỉnh s đến tất cả các đỉnh còn lại của đồ thị Thuật toán làm việc trong trường hợp trọng số của các cung là tuỳ ý Giả thiết rằng trong đồ thị không có chu trình âm Đầu vào: Đồ thị G=(V,E) với n đỉnh xác định bởi ma trận trọng số w[u,v], u,v V, đỉnh nguồn s V; Đầu ra: Với mỗi v V d[v] = (s, v); p[v] - đỉnh đi trước v trong đđnn... ?! Nguyn c Ngha Toỏn ri rc, Fall 20 05 Bi toỏn ng i ngn nh 7 Vớ d 2 Tỡm ng i ngn nht t nh 1 n tt c cỏc nh cũn li Khi to 5 3 2 1 1 4 2 6 2 1 3 4 nh 1 nh 2 nh 3 nh 4 nh 5 nh 6 [0, 1] [1, 1]* [, 1] [, 1] [, 1] [, 1] [3, 2]* [8, 2] - [, 1] [7, 4] [5, 3]* 1 - - [6, 2] 2 - - [4, 4]* 3 - - - - [6, 3] 4 - - - - [6, 3]* 5 - - - - Nguyn c Ngha 1 Toỏn ri rc, Fall 20 05 - 10 5 [8, 2] - Bi toỏn ng i ngn nh ... Ngha Toỏn ri rc, Fall 20 05 Bi toỏn ng i ngn nh Ln 1 d[t] = 6 p[t] = s t x 5 6 -2 6 s 0 2 8 -3 7 -4 7 7 d[y] = 7 p[y] = s Nguyn c Ngha y 9 Toỏn ri rc, Fall 20 05 z Bi toỏn ng i ngn nh Ln 2 t x 5 6 11 -2 d[x] = 11 p[x] = t 6 s 0 2 8 -3 7 -4 7 7 y 2 9 z d[z] = 2 p[z] = t Relax (t, x), (t, y), (t, z), (x, t) Nguyn c Ngha Toỏn ri rc, Fall 20 05 Bi toỏn ng i ngn nh Ln 2 (tip) t x 5 6 d[x] = 4 p[x] = y 4 -2... Relax (y, x), (y, z), (z, x), (z, s), (z, s), (s, t), (s, y) Nguyn c Ngha Toỏn ri rc, Fall 20 05 Bi toỏn ng i ngn nh Ln 3 d[t] = 2 p[t] = x t x 5 2 4 -2 6 s 0 2 8 -3 7 -4 7 7 y Nguyn c Ngha 2 9 Toỏn ri rc, Fall 20 05 z Bi toỏn ng i ngn nh Ln 4 t x 5 2 4 -2 6 s 0 2 8 -3 7 -4 7 7 y Nguyn c Ngha -2 9 Toỏn ri rc, Fall 20 05 z d[z] = -2 p[z] = t (khụng i) Bi toỏn ng i ngn nh Nhn xột Đối với đồ thị thưa tốt hơn... thuật toán được thể hiện nhờ thủ tục gán nhãn: Mỗi đỉnh v sẽ có nhãn gồm 2 thành phần (d[v], p[v]) Nhãn sẽ biến đổi trong quá trình thực hiện thuật toán Nhận thấy rằng để 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 cả các đỉnh còn lại của đồ thị Hiện nay vẫn chưa biết thuật toán nào cho phép tìm đđnn nhất giữa hai đỉnh làm việc thực sự hiệu quả hơn những thuật toán tìm... c nh Nguyn c Ngha Toỏn ri rc, Fall 20 05 Edsger W.Dijkstra (1930-2002) Bi toỏn ng i ngn nh Thut toỏn Dijkstra Đầu vào: Đồ thị có hướng G=(V,E) với n đỉnh, s V là đỉnh xuất phát, w[u,v], u,v V - ma trận trọng số; Giả thiết: w[u,v] 0, u, v V Đầu ra: Với mỗi v V d[v] = (s, v); p[v] - đỉnh đi trước v trong đđnn từ s đến v Nguyn c Ngha Toỏn ri rc, Fall 20 05 Bi toỏn ng i ngn nh Thut toỏn Dijkstra ... 20 05 4 10 Bi toỏn ng i ngn nh Ni dung 5. 1 Bi toỏn ng i ngn nht (NN) 5. 2 Tớnh cht ca NN, Gim cn trờn 5. 3 Thut toỏn Bellman-Ford 5. 4 Thut toỏn Dijkstra 5. 5 ng i ngn nht th khụng cú chu trỡnh 5. 6... Bi toỏn ng i ngn n 5. 1 Bi toỏn ng i ngn nht (NN) 5. 2 Tớnh cht ca NN, Gim cn trờn 5. 3 Thut toỏn Bellman-Ford 5. 4 Thut toỏn Dijkstra 5. 5 ng i ngn nht th khụng cú chu trỡnh 5. 6 Thut toỏn Floyd-Warshal... Fall 20 05 Bi toỏn ng i ngn nh Thut toỏn Dijkstra Chú ý: Nếu cần tìm đường ngắn từ s đên t chấm dứt thuật toán đỉnh t trở thành có nhãn cố định Định lý Thuật toán Dijkstra tìm đường ngắn từ đỉnh

Ngày đăng: 10/11/2015, 10:16

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w