You are on page 1of 29

LUỒNG TRONG MẠNG

Bùi Tiến Lên

Đại học Khoa học Tự nhiên

09/12/2013

Fall 2013 Graph Theory 1 / 29


Giới Thiệu

I Bài toán luồng cực đại trên mạng là một trong những bài
toán tối ưu trên đồ thị và có những ứng dụng rất rộng rãi
trong lý thuyết và thực tế
I Bài toán được đưa ra vào đầu những năm 1950 và gắn liền
với tên tuổi của hai nhà toán học Ford và Fulkerson

Fall 2013 Graph Theory 2 / 29


Các định nghĩa về mạng

Định nghĩa 1
Mạng (flow network) là một đồ thị có hướng N = (V , E , C) với
V là tập đỉnh thường được gọi là nút (node), E là tập cạnh
thường được gọi là cung (arc) và C là hàm khả năng trong đó
I Có duy nhất một nút s không có cung đi vào, được gọi là nút
phát (source)
I Có duy nhất một nút t không có cung đi ra, được gọi là nút
thu (sink)
I Mỗi cung e = (u, v) ∈ E được gán một số nguyên không âm
c(u, v) được gọi là khả năng thông qua (capacity ) của
cung

Fall 2013 Graph Theory 3 / 29


Các định nghĩa về mạng (cont.)
I Tập hợp W − (v) là tập các cung đi vào nút v
I Tập hợp W + (v) là tập các cung đi ra nút v

b 5 d
7
5 3
s t
3 7
2
a 5 c

Hình 1: Mạng gồm 6 nút, 8 cung, đỉnh phát s và đỉnh thu t

Fall 2013 Graph Theory 4 / 29


Các định nghĩa về luồng

Định nghĩa 2
Cho mạng N = (V , E , C, s, t), Luồng (flow ) f trong mạng là một
ánh xạ
f : V2 → R+
(1)
(u, v) 7→ f (u, v)

b 1,5 d
2,7
3,5 2,3
s t
2,3 1,7
3,2
a 1,5 c

Hình 2: Một luồng f trên mạng, số thứ nhất trên cung là giá trị luồng,
số thứ hai trên cung là khả năng thông qua

Fall 2013 Graph Theory 5 / 29


Các định nghĩa về luồng (cont.)
thỏa mãn được hai điều kiện sau
I Điều kiện 1 (capacity constraint): luồng trên mỗi cung
(u, v) không vượt quá khả năng thông qua của cung

0 ≤ f (u, v) ≤ c(u, v) (2)

I Điều kiện 2 (flow conversion): điều kiện cân bằng luồng trên
mỗi đỉnh v (trừ đỉnh thu và đỉnh phát) là tổng luồng trên các
cung đi vào bằng tổng luồng trên các cung đi ra

f (e) = f (e) (3)


X X

e∈W + (x) e∈W − (x)

Fall 2013 Graph Theory 6 / 29


Các định nghĩa về luồng (cont.)
Định nghĩa 3
Cho một mạng N = (V , E , C, s, t) và một luồng f trên mạng. Giá
trị của một luồng trên mạng được định nghĩa là bằng tổng giá trị
luồng các cung đi ra từ đỉnh phát hoặc tổng giá trị luồng các cung
đi vào đỉnh thu

f (N) = f (e) = f (e) (4)


X X

e∈W + (s) e∈W − (t)

Fall 2013 Graph Theory 7 / 29


Các định nghĩa về luồng (cont.)
b 0,5 d b 1,5 d
0,7 2,7
0,5 0,3 3,5 2,3
s t s t
0,3 0,7 2,3 1,7
0,2 3,2
a 0,5 c a 1,5 c

(a) Luồng có giá trị 0 (b) Luồng có giá trị 5


Hình 3: Hai luồng khác nhau trên cùng một mạng

Fall 2013 Graph Theory 8 / 29


Bài toán luồng cực đại

Bài toán 1
Cho một mạng N = (V , E , C, s, t), gọi F là tập hợp các luồng
trên mạng N. Bài toán tìm luồng cực đại (max flow ) được phát
biểu qua công thức sau

f = arg max (f (N) , f ∈ F ) (5)


f

Fall 2013 Graph Theory 9 / 29


Các ứng dụng của bài toán luồng cực đại
Bài toán luồng cực đại có nhiều ứng dụng thực tế. Có thể áp dụng
nó để giải quyết
I Bài toán ghép cặp
I Bài toán chuyển tải điện, nước hay dầu

Fall 2013 Graph Theory 10 / 29


Các định nghĩa về lát cắt

Định nghĩa 4
Cho một mạng N = (V , E , C, s, t)
I Một lát cắt (cut) (S, T ) là một phân hoạch tập đỉnh V sao
cho s ∈ S và t ∈ T
I Một tập cắt (cut-set) là một tập các cung
{(u, v) ∈ E |u ∈ S, v ∈ T }
I Khả năng thông qua của lát cắt (S, T ) được định nghĩa là

c (S, T ) = c (u, v) (6)


X

u∈S,v∈T

I Lát cắt nhỏ nhất (min cut) là lát cắt có khả năng thông
qua nhỏ nhất

Fall 2013 Graph Theory 11 / 29


Các định nghĩa về lát cắt (cont.)
b 5 d
7
5 3
s t
3 7
2
a 5 c

Hình 4: Mạng có lát cắt (S={s,a},T={b,c,d,t}). Khả năng thông qua


của lát cắt là 17

b 5 d
7
5 3
s t
3 7
2
a 5 c

Hình 5: Mạng có lát cắt (S={s,a,c},T={b,d,t}). Khả năng thông qua


của lát cắt là 14

Fall 2013 Graph Theory 12 / 29


Bài toán tìm lát cắt nhỏ nhất
Bài toán 2
Cho một mạng N = (V , E , C, s, t). Hãy tìm lát cắt nhỏ nhất

Sinh viên hãy tự nghiên cứu

Fall 2013 Graph Theory 13 / 29


Mối quan hệ giữa luồng cực đại - lát cắt nhỏ nhất
Cho một mạng N = (V , E , C, s, t). Ta có những nhận xét sau
I Giá trị của một luồng f trong mạng bất kỳ luôn nhỏ hơn giá
trị khả năng thông qua của một lát cắt (S, T ) bất kỳ trong
mạng
f (N) ≤ c(S, T ) (7)
I Giá trị luồng cực đại trong mạng không vượt quá khả năng
thông qua của lát cắt nhỏ nhất trong mạng

Fall 2013 Graph Theory 14 / 29


Mối quan hệ giữa luồng cực đại - lát cắt nhỏ nhất
(cont.)
Định lý 1
Giá trị luồng cực đại trong mạng bằng giá trị khả năng thông qua
của lát cắt nhỏ nhất
Chứng minh
Sinh viên tự chứng minh

Fall 2013 Graph Theory 15 / 29


Đồ thị tăng luồng

Định nghĩa 5
Cho mạng N = (V , E , C, s, t) và f là luồng trên mạng. Đồ thị
tăng luồng (residual network) là đồ thị có hướng có trọng số
Nf = (V , Ef ) với các cung được xây dựng như sau:
Xét một cung (u, v) ∈ E
I Nếu f (u, v) = 0 thì (u, v) ∈ Ef với trọng số c(u, v)
I Nếu f (u, v) = c(u, v) thì (v, u) ∈ Ef với trọng số c(u, v)
I Nếu 0 < f (u, v) < c(u, v) thì
I (u, v) ∈ Ef với trọng số c(u, v) − f (u, v)
I (v, u) ∈ Ef với trọng số f (u, v)
I Các cung thuộc Nf cũng thuộc N được gọi là cung thuận
I Các cung thuộc Nf không thuộc N được gọi là cung nghịch

Fall 2013 Graph Theory 16 / 29


Đồ thị tăng luồng (cont.)
b 3,5 d
4,6
3,4 2,3
4,6
s t
5,6 2,3 3,4
5,5
a 0,4 c

Hình 6: Luồng f

b 2 d
3 2
2 4 1
2 3 1
s 4 t
1 1
1 2 5
3
5 a c
4

Hình 7: Đồ thị tăng luồng Nf , các cung thuận vẽ liền, các cung nghịch
vẽ gạch đứt

Fall 2013 Graph Theory 17 / 29


Đường tăng luồng
Gọi P = (s = v0 , v1 , ..., vk = t) là một đường đi từ s đến t trên đồ
thị tăng luồng Nf được gọi là đường tăng luồng (augmenting
path) cho luồng f . Gọi k là trọng số của cung nhỏ nhất. Cập nhật
luồng f cho các cung trên đường đi P. Luồng cập nhật gọi là f new
I f new (u, v) = f (u, v) + k nếu (u, v) ∈ P là cung thuận
I f new (u, v) = f (u, v) − k nếu (u, v) ∈ P là cung nghịch
Sau khi cập nhật ta có

f new (N) = f (N) + k

Nghĩa là luồng mới đã được tăng thêm k đơn vị so với luồng cũ

Fall 2013 Graph Theory 18 / 29


Đường tăng luồng (cont.)
b 2 d
3 2
2 4 1
2 3 1
s 4 t
1 1
1 2 5
3
5 a c
4

Hình 8: Đường đi từ đỉnh s đến t và có giá trị k = 2 trên Nf

b 3,5 d
4+2,6
3,4 2-2,3
4+2,6
s t
5,6 2-2,3 3,4
5,5
a 0+2,4 c

Hình 9: Cập nhật các cung của luồng f nằm trên đường đi

Fall 2013 Graph Theory 19 / 29


Mối quan hệ luồng cực đại - lát cắt - đường tăng
luồng
Các mệnh đề dưới đây là tương đương:
Định lý 2
1. f là luồng cực đại
2. Không tìm được đường tăng luồng P cho f
3. Tồn tại một lát cắt (S, T ) sao cho c(S, T ) = f (N)

Fall 2013 Graph Theory 20 / 29


Thuật toán Ford-Fulkerson tìm luồng cực đại
Cho mạng N = (V , E , C, s, t), thuật toán gồm hai bước
I Bước khởi tạo: Luồng f bắt đầu với giá trị trên các cung là 0
I Bước lặp:
I Xây dựng đồ thị tăng luồng Nf
I Tìm đường tăng luồng P trên đồ thị tăng luồng Nf
I Dùng đường tăng luồng P để cập nhật giá trị luồng f
I Bước lặp kết thúc khi không tìm được đường tăng luồng và f
cuối cùng chính là luồng cực đại

Fall 2013 Graph Theory 21 / 29


Minh họa thuật toán Ford-Fulkerson
Cho mạng dưới, hãy tìm luồng cực đại

b 4 d
10
2 8
10
s t
10 6
10
a 9 c

Hình 10: Mạng 6 nút 9 cung

Fall 2013 Graph Theory 22 / 29


Minh họa thuật toán Ford-Fulkerson (cont.)
b 0,4 d
0,10
0,2 0,8
0,10
s t
0,10 0,6
0,10
a 0,9 c

Hình 11: Luồng khởi tạo f

b 4 d
10
2 8
10
s t
10 6
10
a 9 c

Hình 12: Đồ thị tăng luồng và đường đi tăng luồng

Fall 2013 Graph Theory 23 / 29


Minh họa thuật toán Ford-Fulkerson (cont.)
b 0,4 d
0,10
0,2 0,8
0,10
s t
9,10 0,6
9,10
a 9,9 c

Hình 13: Luồng cập nhật f

b 4 d
10
2 8
10
s t
9
1 6
9
a c 1
9

Hình 14: Đồ thị tăng luồng và đường đi tăng luồng

Fall 2013 Graph Theory 24 / 29


Minh họa thuật toán Ford-Fulkerson (cont.)
b 0,4 d
6,10
0,2 6,8
6,10
s t
9,10 6,6
9,10
a 9,9 c

Hình 15: Luồng cập nhật f

b 4 d 4
4 6 2
2 6
s 6 t
9
1 9 6
a c 1
9

Hình 16: Đồ thị tăng luồng và đường đi tăng luồng

Fall 2013 Graph Theory 25 / 29


Minh họa thuật toán Ford-Fulkerson (cont.)
b 4,4 d
10,10
0,2 6,8
10,10
s t
9,10 6,6
9,10
a 9,9 c

Hình 17: Luồng cập nhật f

b 4 d
10
2 2 6 10
s t
9
1 9 6
a c 1
9

Hình 18: Đồ thị tăng luồng không có đường tăng luồng

Fall 2013 Graph Theory 26 / 29


Minh họa thuật toán Ford-Fulkerson (cont.)
Vậy ta có luồng cực đại f với giá trị cực đại là 19

Fall 2013 Graph Theory 27 / 29


Cài đặt thuật toán Ford-Fulkerson
Sinh viên tự tìm hiểu

Fall 2013 Graph Theory 28 / 29


Tài liệu tham khảo

Fall 2013 Graph Theory 29 / 29

You might also like