Đị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:[r]
(1)Chương 6
Bài toán luồng cực đại
Bài toán luồng cực đại Maximum Flow Problem
w s
v
u
t
z
3/3
1/9
1/1
3/3
4/7
4/6
3/5
1/1
3/5
2/2
(2)BM Khoa học Máy tính • TỐN RỜI RẠC • Fall 2005 • Nguyễn Đức Nghĩa
Bài toán luồng cực đại
Maximum Flow Problem
w s
v
u
t
z
3/3
1/9
1/1
3/3
4/7
4/6
3/5
1/1
3/5
2/2
(3)Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA
NỘI DUNG
Bài toán luồng cực đại mạng.
Lát cắt, Đường tăng luồng.
Định lý luồng cực đại lát cắt hẹp nhất.
Thuật toán Ford-Fulkerson
Thuật toán Edmond-Karp.
(4)Toá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
(5)Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA
Lester Randolph Ford, Jr (1927 ~)
(6)Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA
Bộ môn KHMT
Delbert Ray Fulkerson
(August 14, 1924 - January 10, 1976)
Delbert Ray Fulkerson was a mathematician who
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 Ford-Fulkerson algorithm together with Lester Randolph Ford
(7)Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA
Network Flows
s t
3
1 1
4
3 2
2
2 1
1
1 1
2
1
864 pages!
Ravindra K Ahuja, Thomas Magnanti and James Orlin Network
(8)Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA
Bộ mơn KHMT
(9)Tốn rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA
MẠNG (Network)
Mạng đồ thị có hướng G = (V,E) :
Có đỉnh s khơng có cung vào gọi
là đỉnh phát (nguồn) đỉnh t không có cung gọi đỉnh thu (đích).
Mỗi cung e G gắn với số không âm
c(e) gọi khả thơng qua e
Ví dụ:
w
s
v
u
t
z
3
9 1
3 7 6
5 1
5
(10)Toá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 mạng G=(V,E) phép gán số f(e) cho cạnh e ( f(e) gọi luồng cạnh e) thoả
mãn điều kiện:
1) Hạn chế khả thông qua (Capacity Rule):
Với cung e, f (e) c(e)
2) Điều kiện cân luồng (Conservation Rule): Với v s, t
( ) ( )
( ) ( )
e E v e E v
f e f e
(*)
( ) ( )
( ) ( ) ( )
e E s e E t
val f f e f e
trong E(v) E(v) tương ứng tập cung vào khỏi đỉnh v.
Định nghĩa Giá trị luồng f là
(11)Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA
LUỒNG TRONG MẠNG – Ví dụ
Trong số viết bên cạnh: giá trị luồng cạnh số màu
đỏ, số cịn lại khả thơng qua
Các điều kiện 1) 2) thoả mãn => f luồng mạng. Giá trị luồng là:
= f(s,v) + f(s,u) + f(s,w) = f(v,t) + f(w,t) + f(z,t)
w s
v
u
t
z
3/3
2/9 1/1
1/3 3/7 2/6
4/5 1/1
3/5
2/2
(12)Toá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 mạng G gọi
là luồng cực đại số tất luồng mạng G nó luồng có giá trị lớn
Bài tốn tìm luồng cực đại trong mạng G gọi toán luồng cực đại
w s v u t z 3/3 2/9 1/1 1/3 3/7 2/6 4/5 1/1 3/5 2/2 w s v u t z 3/3 2/9 1/1 3/3 3/7 4/6 4/5 1/1 3/5 2/2
Luồng với giá trị = + + = + + 4
(13)Toá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ả thông qua (capacity) cung e.
Mạng
Capacity
s
2
3
4
5
6
7
t
15 5
30
15
10
8 15
9
6 10
10
10
15 4
(14)Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA
Bộ môn KHMT 14
Luồng từ s đến t hàm f: E R thoả mãn:
Với e E: f(e) c(e) (hạn chế kntq) Với v V – {s, t}: (cân luồng)
Luồng s 2 3 4 5 6 7 t 15 5 30 15 10 8 15 9 6 10 10 10 15 4 4 4 0 0 0 0 0 0
0 4 4
0 4 0 0 0 kntq Capacity Luồng Flow : ( , ) ( ) ( ) : ( , )
w v w E e E v
f e f v w
- ) : ( , ) ( ) : ( , ) w w v E
e E v
f e f w v
( ( ) ( ) ( ) ( )
e E v e E v
f e f e
(15)Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA Bài tốn luồng cực đại: Tìm luồng có tổng luồng cạnh khỏi đỉnh phát lớn nhất:
Luồng s 2 3 4 5 6 7 t 15 5 30 15 10 8 15 9 6 10 10 10 15 4 4 4 0 0 0 0 0
0 4 4
0
4 0
Giá trị = 4
0 0 kntq Luồng ) ( ) ( ) ( ) ( )
e E s e E t
val f f e f e
(16)Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA
Bộ môn KHMT 16
Luồng có giá trị 24 mạng:
Luồng s 2 3 4 5 6 7 t 15 5 30 15 10 8 15 9 6 10 10 10 15 4 4 10 6 6 11 11 1 10
3 8 8
0
4 0
Giá trị = 24
0 0
kntq
(17)Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA Luồng có giá trị 28 mạng:
Luồng s 2 3 4 5 6 7 t 15 5 30 15 10 8 15 9 6 10 10 10 15 4 4 10 9 9 14 14 4 10
4 8 9
1
0 0
Giá trị = 28
0 0
kntq
(18)Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA
Bộ môn KHMT 18
Luồng mạng
truyền thông
Mạng
trạm giao dịch, máy tính, vệ tinh
Đỉnh Cung
cáp nối, cáp quang,
Luồng
voice, video, packets
mạng điện cổng, registers,
processors dây dẫn dòng điện cơ khí joints rods, beams, springs heat, energy
thuỷ lợi hồ chứa, trạm bơm,
nguồn nước đường ống
dịng nước, chất lỏng tài chính nhà băng giao dịch tiền
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
(19)Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA
Luồng mạng
communication
Mạng
telephone exchanges, computers, satellites
Đỉnh Cung
cables, fiber optics, microwave relays
Luồng
voice, video, packets
circuits gates, registers,
processors wires current
mechanical joints rods, beams, springs heat, energy
hydraulic reservoirs, pumping
stations, lakes pipelines fluid, oil financial stocks, currency transactions money
transportation airports, rail yards, street intersections
highways, railbeds, airway routes
freight, vehicles, passengers
(20)Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA
Bộ môn KHMT 20
Network reliability.
Security of statistical data. Distributed computing.
Egalitarian stable matching. Distributed computing.
Many many more
Các ứng dụng/qui dẫn
Network connectivity. Bipartite matching. Data mining.
(21)Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA
(22)Toá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) cho s S, t T.
Khả thông qua cap(S,T) của lát cắt (S, T) số:
Lát cắt (Cuts)
s
2
3
4
5
6
7
t
15 5
30
15
10
8 15
9
6 10
10
10
15 4
4
kntq = 30
(23)Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA
Lát cắt (S1, T1), S1={s,2,3,4}, T={5,6,7,t) có khả thơng qua 62: Lát cắt
s
2
3
4
5
6
7
t
15 5
30
15
10
8 15
9
6 10
10
10
15 4
4
(24)Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA
Bộ môn KHMT 24
Lát cắt (S2, T2), S2={s,3,4,7}, T2={2,5,6,t) có khả thơng qua 28: Lát cắt
s
2
3
4
5
6
7
t
15 5
30
15
10
8 15
9
6 10
10
10
15 4
4
(25)Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA
Bổ đề 1. Giả sử f luồng, (S, T) lát cắt Khi giá trị luồng chảy qua lát cắt giá trị luồng:
trong S T = {(v,w)E: vS, wT} T S = {(v,w)E: vT, w S} Luồng lát cắt
s 2 3 4 5 6 7 t 15 5 30 15 10 8 15 9 6 10 10 10 15 4 4 ( ) ( ) ( ) ( ) ( )
e S T e T S e E s
f e f e f e val f
Giá trị = 24 10
6
6
10
0 10
4 8 8
0
4 0
(26)Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA
Bộ môn KHMT 26 Bổ đề 1. Giả sử f luồng, (S, T) lát cắt Khi giá trị luồng
chảy qua lát cắt giá trị luồng: Luồng lát cắt
10 6 6 10 10 0 10
4 8 8
0 4 0 0 0 s 2 3 4 5 6 7 t 15 5 30 15 10 8 15 9 6 10 10 10 15 4 4
(27)Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA
Bổ đề 1. Giả sử f luồng, (S, T) lát cắt Khi giá trị luồng chảy qua lát cắt giá trị luồng:
Luồng lát cắt
10 6 6 10 10 0 10
4 8 8
0 4 0 0 s 2 3 4 5 6 7 t 15 5 30 15 10 8 15 9 6 10 10 10 15 4 4
Giá trị = 24
(28)Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA
Bộ môn KHMT 28
Luồng lát cắt
Chứng minh bổ đề: Giả sử f luồng cịn (S, T) cắt Khi
( )
( ) ( ) ( ) ( )
e S T e T S e E s
f e f e f e val f
S
CM Cộng tất ràng buộc cân luồng theo vS, đơn giản biểu thức ta thu được:
s v t u w ( ) ( ) ( )
0 ( ( ) ( ))
( ) ( ) ( )
v S e E v e E v
e S T e T S e E s
f e f e
f e f e f e
từ suy đẳng thức cần chứng minh
tổng theo cung xanh
tổng theo
(29)Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA
Bổ đề 2. Giả sử f luồng, (S, T) lát cắt Khi đó, val(f) cap(S, T). CM.
Luồng lát cắt
( ) ( ) ( )
( ) ( ) cap( , )
e S T e T S
e S T
e S T
val f f e f e
f e c e S T
s
t
S T
7
6
8
(30)Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA
Bộ môn KHMT 30
Luồng cực đại lát cắt nhỏ nhất
Max Flow and Min Cut
Hệ quả. Giả sử f luồng, (S, T) lát cắt Nếu val(f) = cap(S, T), f luồng cực đại (S, T) lát cắt hẹp nhất.
CM. Xét f’ luồng (S’,T’) lát cắt Theo bổ đề ta có val(f’) cap(S,T) = val(f) cap(S’,T’)
s 2 3 4 5 6 7 t 15 5 30 15 10 8 15 9 6 10 10 10 15 4 4 10 9 9 14 14 4 10
4 8 9
1
0 0
Giá trị luồng = 28
0 0
(31)Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA
Định lý luồng cực đại 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ị luồng cực đại khả thông qua lát cắt nhỏ nhất.
Proof (muộn hơn).
s 2 3 4 5 6 7 t 15 5 30 15 10 8 15 9 6 10 10 10 15 4 4 10 9 9 14 14 4 10
4 8 9
1
0 0
Flow value = 28
0 0
(32)Toá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 (Luồng có giá trị = 0).
Tìm đường P từ s đến t cung thoả mãn f(e) < c(e) Tăng luồng dọc theo đường P.
Lặp lại gặp bế tắc.
s
4
2
5
3 t
4
0 0
0 0 0
0
40 4 4
Luồng có giá trị = 0
(33)Toá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 (Luồng có giá trị = 0).
Tìm đường P từ s đến t cung thoả mãn f(e) < c(e) Tăng luồng dọc theo đường P.
Lặp lại gặp bế tắc.
s
4
2
5
3 t
4
0 0
0 0 0
0
40 4 4
Giá trị luồng = 10
10 13 10
10 10 10
(34)Toá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 (Luồng có giá trị = 0).
Tìm đường P từ s đến t cung thoả mãn f(e) < c(e) Tăng luồng dọc theo đường P.
Lặp lại gặp bế tắc.
Thuật toán tham lam cho luồng với giá trị 10.
s
4
2
5
3 t
10 13 10
4
0 0
10 10 10
0
(35)Toá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.
s
4
2
5
3 t
10 13 10
4
0 0
10 10 10
0
40 4 4
TT tham lam: Giá trị luồng = 10
s
4
2
5
3 t
10 13 10
4
4 4
10 6 10
4
44 4 4
Tối ưu:
(36)Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA
(37)Toá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: Gf = (V, Ef ).
“thu lại" luồng gửi E
f = {e: f(e) =0<c(e) } {eR : f(e) > }.
Khả thông qua
v 17 w
6
kntq
Luồng
Kntq
Kntq
v 11 w
6
(38)Toá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: Gf = (V, Ef ).
E
f = {e : f(e) < c(e)} {eR : f(e) > 0}.
c
f(e) cho biết lượng lớn tăng luồng cung e.
c
f(eR) cho biết lượng lớn giảm luồng cung e.
s
4
2
5
3 t
10 13 10
4
0 0
10 10 10
0 40 4 4 G s 4 2 5 3 t
10 10 10
(39)Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA
Đường tăng luồng
Đường tăng luồng = đường từ s đến t đồ thị tăng luồng Gf.
Khả thông qua đường P là
cf (P) = {cf (e): e P }.
s
4
2
5
3 t
10 13 10
4
0 0
10 10 10
0 40 4 4 G 4 4 6 4 4 X X X X X s 4 2 5 3 t
10 10 10
4
4 4 4
Gf
(40)Toá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 từ s đến t đồ thị tăng luồng.
Luồng cực đại khơng tìm đường tăng luồng???
Giá trị luồng = 14
s
4
2
5
3 t
10 13 10
4
4 4
10 6 10
4
44 4 4
G
s
4
2
5
3 t
10 6 10
4
4 4 4
7
(41)Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA
Định lý luồng cực đại lát cắt nhỏ nhất
Định lý đường tăng luồng (Ford-Fulkerson, 1956): Luồng cực đại và khơng tìm đường tăng luồng
Định lý luồng cực đại lát cắt nhỏ nhất (Ford-Fulkerson, 1956): Giá trị luồng cực đại khả thông qua lát cắt nhỏ nhất.
Ta chứng minh định lý tổng hợp sau:
Định lý. Giả sử f luồng mạng Ba mệnh đề sau tương đương
(i) Tìm lát cắt (S, T) cho val(f) = cap(S, T). (ii) f luồng cực đại.
(iii) Khơng tìm đường tăng luồng f.
(42)Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA Bộ môn KHMT
Thuật tốn Ford-Fulkerson:
Để tìm luồng cực đại mạng vận tải G, ta xuất phát từ luồng tuỳ ý ϕ G, nâng luồng lên đầy, sau đó áp dụng thuật tốn Ford-Fulkerson.
Thuật tốn gồm bước:
Bước (đánh dấu đỉnh mạng):Lối vào v0
được đánh dấu
Nếu đỉnh vi đánh dấu ta dùng số +i
để đánh dấu cho đỉnh y chưa đánh dấu mà
(vi,y) E cung chưa bão hoà (∈ ϕ(vi,y)<m(vi,y))
Nếu đỉnh v+ đánh dấu ta dùng số −i để đánh dấu cho đỉnh z chưa đánh dấu mà
(z,vi) E luồng cung dương (∈ ϕ(z,vi)>0)
(43)Toá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 ta đánh dấu tới lối vn G tồn v0 và vn một xích
(44)Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA Bộ mơn KHMT
Thuật tốn Ford-Fulkerson:
Bước (nâng giá trịcủa luồng): Đểnâng giá trịcủa luồng ϕ, ta đặt:
ϕ’(e) = ϕ(e), e∉α
ϕ’(e) = ϕ(e)+1, e∈α định hướng theo
chiều xích α từ vo đến vn
ϕ’(e) = ϕ(e)−1, e∈α định hướng ngược
với chiều xích α từ vo đến vn
ϕ’ thoả mãn điều kiện luồng, nên ϕ’
luồng ta có: ϕ’n= ϕn+1
Như vậy, ta nâng luồng lên đơn vị Sau lặp lại vịng Vì khả thông qua cung hữu hạn, nên trình phải dừng lại sau số hữu hạn bước
(45)Toá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 ta
không thể nâng giá trị luồng lên nữa, nghĩa ta khơng thể đánh dấu đỉnh vn, ta nói q
trình nâng luồng kết thúc ϕ0 đã đạt giá trịcực đại,
(46)Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA
Bộ môn KHMT 46
Thuật toán Ford – Fulkerson
Augment(f,P)
b cf(P)
FOR e P DO
IF (e E) THEN // cạnh thuận
f(e) f(e) + b
ELSE // cạnh nghịch
f(eR) f(e) – b
RETURN f
Tăng luồng f dọc theo đường tăng P
Ford_Fulkerson(G,c,s,t);
FOR e E DO // Khởi tạo luồng 0
f(e) 0
Gf đồ thị tăng luồng f
WHILE (tìm đường tăng luồng P) DO
f augment(f, P) Sửa lại Gf
RETURN f
Thuật toán Ford-Fulkerson
(47)Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA
Ví dụ:
Cho mạng vận tải hình với khả
(48)Toá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 V
0 đỉnh thu
là V8.
Luồng ϕ có đường (v
0,v4), (v4,v6), (v6,v8)
gồm cung chưa bão hoà nên chưa đầy Do nâng luồng cung này lên đơn vị, để ϕ1
48
V8
V4 V6
V0
6+1
+0 +4
+6 2+1
(49)Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA
(50)Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA Bộ mơn KHMT
Giải:
(51)Tốn rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA
(52)Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA Bộ môn KHMT
Giải:
(53)(54)Toán rời rạc – Fall 2005 NGUYỄN ĐỨC NGHĨA Bộ môn KHMT
Bài tập
Giải toán mạng vận tải sau thuật toán
Ford-Fulkerson với luồng vận tải khởi đầu 0.