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

Tiểu luận môn học THIẾT KẾ VÀ PHÂN TÍCH THUẬT TOÁN LUỒNG CỰC ĐẠI

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 (201.45 KB, 28 trang )

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

×