THUẬT TOÁN HOÁN CHUYỂN NGUỒN ĐÍCH TèM LUỒNG CỰC ĐẠI 1 SOURCE-SINK ALTERNATIVE ALGORITHM TO FIND THE MAXIMAL FLOW TRẦN QUỐC CHIẾN Trường Đại học Sư phạm, Đại học Đà Nẵng TểM TẮT Bỏo
Trang 1THUẬT TOÁN HOÁN CHUYỂN NGUỒN ĐÍCH TèM
LUỒNG CỰC ĐẠI (1)
SOURCE-SINK ALTERNATIVE ALGORITHM TO FIND THE MAXIMAL FLOW
TRẦN QUỐC CHIẾN
Trường Đại học Sư phạm, Đại học Đà Nẵng
TểM TẮT
Bỏo cỏo đề cập bài toỏn tỡm luồng cực đại trờn mạng Cỏc kết quả cơ bản được hệ thống và chứng minh Thuật toỏn nổi tiếng Ford-Fulkerson được trỡnh bày chi tiết kốm vớ dụ minh hoạ Kết quả chớnh của bỏo cỏo là đề xuất Thuật toỏn hoỏn chuyển nguồn đớch tỡm luồng cực đại
í tưởng thuật toỏn là tỡm đường đi tăng luồng đồng thời từ đỉnh nguồn và đỉnh đớch (thuật toỏn Ford-Fulkerson tỡm đường đi tăng luồng chỉ từ đỉnh nguồn) Kết quả tớnh toỏn qua cỏc vớ
dụ cho thấy thuật toỏn hoỏn chuyển nguồn đớch làm giảm đỏng kể khối lượng tớnh toỏn so với thuật toỏn Ford-Fulkerson
ABSTRACT
This paper deals with the maximal flow problem The basic results are systematically presented and proved The known Ford-Fulkerson is thoroughly introduced and illustrated, and the main result of this work is the source-sink alternative algorithm The idea of the algorithm is to find augmented paths simultaneously from the source and the sink vertex (the Ford-Fulkerson algorithm finds augmented paths only from the source vertex) Calculus examples show that the proposed algorithm considerably decreases the computational complexity in comparison with the Ford-Fulkerson algorithm
Key word: graph, network, flow
1 Bài toán luồng cực đại
Mạng (network) là đơn trọng đồ có hướng G=(V, E, c) thoả mãn
(i) Có duy nhất một đỉnh, gọi là nguồn
(ii) Có duy nhất một đỉnh, gọi là đích
(iii) Trọng số cij của cung (i,j) là các số không âm và gọi là khả năng thông qua của
cung
(iv) Đồ thị liên thông (yếu)
Luồng Cho mạng G với khả năng thông qua cij, (i,j)G Tập các giá trị
{fij (i,j)G}
gọi là luồng trên mạng G nếu thoả mãn
(i) 0 fij cij (i,j)G
(ii) Với mọi đỉnh k không phải nguồn hoặc đích
G
k i ik f
) , (
=
G j k kj
f
) , (
Định lý 1 Cho fij,(i,j)G, là luồng trên mạng G với nguồn a và đích z Khi đó
G
i a ai f
) , (
G a i ia
f
) , (
=
G z i iz
f
) , (
G i z zi
f
) , (
Chứng minh
Trang 2Gọi V là tập các đỉnh Với các đỉnh i,j không kề nhau ta gán fij = 0 Ta có
V
j i V
ji V
j i V
f
V
ji
} ,
\{
0
z a V
ai ia
V
zi iz
V
ji
f
0
ai ia
V
zi
f
G
i a ai f
) , (
G a i ia
f
) , (
=
G z i iz
f
) , (
G i z zi
f
) , (
đpcm
Giá trị của luồng Cho luồng f trên mạng G Giá trị của luồng f được định nghĩa là đại
lượng
G
i a ai f
) , (
G a i ia
f
) , (
=
G z i iz
f
) , (
G i z zi
f
) , (
Phát biểu bài toán luồng cực đại Trong thực tế ta thường gặp bài toán gọi là bài toán tìm luồng cực đại như sau: Cho mạng G với nguồn a, đích z và khả năng thông qua cij, (i,j)G Trong số các luồng trên mạng G tìm luồng có giá trị lớn nhất
Bài toán luồng cực đại có thể biểu diễn như bài toán quy hoạch tuyến tính
G
i a ai f
) , (
G a i ia
f
) , (
với điều kiện
0 fij cij (i,j)G
G
k i ik f
) , (
=
G j k kj
f
) , (
k V \ {a; z}
Vì giá trị luồng v(f)
G
i a ai c
) , (
và tồn tại luồng fij = 0 (i,j)G, nên theo lý thuyết quy
hoạch tuyến tính tồn tại luồng cực đại
Định lý 2 Với mỗi mạng G=(V, E, c) luôn luôn tồn tại luồng cực đại
Trang 3ý tưởng xây dựng luồng cực đại như sau: xuất phát từ luồng nào đó, ta tìm đường đi (không định hướng) từ a đến z cho phép hiệu chỉnh giá trị luồng trên đường đi đó sao cho luồng mới có giá trị lớn hơn Nếu không tìm được đường đi như vậy thì ta có luồng cực đại
Giả sử
P = (a, u, , i, j, , v, z)
là đường đi không có hướng từ a đến z
Nếu cạnh (i,j) là cung trên P thì cung đó cùng hướng với P Ngược lại nếu (j,i) là cung thì cung đó ngược hướng với P
Tập các cung cùng hướng với P ký hiệu là P+
Tập các cung ngược hướng với P ký hiệu là P
Cơ sở của thuật giải là định lý sau
Định lý 3 Cho f là luồng trên G Giả sử
P = (a, u, , i, j, , v, z)
là đường đi không định hướng từ a đến z thoả
(i) Với mỗi cung (i,j) cùng hướng với P
fij < cij (ii) Với mỗi cung (i,j) ngược hướng với P
0 < fij
Đặt
:= min{ x x M} > 0, trong đó M là tập các giá trị cij fij, (i,j)P+ và fij, (i,j)P
Ta xây dựng luồng f’ như sau
fij (i,j)P f’ij:= fij + (i,j)P+
fij (i,j)P
Khi đó luồng f’ có giá trị lớn hơn giá trị của luồng f một lượng là , tức là
v(f’) = v(f) +
Chứng minh
Theo cách xây dựng thì f’ thoả mãn các điều kiện của luồng Có thể xảy ra một trong hai trường hợp sau
(i) Tồn tại cung (a,u)P+ có
f’au = fau + Khi đó giá trị
v(f') =
G i a ai
f
) , (
'
G a i ia
f
) , (
G i a ai
f
) , (
G a i ia
f
) , (
= v(f) +
(ii) Tồn tại cung (u,a)P có
f’ua = fua Khi đó giá trị
Trang 4v(f’) =
G i a ai
f
) , (
'
G a i ia
f
) , (
' =
G i a ai
f
) , (
G a i ia
f
) , (
= v(f) +
đpcm
Thuật toán Ford-Fulkerson tìm luồng cực đại:
Các đỉnh trong G được sắp xếp theo thứ tự nào đó
+ Đầu ra Luồng cực đại F = (fij), (i,j)G
+ Các bước
1 Khởi tạo
Luồng xuất phát: fij:= 0 (i,j)G
Đặt nhãn cho đỉnh nguồn
a(, ) Tạo lập tập S gồm các đỉnh đã có nhãn nhưng chưa được dùng để sinh nhãn, S’
là tập đỉnh được gán nhãn nhờ các đỉnh của tập S
S: = { a }, S’:=
2 Sinh nhãn
2.1 Chọn đỉnh sinh nhãn
Trường hợp S : Chọn đỉnh u S nhỏ nhất (theo thứ tự) Loại u khỏi S, S:= S
\ { u } Ký hiệu nhãn của u là (p, ) và A là tập các đỉnh chưa có nhãn và kề đỉnh sinh nhãn u
Qua bước 2.2
Trường hợp S = và S’ : Gán S:= S’ và S’:= Quay lại bước 2.1
Trường hợp S = và S’ = , thì kết thúc, luồng F là cực đại
2.2 Gán nhãn cho đỉnh chưa có nhãn và kề đỉnh sinh nhãn
Trường hợp A = : Quay lại bước 2.1
Trường hợp A : Chọn t A nhỏ nhất (theo thứ tự) Loại t khỏi A, A:= A \ { t } Gán nhãn cho t như sau:
Nếu (u,t)E và fu,t < cu,t, đặt nhãn đỉnh t là (u, min{, cu,t fu,t})
Nếu (t, u)E và ft,u > 0, đặt nhãn đỉnh t là (u, min{, ft,u})
Nếu t không được gán nhãn thì quay lại bước 2.2
Nếu t được gán nhãn và t = z thì sang bước hiệu chỉnh tăng luồng 3
Nếu t được gán nhãn và t z thì bổ sung t vào S’, S’:= S’ { t }, và quay lại bước 2.2
3 Hiệu chỉnh tăng luồng
Giả sử z có nhãn (q, ) Ta hiệu chỉnh luồng f như sau
3.1 Khởi tạo
j:= z, i:= q 3.2 Hiệu chỉnh
Nếu cung (i, j) G, thì hiệu chỉnh fij = fij +
Nếu cung (j, i) G, thì hiệu chỉnh fji = fji
3.3 Tịnh tiến
Nếu i = a thì xoá tất cả nhãn của các đỉnh trên mạng, trừ đỉnh nguồn a, và quay lại bước 2
Trang 5Nếu i a, thì đặt j:= i và i:= p, với p là thành phần thứ nhất của nhãn đỉnh j Sau
đó quay lại bước 3.2
Định lý 4 Nếu các giá trị thông qua cij là số nguyên, thì sau hữu hạn bước quá trình giải kết thúc
Chứng minh
Theo định lý 1, qua mỗi bước hiệu chỉnh luồng, giá trị luồng tăng lên ít nhất 1 đơn vị (do cij nguyên, kéo theo nguyên dương) Mặt khác giá trị luồng bị chặn trên bởi tổng các khả năng thông qua của các cung đi khỏi đỉnh nguồn Vì vậy qua một số hữu bước quá trình giải phải kết thúc
Hệ quả Nếu giá trị thông qua cij là số hữu tỉ với mọi (i,j) E, thì sau hữu hạn bước quá trình giải kết thúc
Chứng minh
Quy đồng mẫu số các giá trị thông qua cij Giả sử mẫu số chung là M Theo định
lý 1, qua mỗi bước hiệu chỉnh luồng, giá trị luồng tăng lên ít nhất là 1/M Mặt khác giá trị luồng bị chặn trên bởi tổng các khả năng thông qua của các cung đi khỏi đỉnh nguồn Vì vậy qua một số hữu bước quá trình giải phải kết thúc
+ Ghi chú Thuật toán sẽ được chứng minh sau
+ Ví dụ 1 Cho mạng G sau
n
trong đó số đỉnh là (2.n+1)2+1 và các cung cho như hình vẽ với trọng số đều là 1
Ap dụng thuật toán Ford-Fulkerson tìm luồng cực đại của G, ta phải duyệt qua (2.n+1)2
đỉnh
và nhận được luồng cực đại là luồng trên đường đi
(a12 nz)
với giá trị luồng bằng 1
TÀI LIỆU THAM KHẢO
z
a
Trang 6[1] Richard Johnsonbauch, Discrete Mathematics, Macmillan Publishing Company, New
York 1992
[2] Nguyễn Tô Thành, Nguyễn Đức Nghĩa, Giáo trình Toán rời rạc, Trường Đại học
Bách khoa Hà Nội, Hà Nội, 1994
[3] Nguyễn Xuân Quỳnh, Cơ sở Toán rời rạc và ứng dụng NXB Giáo dục, Hà Nội, 1995
[4] Oystein Ore, Theory of Graphs, American Mathematical Society, 1967
[5] Christofides Nicos, Graph Theory, Academic Press, New York-London-San
Francisco, 1975
[6] R.G Busacker & T.L Saaty, Finite Graph and Networks, Mc Graw-Hill Book
Company, New York - St Louis - San Francisco - Toronto - London - Sydney, 1974 [7] Kenneth H Rosen, Discrete Mathematics and Its Applications, McGraw Hill Book
Company, New York, 1994
[8] Nguyễn Cam, Chu Đức Khánh, Lý thuyết đồ thị, NXB TP.HCM, 1999
[9] V.K Balakrishnan, Theory and Problems of Graph Theory, McGraw Hill, 1997
[10] Trần Quốc Chiến, Giáo trình lý thuyết đồ thị, Đại học Đà Nẵng, 2002
[11] Thomas H.Cormen, Charles E.Leiserson, Ronald L.Rivest, Introduction To
Algorithms, the MIT Press 1999
[12] A.V.Goldberg, R.E.Tarjan, Expected performance of Dijkstra’s shortest path
algorithm, Technical Report 96-070, NEC Research Institute Inc, 1996
[13] Trần Quốc Chiến, Nguyễn Thanh Tuấn, Giải thuật tìm đường đi ngắn nhất giữa hai
tập đỉnh, Tạp chí Khoa học và Công nghệ, Đại học Đà Nẵng, 3(7)/ 2004