Bài giảng Toán rời rạc: Luồng trên mạng cung cấp cho người học những nội dung kiến thức như: Bài toán luồng cực đại trên mạng, thuật toán Ford-Fulkerson, luồng cực đại và lát cắt cực tiểu, tính hiệu quả của thuật toán. Mời các bạn cùng tham khảo.
Trang 2Tài liệu tham khảo
Algorithms, July 18, 2006.
Trang 3Nội dung
Bài toán luồng cực đại trên mạng
Thuật toán Ford-Fulkerson
Luồng cực đại và lát cắt cực tiểu
Tính hiệu quả của thuật toán
Trang 4Bài toán chuyển dầu
ptg12441863
887
Network-flow algorithms
-
con-0->1->3->5
0->2->4->5 0->1 , 2->4 , and 3->5
drawing with capacities drawing with flow flow representation
Local equilibrium in a flow network
inflow equals outflow
at every vertex
(except the source
and the sink)
Trang 5Mô hình bài bài toán
5
chuyển qua đường ống này
Trang 6Một luồng chuyển 7 đơn vị dầu từ s tới t
Liệu có cách nào làm tốt hơn?
Trang 7▶ c là một hàm gắn trên mỗi cạnh e của G một giá trị c e > 0
Bài toán
Ta muốn chuyển nhiều dầu nhất có thể từ s tới t mà không vượt
quá khả năng thông qua trên mỗi cạnh
Trang 8Định nghĩa (Luồng)
Một luồng trên mạng G là một hàm
f : E −→ R+∪ {0},
Trang 9Luồng và lượng dầu chuyển
Trang 10Định nghĩa
Giá trị của luồng là tổng lượng gửi từ s đến t Theo luật bảo
toàn, size(f) bằng lượng rời khỏi s:
(s,u) ∈E
f su
{f e : e ∈ E}
thỏa mãn một số ràng buộc
Trang 12Nội dung
Bài toán luồng cực đại trên mạng
Thuật toán Ford-Fulkerson
Luồng cực đại và lát cắt cực tiểu
Tính hiệu quả của thuật toán
Trang 13Thuật toán tham lam
▶ Lặp lại : Chọn một đường đi thích hợp từ s tới t và tăng
luồng nhiều nhất có thể dọc theo đường này
Trang 16Tìm đường tăng luồng
Tìm cạnh (u, v) có một trong hai kiểu
c uv − f uv
Trang 17Đường tăng luồng
▶ “Giảm” luồng f e đã gửi
Khả năng thông qua còn lại
1/1
Trang 181
Trang 19Đường tăng luồng
Trang 20Thuật toán Ford-Fulkerson
Ford-Fulkerson (G)
f = Augment(f, c, P)
return f
Trang 21Lecture slides by Kevin Wayne
Copyright © 2005 Pearson-Addison Wesley
Copyright © 2013 Kevin Wayne
http://www.cs.princeton.edu/~wayne/kleinberg-tardos
7. NETWORK FLOW I
‣ Ford-Fulkerson demo
Trang 2210 4
Trang 23Ford-Fulkerson algorithm demo
Trang 24—
Trang 25Ford-Fulkerson algorithm demo
10
10 6
Trang 27Ford-Fulkerson algorithm demo
Trang 28nodes reachable from s
Trang 29Nội dung
Bài toán luồng cực đại trên mạng
Thuật toán Ford-Fulkerson
Luồng cực đại và lát cắt cực tiểu
Tính hiệu quả của thuật toán
Trang 30các cạnh từ L sang R = 4 + 1 + 2 = 7.
Trang 31Định nghĩa
qua của các cạnh từ L đến R Cụ thể,
u ∈L, v∈R
c uv
Chặn trên cho luồng
Với mỗi luồng f và mỗi lát cắt (L, R), ta luôn có
Trang 32Định lý (Max Flow-Min Cut)
Kích thước của luồng cực đại trong mạng bằng với khả năng
thông qua của lát cắt cực tiểu
Chứng minh
t không đến được từ s trong đồ thị G f
là một lát cắt
size(f) = capacity(L, R).
và mọi cạnh từ R tới L phải có luồng bằng 0.
Trang 34Q & A
Liên quan đến thuật toán Ford-Fulkerson
minh Định lý Max Flow-Min Cut
đại? Có chứ Lát cắt cực tiểu là bằng chứng
tăng luồng là luồng lại tăng lên Luồng không thể tăng vô hạn
Trang 35Nội dung
Bài toán luồng cực đại trên mạng
Thuật toán Ford-Fulkerson
Luồng cực đại và lát cắt cực tiểu
Tính hiệu quả của thuật toán
Trang 36Trường hợp tồi tệ của thuật toán
Kể cả khi khả năng thông qua là tối ưu, số đường tăng luồng cầntìm có thể lớn bằng giá trị của luồng!
Ví dụ
được luồng cực đại
Trang 40Trường hợp tồi tệ của thuật toán
luồng!
Trang 41Lựa chọn đường tăng luồng
Bẳng:Đồ thị có trọng số với n đỉnh và m cạnh, và các khả năng thông qua là số nguyên trong khoảng 1 đến ℓ
Trang 42Bài tập
Hãy chạy thuật toán Ford-Fulkerson để tìm luồng cực đại cho
mạng sau Bạn nên dùng thuật toán BFS để tìm đường tăng luồng
5