Giáo trình Toán rời rạc - Bài 21: Luồng trên mạng - Trần Vĩnh Đức
Luồng trên mạng
V0.1
Trần Vĩnh Đức
HUST
Ngày 20 tháng 11 năm 2019
1 / 34
Tài liệu tham khảo
▶
S. Dasgupta, C. H. Papadimitriou, and U. V. Vazirani,
Algorithms, July 18, 2006.
2 / 34
Nộ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
Bài toán chuyển dầu
4 / 34
Mô hình bài bài toán
a
2
1
1
d
1
10
3
3
4
2
5
s
t
b
c
e
5
▶
▶
Đồ thị có hướng biểu diễn mạng đường ống, dầu có thể được
chuyển qua đường ống này
Mục tiêu là chuyển dầu từ s đến t, nhiều nhất có thể.
5 / 34
Một luồng chuyển 7 đơn vị dầu từ s tới t
khả năng thông qua
luồng
2/2
1/1
1/1
a
d
0/1
e
0/10
2/3
1/3
4/4
2/2
s
t
b
5/5
5/5
c
Liệu có cách nào làm tốt hơn?
6 / 34
Mạng
Định nghĩa
Một mạng được định nghĩa là bộ G = (V, E, s, t, c), ở đây
▶
(V, E) là một đồ thị có hướng;
▶
s, t ∈ V, gọi là đỉnh nguồn và đỉnh đích; và
▶
c là một hàm gắn trên mỗi cạnh e của G một giá trị ce > 0
gọi là khả năng thông qua.
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.
7 / 34
Định nghĩa (Luồng)
Một luồng trên mạng G là một hàm
f : E −→ R+ ∪ {0},
gắn mỗi cạnh e của G với một giá trị số fe, sao cho:
1. Không vi phạm khả năng thông qua:
0 ≤ fe ≤ ce với mọi e ∈ E
2. Với mọi đỉnh u, ngoại trừ s và t, tổng luồng vào u bằng tổng
luồng ra khỏi u:
∑
∑
fwu
=
fuz.
(w,u)∈E
(u,z)
Nói cách khác, mạng là bảo toàn (theo luật Kirchhoff).
8 / 34
Luồng và lượng dầu chuyển
khả năng thông qua
luồng
2/2
1/1
1/1
a
d
0/10
2/3
1/3
4/4
2/2
s
0/1
5/5
e
t
b
5/5
c
9 / 34
Đị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:
∑
size(f) =
fsu.
(s,u)∈E
▶
▶
Mục đích của chúng ta là tìm được luồng có giá trị cực đại.
Tương đương, tìm cách gán giá trị
{fe : e ∈ E}
thỏa mãn một số ràng buộc.
Đây là một bài toán quy hoạch tuyến tính.
▶
10 / 34
Ví dụ
Bài toán tìm luồng cực đại trong mạng
a
1
1
1
1
s
t
1
b
tương đương với bài toán quy hoạch tuyến tính
max fsa + fsb
0 ≤ fsa, fsb, fab, fat, fbt ≤ 1
fsa = fat + fab
fsb + fab = fbt
11 / 34
Nộ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
Thuật toán tham lam
▶
Bắt đầu với luồng 0
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.
▶
13 / 34
Khởi tạo
Tăng luồng
a
a
0/1
0/1
0/1
1/1
1/1
0/1
0/1
0/1
s
s
t
t
t
t
0/1
0/1
b
b
Tăng luồng
Luồng cực đại
a
a
1/1
1/1
1/1
1/1
1/1
1/1
0/1
0/1
s
s
1/1
1/1
b
b
14 / 34
Khởi tạo
Tăng luồng
a
a
0/1
0/1
0/1
1/1
0/1
1/1
0/1
1/1
s
s
t
t
t
0/1
0/1
b
b
Hủy luồng trên cạnh a → b
Luồng cực đại
a
a
1/1
1/1
1/1
1/1
1/1
0/1
0/1
s
s
t
1/1
1/1
1/1
b
b
15 / 34
Tìm đường tăng luồng
Tìm cạnh (u, v) có một trong hai kiểu
▶
(u, v) ∈ E và khả năng thông qua cuv vẫn chưa đầy. Khi đó
fuv có thể tăng thêm nhiều nhất là
cuv − fuv.
▶
(v, u) ∈ E và có một luồng qua đó, tức là fvu > 0. Khi đó ta
có thể giảm một phần hoặc toàn bộ fvu.
16 / 34
Đường tăng luồng
Cạnh gốc
Cạnh ngược
▶
e = (u, v) ∈ E
eR = (v, u)
▶
▶
Luồng fe
▶
“Giảm” luồng fe đã gửi
▶
Khả năng ce
Ví dụ
Khả năng thông qua còn lại
a
1/1
0/1
0/1
1/1
{
1/1
ce − fe nếu e ∈ E
cf(e) =
s
t
fe
nếu eR ∈ E.
b
17 / 34
Đồ thị tăng luồng
Định nghĩa
Đồ thị tăng luồng của mạng G với luồng f là đồ thị
Gf = (V, Ef, cf) với
Ef = {e : fe < ce} ∪ {eR : fe > 0}.
Ví dụ
Mạng G với luồng f và đồ thị tăng luồng Gf tương ứng.
a
a
1/1
0/1
0/1
1/1
1
1
1
1
1/1
1
s
s
t
t
b
b
18 / 34
Đường tăng luồng
Định nghĩa
▶
Một đường tăng luồng là một đường đi từ s đến t trong đồ
thị tăng luồng Gf.
▶
Khả năng thông qua của đường tăng luồng P là
cf(P) = min{cf(e) : e ∈ P}
Augment(f, c, P)
δ = cf(P)
foreach cạnh e ∈ P:
if (e ∈ E) fe = fe + δ
else
return f
f(eR) = f(eR) − δ
19 / 34
Thuật toán Ford-Fulkerson
Ford-Fulkerson (G)
foreach cạnh e ∈ E: fe = 0
Gf = đồ thị tăng luồng của G và f
while (còn đường tăng luồng P trong Gf):
f = Augment(f, c, P)
Cập nhật Gf
return f
20 / 34
Tải về để xem bản đầy đủ
Bạn đang xem 20 trang mẫu của tài liệu "Giáo trình Toán rời rạc - Bài 21: Luồng trên mạng - Trần Vĩnh Đức", để tải tài liệu gốc về máy hãy click vào nút Download ở trên
File đính kèm:
giao_trinh_toan_roi_rac_bai_21_luong_tren_mang_tran_vinh_duc.pdf

