LUỒNG CỰC ĐẠI
NỘI DUNG
•
Mạng vận tải
•
Luồng qua mạng
•
Bài toán luồng cực đại
•
Thuật toán Ford - Fulkerson
•
Một số ứng dụng của bài toán luồng cực đại
MẠNG VẬN TẢI
•
Định nghĩa 25.1: Mạng vận tải là một đồ thị có
hướng G = (V, E) không có đỉnh nút, trong đó:
- Có duy nhất một đỉnh s không có cung đi vào,
gọi là đỉnh phát.
- Có duy nhất một đỉnh t không có cạnh đi ra,
gọi là đỉnh thu.
- Mỗi cung (u,v) được gán một số nguyên không
âm c(u,v) gọi là khả năng thông qua của cung.
MẠNG VẬN TẢI
Ví dụ:
S
A
B
C
D
E
F
T
2
2
8
4 1
3
9
10 4
2
9
6
10
4
Đỉnh phát
Đỉnh trung gian
Đỉnh thu
LUỒNG QUA MẠNG
Cho mạng G = (V,E). Một ánh xạ
f: E → N
(u,v) |→ f(u,v)
Được gọi là một luồng trên mạng nếu f thoả mãn các tính chất
sau:
-
Luồng trên mỗi cung không vượt quá khả năng thông qua của
cung đó.
0 ≤ f(u,v) ≤ c(u,v) , ∀(u,v) ∈E
-
Điều kiện cân bằng luồng: Tổng giá trị luồng đi vào một đỉnh
trung gian bằng tổng giá trị luồng đi ra của đỉnh đó.
},{\,),(),(
)()(
tsVvwvfvuf
vwvu
∈∀=
∑∑
+−
Γ∈Γ∈
GIÁ TRỊ CỦA LUỒNG
Giá trị của luồng trong mạng G:
∑∑
−+
Γ∈Γ∈
==
)()(
),(),(|:|
tusw
tufwsff
BÀI TOÁN LUỒNG CỰC ĐẠI
Cho một mạng luồng G đỉnh phát s và đỉnh thu t
•
Tìm một luồng với giá trị cực đại từ s đến t.
•
Làm cách nào để giải quyết hiệu quả nhất?
Bài toán:
FORD-FULKERSON
•
FORD-FULKERSON-METHOD(G,s,t)
•
Thiết lập luồng f = 0
•
while còn tồn tại đường tăng luồng p
•
do tăng luồng f dọc theo p
•
f là luồng cực đại
The Ford-Fulkerson method:
•
Phương pháp Ford Fulkerson dựa trên 3 khái
niệm cơ bản sau:
–
Mạng còn dư
–
Đường tăng luồng
–
Lát cắt.
ĐỒ THỊ DƯ THỪA, ĐƯỜNG TĂNG LUỒNG, LÁT CẮT
•
Cho một mạng và một luồng , mạng còn dư bao gồm
những cạnh có thể tăng luồng.
•
G=(V,E) một mạng luồng với đỉnh phát s và đỉnh thu t
•
f: một luồng trong mạng G.
•
Một lượng luồng mạng có thể thêm vào từ u đến v
trước khi vượt quá c(u,v) là khả năng còn dư của
(u,v), được xác định bởi: c
f
(u,v)=c(u,v)-f(u,v)
•
Trong hướng ngược lại: c
f
(v, u) = c(v, u)+f(u, v).
•
Gọi G=(V,E) là một mạng luồng với đỉnh phát s
và đỉnh thu t, f là một luồng trong G.
•
Gọi G
f
là mạng còn dư của G tạo bởi luồng f, và
gọi f’ là một luồng trong G
g
. Thì, luồng có tổng f
+ f’ là một luồng trong G với giá trị
•
f+f’: luồng cùng hướng được thêm vào.
luồng ngược hướng sẽ bỏ quả.
'' ffff +=+
ĐỒ THỊ DƯ THỪA
ĐỒ THỊ DƯ THỪA, ĐƯỜNG TĂNG LUỒNG, LÁT CẮT
•
Cho mạng luồng G=(V,E) và một luồng f, một
đường tăng luồng p là đường đi từ s đến t trong
G
f
.
•
Khả năng còn dư của p : một lượng lớn nhất của
luồng mạng dọc các cạnh theo đường tăng luồng
p, c
f
(p)=min{c
f
(u,v):(u,v) trên p}.
A
200
400
300
Khả năng còn dư là 200.
S
T
B
THUẬT TOÁN FORD-FULKERSON
•
FORD-FULKERSON(G,s,t)
•
for each edge (u,v) ∈ E[G]
•
do f[u,v] 0
•
f[v,u] 0
•
while there exists a path p from s to t in the residual
network G
f
•
do c
f
(p) min{c
f
(u,v): (u,v) is in p}
•
for each edge (u,v) in p
•
do f[u,v] f[u,v]+c
f
(p)
•
←
←
←
←
S
A
B
C
D
E
F
T
9
2
2
8
4
10
4
1
9
2
10
6
3
S
A
B
C
D
E
F
T
2
2
8
4 1
3
9
10 4
2
9
0
0
0
0
0
0
0
0
0
0
0
0
0
0
4
6
10
4
X 4
X 4
X 4
S
A
B
C
D
E
F
T
9
2
2
8
4
10
4
1
9
2
10
6
3
S
A
B
C
D
E
F
T
2
2
8
4
3
9
4
4
0
0
0
0
0
0
0
0
0
0
4
0
4
2
4
10
4
4
10 4
29
X 1
X 1
X 1
X 5
1
6
S
A
B
C
D
E
F
T
9
2
2
8
4
10
4
1
9
2
10
6
3
S
A
B
C
D
E
F
T
2
2
8
4 1
3
9
4
4
0
0
0
0
0
1
1
0
1
0
5
0
4
2
5
4
10
4
5
9
4
28
X 3
X 3
X 2
X 2
1
1
S
A
B
C
D
E
F
T
4
9
2
2
8
4
10
4
1
9
2
10
6
3
S
A
B
C
D
E
F
T
4
2
2
4 1
3
2
2
9
4
4
0
0
0
0
0
3
3
2
0
0
5
2
23
3
6
7
4
5
8
2
5
X 5
X 5
X 2
X 6
X 7
S
A
B
C
D
E
F
T
4
9
2
2
8
4
10
4
1
9
2
10
6
3
S
A
B
C
D
E
F
T
4
2
2
6
4
1
6
3
2
4
6
0
0
2
0
0
5
5
2
1
0
7
2
25
5
2
7
4
5
2
9
3
X 7
X 7
X 4
X 2
X 9
S
A
B
C
D
E
F
T
4
9
2
2
8
4
10
4
1
9
2
10
6
3
S
A
B
C
D
E
F
T
4
2
2
6
4
1
6
3
2
4
6
0
0
2
0
0
7
7
4
1
2
7
2
7
7
2
9
2
3
4
9
3
2
Luồng cực đại: 11
MỘT SỐ ỨNG DỤNG CỦA LuỒNG CỰC ĐẠI
Bài toán đám cưới vùng quê:
Ở một làng quê nọ có m chàng trai và n cô gái.
Mỗi chàng trai đều vừa ý với một số những cô
gái nhất định. Hỏi có thể tổ chức các đám cưới
mà trong đó chàng trai nào cũng lấy được cô
gái mình vừa ý không?
MỘT SỐ ỨNG DỤNG CỦA LUỒNG CỰC ĐẠI
Ví dụ:
Chàng trai Cô gái vừa ý
T1 G1, G2
T2 G1, G4
T3 G4, G3
MỘT SỐ ỨNG DỤNG CỦA LUỒNG CỰC ĐẠI
Bài toán đám cưới vùng quê:
Ta xây dựng mạng G=(V,E)
-
Tập đỉnh V bao gồm đỉnh phát s=0, đỉnh thu
t=m+n+1. Các đỉnh từ I (i=1 m) đại diện cho các
chàng trai. Các đỉnh từ m+j (j = 1 n) đại diện cho các
cô gái.
-
Tập cung E bao gồm các cung
+ (0,i): i = 1 m
+ (m+j, m+n+1), j= 1 n
+ (i, m + j) nếu chàng trai I vừa ý cô gái j
- Tất cả các cung của mạng đều có khả năng thông
qua c bằng 1.
MỘT SỐ ỨNG DỤNG CỦA LUỒNG CỰC ĐẠI
Ví dụ:
0
1
2
3
4
5
6
7
8
Chàng trai Cô gái
T1 G1, G2
T2 G1, G4
T3 G4, G3
1
1
1
1
1
1
1
1
1
1
1
1
1
Khi nào bài toán có lời giải?
MỘT SỐ ỨNG DỤNG CỦA LUỒNG CỰC ĐẠI
Bài toán đám cưới vùng quê:
Ta thấy luồng trên các cung có giá trị là 0 hoặc 1
Nếu giá trị luồng cực đại f* = m thì bài toán có lời giải
Các cung (i, m+j) có giá trị luồng bằng 1 cho biết
chàng trai i nên cưới cô gái j.
MỘT SỐ ỨNG DỤNG CỦA LUỒNG CỰC ĐẠI
Ví dụ:
0
1
2
3
4
5
6
7
8
1
1
1
1
1
1
1
1
1
1
1
1
1