MAXIMUM FLOW
•
Flow networks Minh Hòa
•
The Fork-Fulkerson method Hoài Nhân
•
Maximum biparite matching Phú Lộc
•
Push-relabel algorithms Quang Minh
•
The relabel-to-front algorithms Thế Quân
2
FLOW NETWORKS
(MẠNG VẬN TẢI)
Người thực hiện: Nguyễn Thị Minh Hòa
3
Nội dung
•
Mạng vận tải.
•
Luồng.
•
Mạng có nhiều đỉnh phát và nhiều đỉnh thu.
•
Làm việc với nhiều luồng.
Mạng vận tải
4
Mạng vận tải
Định nghĩa
Là đơn đồ thị có hướng G = (V, E)
Có duy nhất đỉnh phát s, không liên thuộc
cung vào.
Có duy nhất đỉnh thu t, không liên thuộc
cung ra.
Trọng số c(e) ≥ 0 của cung e = (i, j) ∈ E
được gọi là
khả năng thông qua của cung.
Nếu (i, j) E thì c(e) = 0.
∀v∈V, tồn tại đường đi s → v → t. Vậy đồ
thị liên thông và |E| ≥ |V| - 1.
∉
5
•
V = {s, v1, v2, v3, v4,
t}
•
E = {(s,v1), (s,v2),
(v1,v2), (v2,v1),
(v1,v3), (v3,v2),
(v2,v4), (v4,v3), (v3,t),
(v4,t)}
•
Vài ví dụ về trọng số:
c(s,v1)=16;
c(v1,v3)=12;
c(v3,v1)=0.
v4
t
v3
v1
4
14
v2
s
7
20
9
4
12
10
16
13
Đỉnh thu
Đỉnh phát
Mạng vận tải
Ví dụ
6
Cho N = (G = (V, E), c, s, t) là một mạng
vận tải. Một luồng trong N là ánh xạ f: V x
V -> R thỏa mãn các điều kiện sau:
•
Tính ràng buộc về khả năng thông qua
của luồng :
∀u, v ∈ V: ƒ(u, v) ≤ c(u, v).
•
Tính đối xứng:
∀u, v ∈ V: ƒ(u, v) = - ƒ(v, u)
•
Tính bảo toàn:
∀u ∈ V\{s, t}:
Luồng
Định nghĩa
( , ) 0
v V
f u v
∈
=
∑
7
•
Khi (u, v) E và (v, u) E thì ƒ(u, v) =
ƒ(v, u) = 0.
•
Giá trị ƒ(u, v) (có thể nhận giá trị dương,
giá trị 0 hoặc giá trị âm) được gọi là luồng
từ đỉnh u đến đỉnh v.
•
Do đồ thị không có khuyên nên:
•
Giá trị của luồng ƒ được xác định như sau:
∉
Luồng
Định nghĩa
∉
| | ( , )
v V
f f s v
∈
=
∑
, ( , ) 0v V f v v∀ ∈ =
8
•
Cung (u,v) được
gán nhãn như sau:
f(u,v)/c(u,v)
•
|f|=f(s,v1) + f(s,v2)
= 11 + 8 = 19
v2
v4
t
v3
v1
s
8
/
1
3
11/14
4
/
4
7/7
1
5
/
2
0
4
/
9
1/4
10
12/12
1
1
/
1
6
Luồng
Ví dụ
9
•
Một mạng vận tải có thể mô phỏng bài
toán vận chuyển bóng của một công ty từ
nhà máy (s) đến kho (t) như trong hình
sau:
v4
t
v3
v1
4
14
v2
s
7
20
9
3
12
8
16
13
Ví dụ sự khác biệt giữa vận chuyển và luồng
Luồng
10
•
Họ không kiểm soát những lộ trình
giữa các thành phố (các đỉnh) và các
khả năng thông qua của các lộ trình.
•
Mục đích: xác định số lượng thùng
lớn nhất p có thể được vận chuyển
mỗi ngày.
•
Họ chỉ quan tâm đến số lượng thùng
p
rời nhà máy và số lượng thùng
p
đến kho mỗi ngày.
Luồng
Ví dụ sự khác biệt giữa vận chuyển và luồng
11
•
Bề ngoài, dường như thích hợp để mô
phỏng “luồng” với việc vận chuyển trong
mạng này, bởi vì số lượng thùng được vận
chuyển mỗi ngày từ thành phố này đến
thành phố khác là khó tránh khỏi sự liên
quan đến khả năng thông qua của luồng.
•
Sự bảo toàn luồng cũng phải được tuân
theo.
Luồng
Ví dụ sự khác biệt giữa vận chuyển và luồng
12
•
Có một sự khác biệt giữa sự vận
chuyển và luồng.
•
Giả sử công ty vận chuyển 8 thùng
mỗi ngày từ v1 đến v2 và 3 thùng
mỗi ngày từ v2 đến v1.
•
Dường như có thể biểu diễn sự vận
chuyển bằng luồng nhưng không thể.
Luồng
Ví dụ sự khác biệt giữa vận chuyển và luồng
13
•
Do tính đối xứng, nên không thể xem
ƒ(v1, v2) = 8 và ƒ(v2, v1) = 3. Nên biểu
diễn là: ƒ(v1, v2) = 5 và ƒ(v2, v1) = -5.
•
Nếu bóng được vận chuyển theo cả hai
hướng giữa hai thành phố thì có thể hủy
bỏ thành một trường hợp, trong đó bóng
được vận chuyển chỉ theo hướng có giá trị
dương.
•
Phương pháp hủy bỏ sẽ phát sinh trong
toàn bộ thuật toán.
Luồng
Ví dụ sự khác biệt giữa vận chuyển và luồng
14
•
Giả sử cung (u, v) tương ứng với một
luồng có giá trị ƒ(u, v).
•
Trong quá trình khai triển thuật toán,
có thể tăng luồng trên cung (v, u)
bằng cách thêm giá trị d.
•
Thao tác đó làm giảm ƒ(u, v) một
lượng d.
Luồng
Ví dụ sự khác biệt giữa vận chuyển và luồng
15
•
Một bài toán luồng cực đại có thể có nhiều
hơn một đỉnh phát và đỉnh thu.
•
Có thể chuyển đổi bài toán luồng cực đại
với nhiều đỉnh phát và đỉnh thu về bài
toán luồng cực đại thông thường.
•
Ví dụ: Một công ty có thể có một tập m
nhà máy bao gồm {s1, s2,…, sm} và một
tập n kho bao gồm {t1, t2,…, tn}.
Mạng có nhiều đỉnh phát và nhiều
đỉnh thu
Phát biểu
16
•
Một mạng vận tải
với 5 đỉnh phát
S={s1,s2,s3,s4,s5}
và 3 đỉnh thu
T={t1,t2,t3}
s1
s5
s4
s3
s2
t3
t2
t1
6
2
0
1
8
1
2
5
8
2
1
0
1
5
1
3
1
4
7
1
1
3
Ví dụ
Mạng có nhiều đỉnh phát và nhiều
đỉnh thu
17
•
Thêm vào 1 đỉnh
phát giả s và 1 cung
với khả năng thông
qua vô hạn từ s đến
mỗi đỉnh phát si,
•
Thêm 1 đỉnh thu giả
t và 1 cung với khả
năng thông qua vô
hạn từ mỗi đỉnh thu
ti,
1, ,5i∀ =
1, ,3i∀ =
s
∞
∞
∞
∞
∞
t
∞
∞
s1
s5
s4
s3
s2
t3
t2
t1
6
2
0
1
8
1
2
5
8
2
1
0
1
5
1
3
1
4
7
1
1
3
∞
Ví dụ
Mạng có nhiều đỉnh phát và nhiều
đỉnh thu
18
s1
s5
s4
s3
s2
t3
t2
t1
6
2
0
1
8
1
2
5
8
2
1
0
1
5
1
3
1
4
7
1
1
3
s
∞
∞
∞
∞
∞
t
∞
∞
s1
s5
s4
s3
s2
t3
t2
t1
6
2
0
1
8
1
2
5
8
2
1
0
1
5
1
3
1
4
7
1
1
3
∞
a)
b)
Chuyển đổi bài toán luồng cực đại với nhiều đỉnh phát và đỉnh thu về bài toán
với một đỉnh phát và một đỉnh thu
Ví dụ
Mạng có nhiều đỉnh phát và nhiều
đỉnh thu
19
Làm việc với nhiều luồng
Các luồng mạng
•
Tổng giá trị dương của luồng đi vào đỉnh v:
•
Tổng giá trị dương của luồng ra khỏi đỉnh v:
•
Tổng giá trị của luồng tại đỉnh v:
•
Do tính bảo toàn luồng
nên = 0
w
(w, ) 0
(w, )
V
f v
f v
∈
>
∑
w
( , ) (w, )
v
u V V
f f v u f v
∈ ∈
= −
∑ ∑
| |
v
f
w
\{ , }: ( , ) (w, )
u V V
v V s t f v u f v
∈ ∈
∀ ∈ =
∑ ∑
( , ) 0
( , )
u V
f v u
f v u
∈
>
∑
20
•
Cho X, Y V, ta
có:
•
Ví dụ:
X={s, v1, v2},
Y={v3, v4, t}
f(X,Y) = f(v1,v3) +
f(v2,v4) - f(v3,v2)
= 12 + 11 – 4 =19
⊂
v2
v4
t
v3
v1
s
8
/
1
3
11/14
4
/
4
7/7
1
5
/
2
0
4
/
9
1/4
10
12/12
1
1
/
1
6
X Y
( , ) ( , )
u X v Y
f X Y f u v
∈ ∈
=
∑∑
Ký hiệu
Làm việc với nhiều luồng
21
•
Nếu v V, ta có:
f(X, v) = f(X, {v})
Ví dụ: f(X,v3) = 12 – 4 = 8
•
Tính bảo toàn luồng được viết lại:
ƒ(u, V) = 0, ∀ u ∈V\{s, t}.
∈
Ký hiệu
Làm việc với nhiều luồng
22
•
Cho N là một mạng vận tải và ƒ là một
luồng trong N. Khi đó có các tính chất
sau:
∀X ⊆ V, ta có: ƒ(X, X) = 0.
∀X, Y ⊆ V, ta có: ƒ(X, Y) = - ƒ(Y, X).
∀X, Y, Z ⊆ V với X Y = Ø ta có các ∩
tổng: ƒ(X∪Y, Z) = ƒ(X, Z) + ƒ(Y, Z)
và ƒ(Z, X∪Y) = ƒ(Z, X) + ƒ(Z, Y).
Làm việc với nhiều luồng
Bổ đề
23
•
Xét ví dụ có sử dụng ký hiệu tổng ẩn,
có thể chứng minh rằng nếu N là một
mạng vận tải và f là một luồng thì:
|ƒ| = ƒ(V, t).
•
Theo định nghĩa, đỉnh phát có tổng
giá trị thực của luồng lớn hơn 0.
•
Ngược lại, đỉnh thu có tổng giá trị
thực của luồng bé hơn 0.
Làm việc với nhiều luồng
Hệ quả
FORK- FULKERSON METHOD
(PHƯƠNG PHÁP FORK -
FULKERSON)
Phan Văn Hoài Nhân
•
Bài toán luồng cực đại trên mạng
•
Mạng thặng dư
•
Đường tăng luồng
•
Lát cắt
•
Thuật toán Fork-Fulkerson.
Nội dung
Phương pháp Fork-Fulkerson