Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 78 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
78
Dung lượng
1,18 MB
Nội dung
Chương BÀI TOÁN ĐƯỜNG ĐI NGẮN NHẤT Nguyễn Đức Nghĩa Bài toán đường ngắn n Nội dung 5.1 Bài tố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ị khơng có chu trình 5.6 Thuật tốn Floyd-Warshal Nguyễn Đức Nghĩa 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 Bài tốn đường ngắn n Ví dụ Cho đồ thị có trọng số G = (V, E), đỉnh nguồn sV, 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 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 Bài toán đường ngắn n 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 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 tốn hiệu để giải ba tốn thuật tốn sử dụng để giải hai tốn cịn lại Nguyễn Đức Nghĩa 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 -18 d Xét đường từ a đến e: P: a (d b c d) e 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 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 -6 chu trình âm Nguyễn Đức Nghĩa g - f - h i -8 j không đạt tới từ s Bài toán đường ngắn n 5.1 Bài tố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ị khơng có chu trình 5.6 Thuật tốn Floyd-Warshal Nguyễn Đức Nghĩa Bài toán đường ngắn nh Tiếp Đầu -4 Đường đi: 1- - - - -5 =–4+6–5+4 -3 -4 -1 -5 -4 -1 -2 - 1- 5-4-1 Nguyễn Đức Nghĩa 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 j (n) dij Bài tố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 h hj h dhj(h-1) j i (h-1) dij Nguyễn Đức Nghĩa 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 Bài tố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) k Nguyễn Đức Nghĩa i, j pij = p (k-1) ij dij (k-1) pkj (k-1) …, k} (k-1) (k-1) dik + 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 P (1) NIL 1 NIL NIL NIL 2 NIL NIL NIL 1 NIL Bài toán đường ngắn nh Ví dụ (tiếp) D (2) D (3) D(4) Nguyễn Đức Nghĩa 0 0 4 P (2) NIL NIL NIL NIL NIL NIL P (3) P 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 4 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 Bài tố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 73 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 74 Questions? Nguyễn Đức Nghĩa Bài tố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 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 Bài tốn đường ngắn nh Questions? Nguyễn Đức Nghĩa Bài toán đường ngắn nh ... Nguyễn Đức Nghĩa Bài toán đường ngắn nh Đường ngắn xuất phát từ đỉnh Single-Source Shortest Paths Nguyễn Đức Nghĩa Bài toán đường ngắn nh Biểu diễn đường ngắn Các thuật tốn tìm đường ngắn làm việc... Nguyễn Đức Nghĩa Bài toán đường ngắn nh Đường đồ thị khơng có chu trỡnh Một trờng hợp riêng toán đờng ngắn giải đợc nhờ thuật toán với độ phức tạp tính toán O(n2), toán đồ thị chu trình (còn trọng... dài đường ngắn từ đến Nguyễn Đức Nghĩa 1 4 10 Bài toán đường ngắn nh Nội dung 5.1 Bài tố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