1. Trang chủ
  2. » Luận Văn - Báo Cáo

Báo cáo nghiên cứu khoa học: "THUẬT TOÁN HOÁN CHUYỂN NGUỒN ĐÍCH TÌM LUỒNG CỰC ĐẠI (1)" doc

6 338 1
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 6
Dung lượng 327,04 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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 1

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 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 2

Gọ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 4

v(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 5

Nế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

(a12 nz)

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

Ngày đăng: 22/07/2014, 13:22

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm