Tải bản đầy đủ (.ppt) (104 trang)

Tiểu luận Phân tích và thiết kế thuật toán FLOW NETWORKS

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (864.46 KB, 104 trang )

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

×