Trong lý thuyết đồ thị, bài toán đường đi ngắn nhất nguồn đơn là bài toán tìm một đường đi giữa hai đỉnh sao cho tổng các trọng số của các cạnh tạo nên đường đi đó là nhỏ nhất. Một bài toán có liên quan là bài toán người bán hàng bài toán tìm đường đi ngắn nhất đi qua tất cả các đỉnh, mỗi đỉnh đúng một lần, và trở về đỉnh xuất phát. Đây là bài toán NPđầy đủ, do đó khó có khả năng tồn tại một cách giải hiệu quả. Trong tư duy của ngành mạng hay viễn thông, bài toán đường đi ngắn nhất đôi khi được gọi là bài toán đường đi có độ trễ nhỏ nhất (mindelay path problem) và thường được gắn với một bài toán đường đi rộng nhất (widest path problem). ví dụ đường đi rộng nhất trong các đường đi ngắn nhất (độ trễ nhỏ nhất) hay đường đi ngắn nhất trong các đường đi rộng nhất.
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ộ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ị khơng có chu trình 5.6 Thuật tốn Floyd-Warshal Nguyễn Đức Nghĩa Tốn rời rạc, Fall 2005 Bài toán đường ngắ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 tốn đường ngắ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 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 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 Toán rời rạc, Fall 2005 Bài toán đường ngắn Nhận xét Các toán xếp theo thứ tự từ đơn giả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 phức tạp Toán rời rạc, Fall 2005 Bài toán đường ngắ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 Tốn rời rạc, Fall 2005 Bài toán đường ngắ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 ∞ -8 i ∞ ∞ j không đạt tới từ s Bài toán đường ngắ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 Toán rời rạc, Fall 2005 Bài toán đường ngắn 10 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 64 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 j ≤ m Khi độ dài đường ngắn từ i đến j Nguyễn Đức Nghĩa Toán rời rạc, Fall 2005 (n) dij Bài tốn đường ngắn 65 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 66 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 ← (d ij , d ik + d kj ) return D(n) Thời gian tính Θ(n3) ! Nguyễn Đức Nghĩa Tốn rời rạc, Fall 2005 Bài toán đường ngắn 67 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) ≤ dik (k-1) + dkj trái lại Bài toán đường ngắn 68 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 Bài toán NIL Toán rời rạc, Fall 2005 đường ngắn P 69 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 70 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 71 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 Tốn rời rạc, Fall 2005 Bài toán đường ngắn 72 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 75 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 76 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 77 Questions? Nguyễn Đức Nghĩa Toán rời rạc, Fall 2005 Bài toán đường ngắn 78 ... Nghĩa Toán rời rạc, Fall 2005 Bài toán đường ngắn 13 Đường ngắn xuất phát từ đỉnh Single-Source Shortest Paths Nguyễn Đức Nghĩa Toán rời rạc, Fall 2005 Bài toán đường ngắn 14 Biểu diễn đường ngắn. .. c Ngha Toán rời rạc, Fall 2005 Bài toán đường ngắn 17 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 đồ... ∞ ∞ j khơng đạt tới từ s Bài tốn đường ngắ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ị khơng có chu