Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨABộ môn KHMT 8 Mạng và luồng trong mạng... Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨABộ môn KHMT LUỒNG TRONG MẠNG Định nghĩa.. Toán rời rạc – Fall
Trang 1Chương 6 Bài toán luồng cực đại
Maximum Flow Problem
Trang 2BM Khoa học Máy tính • TOÁN RỜI RẠC • Fall 2005 • Nguyễn Đức Nghĩa
Bài toán luồng cực đại
Maximum Flow Problem
Trang 3Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA
NỘI DUNG
Trang 4Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA
Bộ môn KHMT
L R Ford; D R Fulkerson (1962) Flows in
Networks Princeton, NJ: Princeton University Press.
4
Trang 5Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA
Lester Randolph Ford, Jr (1927 ~)
Lester Randolph Ford, Jr (born September 23, 1927), son of
Lester R Ford, Sr., is an American mathematician specializing
in network flow programming His 1956 paper with D R.
Fulkerson on the maximum flow problem established the
maxflow-mincut theorem.
Trang 6Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA
Bộ môn KHMT 6
Delbert Ray Fulkerson
(August 14, 1924 - January 10, 1976)
co-developed the Ford-Fulkerson algorithm, one of the most used algorithms to compute maximal flows in networks.
Ph.D, Univ of Wisconsin-Madison, 1951.
In 1956, he published his famous paper on the Fulkerson algorithm together with Lester Randolph Ford.
Ford-In 1979, the renowned Fulkerson Prize was established which is now awarded every three years for outstanding papers in discrete mathematics jointly by the Mathematical Programming Society and the American Mathematical Society.
Trang 7Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA
Ravindra K Ahuja, Thomas Magnanti and James Orlin Network
Flows Prentice Hall, 1993.
Trang 8Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA
Bộ môn KHMT 8
Mạng và luồng trong mạng
Trang 9Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA
MẠNG (Network)
Mạng là đồ thị có hướng G = (V,E) :
Có duy nhất một đỉnh s không có cung đi vào gọi
là đỉnh phát (nguồn) và duy nhất một đỉnh t không có cung đi ra gọi là đỉnh thu (đích).
Mỗi cung e của G được gắn với một số không âm
c(e) được gọi là khả năng thông qua của e.
5 1
5
2
Trang 10Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA
Bộ môn KHMT
LUỒNG TRONG MẠNG
Định nghĩa Luồng f trong mạng G=(V,E) là phép gán số f(e) cho mỗi cạnh e ( f(e) được gọi là luồng trên cạnh e) thoả mãn các điều kiện:
1) Hạn chế về khả năng thông qua (Capacity Rule):
Với mỗi cung e, 0 f (e) c(e)
2) Điều kiện cân bằng luồng (Conservation Rule): Với mỗi v s, t
Định nghĩa Giá trị của luồng f là
(Đẳng thức (*) thu được bằng cách cộng tất cả các điều kiện cân bằng luồng.)
Trang 11Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA
LUỒNG TRONG MẠNG – Ví dụ
Trong 2 số viết bên mỗi cạnh: giá trị luồng trên cạnh là số màu
đỏ, số còn lại là khả năng thông qua
Các điều kiện 1) và 2) được thoả mãn => f là luồng trên mạng.
Giá trị luồng là:
8 = f(s,v) + f(s,u) + f(s,w) = f(v,t) + f(w,t) + f(z,t)
w s
Trang 12Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA
Bộ môn KHMT 12
Bài toán luồng cực đại
Luồng trong mạng G được gọi
là luồng cực đại nếu trong số
tất cả các luồng trong mạng G
nó là luồng có giá trị lớn nhất
Bài toán tìm luồng cực đại
trong mạng G được gọi là bài
toán luồng cực đại
w s
4/ 5 1/ 1
3/ 5
2/ 2
w s
4/ 5 1/ 1
3/ 5
2/ 2 Luồng với giá trị 8 = 2 + 3 + 3 = 1 + 3 + 4
Luồng cực đại có giá trị 10 = 4 + 3 + 3 = 3 + 3 + 4
Trang 13Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA
Mạng: G = (V, E, s, t, c)
(V, E) = đồ thị có hướng, không có cung lặp.
Có hai đỉnh đặc biệt: s = phát/nguồn (source), t = thu/đích (sink).
c(e) = khả năng thông qua (capacity) của cung e.
30
15
10
8 15 9
10
10 15
4
4
Trang 14Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA
Bộ môn KHMT 14
Luồng từ s đến t là hàm f: E R thoả mãn:
Với mỗi e E: 0 f(e) c(e) (hạn chế kntq)
30
15
10
8 15 9
10
10 15
Trang 15Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA
Bài toán luồng cực đại: Tìm luồng có tổng luồng trên các cạnh đi ra
30
15
10
8 15 9
10
10 15
Trang 16Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA
30
15
10
8 15 9
10
10 15
kntq
Luồng
Trang 17Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA
Luồng có giá trị 28 trong mạng:
30
15
10
8 15 9
10
10 15
kntq
Luồng
Trang 18Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA
cáp nối, cáp quang,
Luồng
voice, video, packets
mạng điện cổng, registers,
thuỷ lợi hồ chứa, trạm bơm,
dòng nước, chất lỏng
giao thông sân bay, ga tàu,
giao lộ
đường cao tốc, ray, đường bay
hàng hoá, phương tiện, hành khách
Trang 19Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA
Luồng trong mạng
communication
Mạng
telephone exchanges, computers, satellites
circuits gates, registers,
mechanical joints rods, beams, springs heat, energy
hydraulic reservoirs, pumping
financial stocks, currency transactions money
transportation airports, rail yards,
street intersections
highways, railbeds, airway routes
freight, vehicles, passengers
Trang 20Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA
Trang 21Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA
Lát cắt – Đường tăng luồng
Trang 22Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA
Bộ môn KHMT 22
Lát cắt là cách phân hoạch tập đỉnh (S, T) sao cho s S, t T.
Khả năng thông qua cap(S,T) của lát cắt (S, T) là số:
30
15
10
8 15 9
10
10 15
4
4
kntq = 30 Lát cắt nhỏ nhất (hẹp nhất) là lát cắt với kntq nhỏ nhất.
Trang 23Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA
Lát cắt (S 1 , T 1 ), S 1 ={s,2,3,4}, T={5,6,7,t) có khả năng thông qua 62:
30
15
10
8 15 9
10
10 15
4
4
cap(S 1 ,T 1 )= 62
Trang 24Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA
30
15
10
8 15 9
10
10 15
4
4
cap(S 2 ,T 2 ) = 28
Trang 25Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA
Bổ đề 1. Giả sử f là luồng, và (S, T) là lát cắt Khi đó giá trị luồng
chảy qua lát cắt chính bằng giá trị của luồng:
trong đó S T = {(v,w)E: vS, wT} và T S = {(v,w)E: vT, w S}
30
15
10
8 15 9
10
10 15
Trang 26Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA
Bộ môn KHMT 26
Bổ đề 1. Giả sử f là luồng, và (S, T) là lát cắt Khi đó giá trị luồng
chảy qua lát cắt chính bằng giá trị của luồng:
30
15
10
8 15 9
10
10 15
4
4 Giá trị = 24
Trang 27Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA
Bổ đề 1. Giả sử f là luồng, và (S, T) là lát cắt Khi đó giá trị luồng
chảy qua lát cắt chính bằng giá trị của luồng:
30
15
10
8 15 9
10
10 15
4
4 Giá trị = 24
0
Trang 28Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA
CM Cộng tất cả các ràng buộc cân bằng luồng theo mọi vS, đơn
giản biểu thức ta thu được:
Trang 29Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA
CM.
Luồng và lát cắt
( ) ( ) cap( , )
Trang 30Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA
Bộ môn KHMT 30
Luồng cực đại và lát cắt nhỏ nhất
Max Flow and Min Cut
Hệ quả Giả sử f là luồng, còn (S, T) là lát cắt Nếu val(f) = cap(S, T) , thì
30
15
10
8 15 9
10
10 15
kntq của lát cắt = 28
Trang 31Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA
Định lý về luồng cực đại và lát cắt nhỏ nhất
Max-Flow Min-Cut Theorem
Đinh lý (Ford-Fulkerson, 1956): Trong mạng bất kỳ, giá trị của luồng
cực đại luôn bằng khả năng thông qua của lát cắt nhỏ nhất.
Proof (muộn hơn).
30
15
10
8 15 9
10
10 15
Cut capacity = 28
Trang 32Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA
Bộ môn KHMT 32
Ý tưởng thuật toán
Thuật toán tham lam:
Bắt đầu từ luồng 0 (Luồng có giá trị = 0).
Tìm đường đi P từ s đến t trong đó mỗi cung thoả mãn f(e) < c(e)
Tăng luồng dọc theo đường đi P.
Lặp lại cho đến khi gặp bế tắc.
Luồng có giá trị = 0
Trang 33Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA
Ý tưởng thuật toán
Thuật toán tham lam:
Bắt đầu từ luồng 0 (Luồng có giá trị = 0).
Tìm đường đi P từ s đến t trong đó mỗi cung thoả mãn f(e) < c(e)
Tăng luồng dọc theo đường đi P.
Lặp lại cho đến khi gặp bế tắc.
Giá trị luồng = 10
Trang 34Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA
Bộ môn KHMT 34
Ý tưởng thuật toán
Thuật toán tham lam:
Bắt đầu từ luồng 0 (Luồng có giá trị = 0).
Tìm đường đi P từ s đến t trong đó mỗi cung thoả mãn f(e) < c(e)
Tăng luồng dọc theo đường đi P.
Lặp lại cho đến khi gặp bế tắc.
Thuật toán tham lam cho luồng với giá trị 10.
Trang 35Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA
Ý tưởng thuật toán
Thuật toán tham lam không cho lời giải tối ưu.
Tối ưu:
Giá trị luồng = 14
Trang 36Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA
Bộ môn KHMT 36
ĐỒ THỊ TĂNG LUỒNG- ĐƯỜNG TĂNG LUỒNG
Trang 37Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA
Đồ thị tăng luồng – Tập cung
Mạng đã cho G = (V, E).
Luồng f(e), e E.
Cung e = (v, w) E.
Đồ thị tăng luồng: G f = (V, E f ).
“thu lại" luồng đã gửi
Ef = {e: f(e) =0<c(e) } {e R : f(e) > 0 }.
Khả năng thông qua
Trang 38Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA
Bộ môn KHMT 38
Đồ thị tăng luồng - Ví dụ
Đồ thị tăng luồng: G f = (V, E f ).
E f = {e : f(e) < c(e)} {e R : f(e) > 0}.
c f (e) cho biết lượng lớn nhất có thể tăng luồng trên cung e.
c f (e R ) cho biết lượng lớn nhất có thể giảm luồng trên cung e.
4 4
3
G f
Trang 39Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA
Đường tăng luồng
Đường tăng luồng = đường đi từ s đến t trên đồ thị tăng luồng G f
Khả năng thông qua của đường đi P là
4 4
G f
Trang 40Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA
Bộ môn KHMT 40
Đường tăng luồng
Đường tăng luồng = đường đi từ s đến t trên đồ thị tăng luồng.
Luồng là cực đại không tìm được đường tăng luồng???
4 4
7
G f
Trang 41Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA
Định lý về luồng cực đại và lát cắt nhỏ nhất
Định lý đường tăng luồng (Ford-Fulkerson, 1956): Luồng là cực đại khi
và chỉ khi không tìm được đường tăng luồng
Định lý về luồng cực đại và lát cắt nhỏ nhất (Ford-Fulkerson, 1956): Giá
trị của luồng cực đại bằng khả năng thông qua của lát cắt nhỏ nhất.
Ta sẽ chứng minh định lý tổng hợp sau:
(i) Tìm được lát cắt (S, T) sao cho val(f) = cap(S, T).
(ii) f là luồng cực đại.
(iii) Không tìm được đường tăng luồng f.
Trang 42Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA
Bộ môn KHMT
Thuật toán Ford-Fulkerson:
Để tìm luồng cực đại của mạng vận tải G, ta xuất phát từ luồng tuỳ ý ϕ của G, rồi nâng luồng lên đầy, sau
đó áp dụng thuật toán Ford-Fulkerson.
Thuật toán gồm 3 bước:
Bước 1 (đánh dấu ở đỉnh của mạng):Lối vào v 0 được đánh dấu bằng 0.
Nếu đỉnh v i đã được đánh dấu thì ta dùng chỉ số +i để đánh dấu cho mọi đỉnh y chưa được đánh dấu mà
(v i ,y)∈E và cung này chưa bão hoà (ϕ(v i ,y)<m(v i ,y)).
Nếu đỉnh v+ đã được đánh dấu thì ta dùng chỉ số
−i để đánh dấu cho mọi đỉnh z chưa được đánh dấu mà
(z,v i )∈E và luồng của cung này dương (ϕ(z,v i )>0).
42
Trang 43Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA
Thuật toán Ford-Fulkerson:
Nếu với phương pháp này ta đánh dấu được tới
lối ra v n thì trong G tồn tại giữa v 0 và v n một xích
α, mọi đỉnh đều khác nhau và được đánh dấu
theo chỉ số của đỉnh liền trước nó (chỉ sai khác
nhau về dấu) Khi đó chắc chắn ta nâng được
giá trị của luồng.
Trang 44Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA
Bộ môn KHMT
Thuật toán Ford-Fulkerson:
Bước 2 (nâng giá trịcủa luồng): Đểnâng giá trịcủa luồng ϕ, ta đặt:
ϕ’(e) = ϕ(e), nếu e∉α ϕ’(e) = ϕ(e)+1, nếu e∈α được định hướng theo chiều của xích α đi từ v o đến v n
ϕ’(e) = ϕ(e)−1, nếu e∈α được định hướng ngược với chiều của xích α đi từ v o đến v n
ϕ’ thoả mãn các điều kiện về luồng, nên ϕ’ là một luồng và ta có: ϕ’ n = ϕ n +1
Như vậy, ta đã nâng được luồng lên một đơn vị
Sau đó lặp lại một vòng mới Vì khả năng thông qua của các cung đều hữu hạn, nên quá trình phải dừng
lại sau một số hữu hạn bước
44
Trang 45Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA
Thuật toán Ford-Fulkerson:
Bước 3:
Nếu với luồng ϕ 0 bằng phương pháp trên ta không thể nâng giá trị của luồng lên nữa, nghĩa là ta
không thể đánh dấu được đỉnh v n , thì ta nói rằng quá
trình nâng luồng kết thúc và ϕ 0 đã đạt giá trịcực đại,
đồng thời gọi ϕ 0 là luồng kết thúc.
Trang 46Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA
RETURN f
Thuật toán Ford-Fulkerson
Ví dụ
Trang 47Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA
Ví dụ:
Cho mạng vận tải như hình dưới đây với khả
năng thông qua được đặt trong khuyên tròn,
luồng được ghi trên các cung Tìm luồng cực
đại của mạng này
Trang 48Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA
Bộ môn KHMT
Giải:
Mạng vận tải G có đỉnh phát là V 0 và đỉnh thu
là V 8.
Luồng ϕ có đường đi (v 0 ,v 4 ), (v 4 ,v 6 ), (v 6 ,v 8 )
gồm các cung chưa bão hoà nên nó chưa
đầy Do đó có thể nâng luồng của các cung
này lên một đơn vị, để được ϕ 1
48
V 8
V 0 6+1
+6 2+1
11+1
Trang 49Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA
Giải:
Trang 50Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA
Bộ môn KHMT
Giải:
50
Trang 51Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA
Giải:
Trang 52Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA
Bộ môn KHMT
Giải:
52
Trang 53Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA
Trang 54Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA
Bộ môn KHMT
Bài tập
Giải bài toán mạng vận tải sau bằng thuật toán
Ford-Fulkerson với luồng vận tải khởi đầu bằng 0.
54