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

Tiểu luận Phân tích và thiết kế thuật toán LUỒNG CỰC ĐẠI

61 603 4

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

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 61
Dung lượng 1,07 MB

Nội dung

Trong bài toán luồng cực đại, cho một mạng vận tải G với đỉnh phát s và đỉnhthu t.. Tínhchất này tổng giá trị thực của luồng tại một đinh phải bằng 0 thường được xemnhư là “luồng vào bằn

Trang 1

LUỒNG CỰC ĐẠI

26.1 Mạng vận tải

Dựa vào lý thuyết đồ thị, chúng tôi đưa ra một định nghĩa được giả định làđúng về mạng vận tải gồm những tính chất của nó và định nghĩa bài toán luồng cựcđại một cách chính xác Mặt khác, chúng tôi cũng giới thiệu về một vài kí hiệu cóích

Định nghĩa về mạng vận tải

Một mạng vận tải G = (V, E) là một đồ thị có hướng, trong đó mỗi cung (u,v)  E có một khả năng thông qua c(u, v)  0 Nếu (u, v)  E, chúng ta cho c(u, v)

= 0 Chúng ta cần phân biệt 2 đỉnh trong một mạng vận tải: đỉnh phát s và đỉnh thu

t Để thuận tiện chúng ta giả sử rằng mỗi đỉnh đều nằm trên đường từ đỉnh phát đếnđỉnh thu Nghĩa là, với mỗi đỉnh vV, đều tồn tại đường đi s  v  t Vì vậy đồ thị

là liên thông và |E|  |V| - 1

Cho đồ thị G = (V, E) với các đỉnh V và các cung E là một mạng vận tải vớikhả năng thông qua c Cho s là đỉnh phát (bậc trong bằng 0) và t là đỉnh thu (bậc

ngoài bằng 0) của mạng Cho f(u, v) là luồng từ đỉnh u đến đỉnh v Một luồng trong

G là một ánh xạ : VxV  R thỏa mãn ba tính chất sau:

Tính ràng buộc về khả năng thông qua của luồng (Capacity constraint):

luồng từ đỉnh này đến đỉnh khác không vượt quá khả năng thông qua đã được chocủa luồng đó

u, v  V: (u, v)  c(u, v)

Tính đối xứng (Skew symmetry): luồng từ đỉnh u đến đỉnh v phải bằng đối

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 Giá trị của luồng  được xác định như sau:

Trang 2

Nhóm 4

Đây là tổng giá trị luồng đi từ đỉnh phát (kí hiệu trị tuyệt đối | | biểu thị giá trị củaluồng chứ không phải là biểu thị giá trị tuyệt đối hay số các yếu tô trong một tậphợp) Trong bài toán luồng cực đại, cho một mạng vận tải G với đỉnh phát s và đỉnhthu t Hãy tìm một luồng có giá trị cực đại từ đỉnh s đến đỉnh t

Sau đây là một ví dụ về mạng vận tải và mạng vận tải với luồng cực đại củanó

Hình 1 Mạng vận tải

Hình 1 (a) Mạng vận tải G = (V, E) cho bài toán vận chuyển của công ty Lucky Puck Nhà máy Vancouver là đỉnh phát s và kho Winnipeg là đỉnh thu t Bóng khúc

côn cầu (Pucks) được vận chuyển qua các thành phố trung gian, nhưng chỉ c(u, v)

thùng đựng bóng (crates) mỗi ngày có thể đi từ thành phố u đến thành phố v Mỗi cung được gán một nhãn gọi là khả năng thông qua của cung đó.

Hình 1 (b) Một luồng trong G có giá trị || = 19 Chỉ những luồng có giá trị thực mới được biểu diễn Nếu (u, v) > 0 thì cung (u, v) được gán nhãn như sau (u, v) / c(u, v) (Dấu gạch chéo / chỉ đơn thuần được sử dụng để phân biệt luồng và khả năng thông qua của luồng; nó không phải là biểu thị của phép chia) Nếu (u,v)

0 thì cung (u,v) chỉ được gán nhãn bởi khả năng thông qua của nó.

Điều cuối cùng liên quan đến tính chất của luồng mà chúng ta cần quan tâm

là giá trị Tổng giá trị dương của luồng đi vào đỉnh v được xác định bởi

Trang 3

luồng đi ra từ đỉnh đó trừ đi tổng giá trị dương của luồng đi vào đỉnh đó Sự thể hiệntính bảo toàn luồng là ở chỗ tổng giá trị dương của luồng đi vào một đỉnh (ngoại trừđỉnh phát và đỉnh thu) phải bằng tổng giá trị dương của luồng đi ra từ đỉnh đó Tínhchất này (tổng giá trị thực của luồng tại một đinh phải bằng 0) thường được xemnhư là “luồng vào bằng luồng ra.”

Một ví dụ về luồng

Một mạng vận tải có thể mô phỏng bài toán vận chuyển như trong hình 1(a).Công ty Lucky Puck có một nhà máy (đỉnh phát s) ở Vancouver sản xuất bóngkhúc côn cầu trên băng và có một kho (đỉnh thu t) ở Winnipeg để lưu trữ chúng.Lucky Puck thuê chổ trên các xe tải của công ty khác để vận chuyển bóng từ nhàmáy đến kho Bởi vì xe tải chạy trên những lộ trình (cung) được xác định giữa cácthành phố (đỉnh) và có giới hạn về khả năng chuyên chở Lucky Puck có thể vậnchuyển tới mức tối đa khả năng thông qua c(u, v) mỗi ngày giữa mỗi cặp thành phố

u và v (hình 1(a)) Lucky Puck không có sự kiểm soát trên những lộ trình đó và cáckhả năng thông qua của các lộ trình vì vậy không thể thay đổi mạng vận tải biểudiễn trong hình 1(a) Mục đích của họ là xác định số lượng thùng lớn nhất p có thểđược vận chuyển mỗi ngày và sau đó đưa ra giá trị này vì không có nơi nào sản xuấtbóng nhiều hơn họ có thể vận chuyển đến kho Lucky Puck không quan tâm mấtthời gian bao lâu để vận chuyển bóng từ nhà máy đến kho; 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.

Nhìn bề ngoài, nó dường như thích hợp để mô phỏng “luồng” về việc vậnchuyển với mạng vận tải 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 tính ràng buộc

về khả năng thông qua của luồng Ngoài ra, sự bảo toàn luồng cũng phải được tuântheo, tức là số lượng bóng đưa vào một thành phố trung gian phải bằng với số lượngbóng đưa ra từ thành phố đó Mặc khác, các thùng có thể chất đống tại các thànhphố trung gian

Tuy nhiên có một sự khác biệt tinh tế giữa sự vận chuyển (shipments) vàluồng (flows) Lucky Puck có thể vận chuyển bóng tử Edmonton đến Calgary và họcũng có thể vận chuyển bóng từ Calgary đến Edmonton Giả sử rằng họ vận chuyển

8 thùng mỗi ngày từ Edmonton (v1 trong hình 1) đến Calgary (v2) và 3 thùng mỗingày từ Calgary đến Edmonton Dường như có thể biểu diễn sự vận chuyển đó mộtcách trực tiếp bằng luồng nhưng thực tế chúng ta không thể Vì sự ràng buộc củatính đối xứng yêu cầu rằng (v1,v2) = - (v2,v1), vì vậy trong trường hợp này chúng

ta không thể xem (v1,v2) = 8 và (v2,v1) = 3 được

Lucky Puck có thể nhận thấy rằng thật là vô nghĩa để vận chuyển 8 thùng từEdmonton đến Calgary và 3 thùng từ Calgary đến Edmonton trong khi họ có thể đạtđược mục đích như vậy bằng cách vận chuyển 5 thùng từ Edmonton đến Calgary và

0 thùng từ Calgary đến Edmonton (và có lẽ sử dụng ít tài nguyên hơn trong quá

3

Trang 4

trình xử lí) Chúng ta biểu diễn vấn đề này bằng một luồng: Ta có (v1, v2) = 5 và

(v2, v1) = -5 Trong thực tế, 3 trong 8 thùng mỗi ngày từ v1 đến v2 bị hủy bỏ bởi 3thùng mỗi ngày từ v2 đến v1

Nói chung, việc hủy bỏ cho phép chúng ta biểu diễn sự vận chuyển giữa hai thànhphố bằng một luồng có giá trị dương theo tối đa một trong hai cung giữa các đỉnhtương ứng Tức là, trong mọi trường hợp nếu bóng được vận chuyển theo cả haihướng giữa hai thành phố thì ta có thể thay đổi bằng cách hủy bỏ thành một trườnghợp tương ứng trong đó bóng được vận chuyển chỉ theo một hướng; hướng có giátrị dương

Nói một cách khác, cho một luồng  phát sinh do sự vận chuyển vật chất,chúng ta không thể xây dựng lại một cách chính xác sự vận chuyển đó Nếu chúng

ta biết (u, v) = 5 thì luồng này có thể tồn tại bởi vì 5 đơn vị (thùng bóng) được vậnchuyển từ u tới v hoặc là vì 8 đơn vị được vận chuyển từ u tới v và 3 đơn vị đượcvận chuyển ngược trở lại từ v tới u Như vậy, đối với bất kỳ cặp đỉnh nào, chúng ta

sẽ không quan tâm sự vận chuyển vật chất thật sự diễn ra như thế nào mà chỉ quantâm đến số lượng hàng được chuyển giữa chúng Còn nếu chú ý đến sự vận chuyển

cơ bản (thật sự) thì nên dùng một cách mô phỏng khác để lưu lại được thông tin về

sự vận chuyển theo cả hai hướng

Phương pháp hủy bỏ (cancellation) sẽ phát sinh trong toàn bộ thuật toán Giả

sử rằng cung (u, v) tương ứng với một luồng có giá trị (u, v) Trong quá trình khaitriển thuật toán, chúng ta có thể tăng luồng trên cung (v, u) bằng cách thêm giá trị d.Trong toán học, thao tác đó làm giảm (u, v) một lượng d Theo khái niệm, chúng ta

có thể coi giá trị d như là giá trị hủy bỏ bớt của luồng trên cạnh (u v)

Mạng có nhiều đỉnh phát và nhiều đỉnh thu

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 Ví

dụ, Công ty Lucky Puck có thể có một tập m nhà máy bao gồm {s1,s2,…,sm} và mộttập n kho bao gồm {t1,t2,…,tm} như trong hình 2(a) Chúng ta có thể quy bài toánxác định một luồng cực đại trong một mạng với nhiều đỉnh phát và nhiều đỉnh thu

về bài toán luồng cực đại thông thường Hình 2(b) cho thấy mạng (a) có nhiều đỉnhphát và đỉnh thu có thể được chuyển thành mạng vận tải thông thường (b) chỉ cómột đỉnh phát và một đỉnh thu như thế nào Chúng ta thêm một đỉnh phát giả

(Supersource) s và một cung có hướng (s, si) với khả năng thông qua c(s, si) = , i

= 1, 2, ,m Chúng ta cũng tạo một đỉnh thu giả (Supersink) t và thêm vào một cung

có hướng (ti, t) với khả năng thông qua c(ti, t) = , i = 1, 2, ,n Bằng trực giác,bất kỳ luồng nào trong mạng như hình (a) cũng tương ứng với một luồng trongmạng như hình (b) và ngược lại Đỉnh phát giả s cung cấp nhiều luồng như yêu cầucho các đỉnh phát si Tương tự, đỉnh thu giả t tiếp nhận nhiều luồng từ các đỉnh thu

ti

Trang 5

Hình 2 Hình 2: 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

(a) Một mạng vận tải với 5 đỉnh phát S ={s 1 , s 2 , s 3 , s 4 , s 5 } và ba đỉnh thu T={t 1 , t 2 ,

t 3 }

(b) Một mạng vận tải tương ứng với một đỉnh phát và một đỉnh thu Chúng ta thêm một đỉnh phát giả (Supersource) s và một cung với khả năng thông qua vô hạn từ s đến mỗi đỉnh phát s i , i = 1, ,5 Đồng thời cũng thêm một đỉnh thu giả (Supersink)

t và một cung với khả năng thông qua vô hạn từ mỗi đỉnh thu t i ,i = 1, ,3.

Làm việc với nhiều luồng

Chúng ta sẽ xử lý nhiều hàm (như ), hàm này nhận đối số là 2 đỉnh trongmạng vận tải Chúng ta sẽ sử dụng một kí hiệu tổng ẩn (implicit summationnotation) trong đó mỗi đối số hoặc cả hai có thể là một tập hợp các đỉnh với cáchhiểu là giá trị được biểu hiện là tổng tất cả khoảng cách có thế có khi thay thế cácđối số với thành phần tương ứng Ví dụ, nếu X và Y là tập tất cả các đỉnh thì:

Vì vậy, sự ràng buộc của tính bảo tồn luồng có thể được diễn tả như là điều kiện

(u, V) = 0,  u V\{s, t} Tương tự, để thuận tiện, chúng ta sẽ bỏ dấu ngoặc nhọncủa tập hợp khi chúng được sử dụng trong kí hiệu tổng ẩn Ví dụ, trong phươngtrình (s, V\s) = (s, V), thuật ngữ V\s nghĩa là tập V\{s}

5

Trang 6

Kí hiệu tập ẩn thường làm đơn giản hóa các phương trình liên quan đến các luồng.

(Y, Z) và (Z, XY) = (Z, X) + (Z, Y)

Xét một ví dụ làm việc với kí hiệu tổng ẩn, chúng ta có thể chứng minh rằnggiá trị của một luồng là tổng giá trị của luồng đi vào đỉnh thu; tức là:

Nếu (u, v)  E và (v, u) E thì c(u, v) = 0 (theo định nghĩa)

Mà c(u, v) = 0 thì luồng từ đỉnh u đến đỉnh v cũng bằng 0, tức là f(u, v) = 0

Theo tính đối xứng f(u,v) = - f(v,u), nên f(v,u) = 0

Bài tập 26.1-2

Chứng minh rằng, bất cứ đỉnh v nào (ngoại trừ đỉnh phát và đỉnh thu) thì tổng luồngdương (the total positive flow) đi vào v phải bằng tổng luồng dương đi ra khỏi v

Trang 7

Bài tập 26.1-3

Mở rộng các tính chất và định nghĩa về luồng cho bài toán có nhiều đỉnh phát vàđỉnh thu Hãy chỉ ra rằng bất kỳ luồng nào trong một mạng vận tải có nhiều đỉnhphát và đỉnh thu đều tương ứng với một luồng có giá trị đồng nhất trong mạng cómột đỉnh phát và một đỉnh thu (mạng này thu được bằng cách thêm vào mộtSupersource và một supersink) và ngược lại

Trang 8

Vậy, (X, Y)  -(V - X, Y)

Bài tập 26.1-6

Cho một mạng vận tải G = (V, E), cho 1, 2 là các hàm từ VxV đến R Tổng luồng

1 + 2 là hàm từ VxV đến R xác định bởi:

(f1 + f2)(u, v) = f1(u, v) + f2(u, v) u, vV.

Nếu f1 và f2 là các luồng trong G thì tính chất nào trong ba tính chất của luồng mà

tổng luồng f1 + f2 thõa mãn và tính chất nào là trái ngược với nó?

Bài làm:

*u v, V,

f1 f2 u v, 

Trang 9

Không lớn hơn hoặc bằng c(u, v) Trừ phi c(u,v) = 0.

Vậy, tổng luồng f1 + f2 không thõa mãn tính chất ràng buộc về khả năng thông quacủa luồng

Để chứng minh ta chỉ cần biểu diễn 1 + (1- )2 thõa mãn các tính chất của luồng

* Tính ràng buộc về khả năng thông qua của luồng:

Hàm f1 và f2 là các luồng nên f u v1 ,  c u v ,  và f u v2 ,  c u v , , u v V, 

Ta có:

9

Trang 11

của giáo sư và trường học đều nằm ở các góc đường đó Nhưng Giáo sư không chắcliệu có thể gởi cả hai người con đến học cùng một trường hay không Giáo sư cómột bản đồ về thành phố Hãy chỉ ra cách giải quyết bài toán trên nếu cả hai ngườicon có thể đi học cùng trường như một bài toán về luồng cực đại.

Phương pháp Ford-Fulkerson là sự lặp đi lặp lại Chúng ta bắt đầu với (u,v)

= 0, u,v V Cho một luồng ban đầu có giá trị 0 Tại mỗi lần lặp lại, chúng ta tănggiá trị của luồng bằng cách tìm một “đường tăng luồng” mà chúng ta có thể nghĩmột cách đơn giản như là một đường từ đỉnh phát s đến đỉnh thu t, dọc theo đóchúng ta có thể gởi nhiều luồng hơn và sau đó tăng luồng dọc theo đường này.Chúng ta lặp lại quá trình này cho đến khi đường tăng luồng không được tìm thấy.Định lý lát cắt cực tiểu luồng cực đại chỉ ra rằng với các điều kiện trên, kết thúc quátrình này sẽ thu được một luồng cực đại

FORD-FULKERSON-METHOD(G, s, t)

1 khởi tạo luồng ban đầu f nhận giá trị 0

2 while tồn tại một đường tăng luồng p

3 do tăng luồng f dọc theo p

4 return f

Mạng thặng dư

Cho mạng vận tải và một luồng, mạng thặng dư bao gồm các cạnh có thể thêmvào luồng Chính thức hơn, giả sử chúng ta có một mạng vận tả G = (V, E) với đính

phát s và đỉnh thu t Cho f là một luồng trên G và xét cặp các đỉnh u,vV Lượng

giá trị của luồng thêm vào chúng ta có thể đẩy từ u đến v trước khi vượt quá khảnăng thông qua c(u,v) giá trị thặng dư của (u,v), xác định bởi:

(26.5) c f (u,v) = c (u,v) – f (u,v)

11

Trang 12

Ví dụ, nếu c(u,v) = 16 và f (u,v) = 11, khi đó chúng ta có thể tăng f (u,v) thêm c f

(u,v)=5 đơn vị trước khi vượt quá khả năng thông qua trên cung (u,v) Khi luồng f(u,v) âm thì giá trị thặng dư c f (u,v) là lớn hơn giá trị c(u,v) Ví dụ, nếu c(u,v) = 16

và f(u,v) = -4 thì giá trị thặng dư c f (u,v) là 20 Chúng ta có thể hiểu tình huống này

như sau Có một luồng 4 đơn vị từ v tới u mà chúng ta có thể hủy bỏ bằng cách đẩyvào một luồng 4 đơn vị từ u tới v Chúng ta đẩy một luồng khác 16 đơn vị từ u đến

v trước khi can thiệp đến khả thông qua trên cung (u,v) Vì vậy, chúng ta đã đẩy

vào một luồng 20 đơn vị, bắt đầu với luồng f (u,v) = -4, trước khi tìm thấy khả năng

thông qua của cung đó

Cho một mạng vận G=(V, E) và một luồng f, mạng thặng dư của G được

sinh ra bởi f là Gf =(V, Ef), trong đó:

Ef = {(u, v)  V x V : c f (u, v) > 0}

Điều này nghĩa là, với mỗi cung của mạng thặng dư hay cung thặng dư, có thể

thêm vào một luồng có giá trị lớn hơn 0 Hình 26.3(a) lặp lại mạng vận tải và luồng

f của hình 26.1(b), và hình 26.3(b) chỉ ra mạng vận tải G f tương ứng

Hình 26.3: (a) Mạng vận tải G và luồng f của hình 26.1(b) (b) Mạng thặng

dư Gf với đường tăng luồng p được tô đậm, giá trị thặng dư của nó là cf (p) = c(v2,

v3) = 4 (c) Luồng trong G là kết quả dọc theo đường tăng luồng p bởi giá trị thặng

dư của nó 4 (d) Mạng thặng dư được sinh ta từ luồng trong (c)

Các cung thuộc Ef cũng là các cung thuộc E hoặc ngược lại Nếu f (u,v) <

c(u,v) với (u,v) E thì cf (u, v) = c(u, v) – f (u, v) > 0 và (u,v)  E f Nếu f (u,v) > 0 với (u,v)  E thì f (v,u) < 0 Trong trường hợp này c f (v, u) = c(v,u) – f (v,u) > 0 và

vì vậy (v,u)  Ef Nếu không (u, v) cũng không phải (v, u) xuất hiện trong mạng ban

đầu, khi đó c(u, v) = c(v, u) = 0, f(u, v)>= f(v, u)= 0 (bài tập 26.1-1), và cf(u, v) =

cf(v, u) = 0 Chúng ta kết luận rằng, cung (u, v) có thể xuất hiện trong mạng thặng

Trang 13

dư chỉ nếu tại ít nhất một trong hai cung (u, v) và (v, u) xuất hiện trong mạng banđầu, và khi đó:

| Ef |  2| E | Nhận xét: Mạng thặng dư Gf cũng chính là một mạng vận tải với các khả năngthông qua được cho bởi cf Bổ đề sau chỉ ra một luồng trong một mạng thặng dư liênquan với một luồng trong mạng vận tải ban đầu như thế nào

Bổ đề 26.2

Cho G = (V,E) là một mạng vận tải với điểm phát s và điểm thu t, và f là một

luồng trong G Gf là mạng thặng dư của G sinh ra bởi f và f ’ là một luồng trong G f ’ Khi đó tổng luồng f + f ’ được xác định bởi phương trình (26.4) là một luồng trong

Đối với khả năng thông qua của luồng, chú ý rằng f '(u, v)  c f (u, v),  u, v V.

Theo phương trình (26.5), nên:

(f + f ')(u, v) = f (u, v) + f‘ (u, v)

 f (u, v) + (c(u, v) – f (u, v))

= c(u, v).

Đối với tính bao tồn luồng, chú ý rằng:  u V\{s,t}, ta có:

∑ (f+f’)(u, v) = ∑ ( f(u, v) + f’ (u, v))

Đường tăng luồng

Cho một mạng vận tải G = (V,E) và luồng f, một đường tăng luồng p là một

đường đơn giản từ s đến t trong một mạng thặng dư Gf Theo định nghĩa về mạng

13

Trang 14

thặng dư, mỗi cung (u,v) trên một đường tăng luồng thêm vào một vài luồng dương

từ u đến v mà không vi phạm tính ràng buộc về khả năng thông qua trên cung đó.Đường tô đậm trong hình 26.3(b) là một đường tăng luồng Xem mạng thặng

dư Gf trong hình đó như là một mạng vận tải, chúng ta có thể tăng luồng qua mỗicung theo đường tô đậm lên 4 đơn vị mà không vi phạm tính ràng buộc về khả năngthông qua vì khả năng thông qua còn dư nhỏ nhất trên đường là cf (v2,v3) = 4 Dunglượng tối đa mà chúng ta có thể tăng cho luồng trên mỗi cung trong đường tăngluồng p là giá trị thặng dư của p, cho bởi:

c f (p) = min{c f (u, v): (u, v) thuộc đường tăng p}.

Bổ đề sau xây dựng đối số trên chính xác hơn (Phần chứng minh của bổ đề đượcxem như bài tập (26.2-7))

Bổ đề 26.3

Cho mạng vận tải G = (V, E), f là một luồng trong G và p là đường tăng luồng

trong Gf Định nghĩa một hàm fp: VxV  R bởi:

Cf(p)nếu (u, v)  p

fp (u, v) = - Cf(p)nếu (u, v)  p

0, trường hợp khác

Khi đó, fp là một luồng trong Gf với giá trị |fp| = cf (p) > 0

Hệ quả sau chỉ ra rằng nếu chúng ta cộng thêm fp vào f thì sẽ nhận được luồng khác

trong G mà giá trị của nó là gần hơn với giá trị cực đại Hình 26.3(c) cho thấy kết

quả khi cộng thêm fp vào đường tăng trong hình 26.3(b) đối với luồng f từ hình

26.3(a)

Hệ quả 26.4

Cho mạng vận tải G = (V.E), f là một luồng trong G và p là một đường tăng

luồng trong Gf fp được xác định như phương trình (26.6) Định nghĩa một hàm f’:

VxV  R như sau: f’ = f + fp Khi đó f’ là một luồng trong G với giá trị | f '| = | f | + |

Trang 15

Một lát cắt (S, T) của một mạng vận tải G = (V, E) là một phân hoạch của Vthành S và T =V\S, trong đó s  S và t  T (Định nghĩa này tương tự với định nghĩa

về lát cắt mà chúng ta sử dụng cho các cây khung nhỏ nhất trong chương 23, chỉkhác là ở đây chúng ta đang cắt một đồ thị có hướng Và chúng ta khẳng định rằng s

 S và t  T) Nếu f là một luồng, khi đó luồng thông qua lát cắt (S,T) được định

nghĩa là f (S,T) Khả năng thông qua của lát cắt (S,T) là c(S,T) Một lát cắt cực tiểu

của một mạng là một lát cắt mà khả năng thông qua là nhỏ nhất trong tất cả các látcắt của mạng

Hình 26.4 chỉ ra lát cắt ({s,v1,v2},{v3,v4,t}) trong mạng vận tải của hình26.1(b) Luồng thông qua lát cắt này là:

f (v1, v3) + f (v2, v3) + f (v2, v4) = 12 + (-4) + 11 = 19,

và khả năng thông qua của nó là:

c (vl, v3) + c(v2, v4) = 12 + 14 = 26

Hình 26.4 Một lát cắt (S,T) trong một mạng vận tải của hình 26.1(b), với S

={s,v1,v2} và T ={v3,v4,t} Các đỉnh trong S là đen và các đỉnh trong T là trắng.Luồng thông qua (S,T) là f(S,T) = 19 và khả năng thông qua của lát cắt là c(S,T) =26

Quan sát thấy rằng luồng thông qua một lát cắt có thể bao gồm các luồng âmgiữa các đỉnh, nhưng khả năng thông qua của một lát cắt thì bao gồm các giá trịkhông âm Nói cách khác, luồng thông qua một lát cắt (S,T) gồm có các luồngdương theo cả hai hướng; luồng dương từ S đến T được cộng thêm vào trong khiluồng dương từ T đến S bị trừ đi Mặt khác, khả năng thông qua của một lát cắt(S,T) được tính chỉ gồm các cung đi từ S đến T Các cung đi từ T đến S không đượctính đến trong sự tính toán của c(S,T)

Bổ đề sau chỉ ra rằng tổng luồng đi qua bất cứ lát cắt nào cũng đều như nhau và nóbằng giá trị của luồng

Bổ đề 26.5

15

Trang 16

Cho f là một luồng trong mạng vận tải G với đỉnh phát s và đỉnh thu t, (S,T)

là một lát cắt của G Khi đó luồng thông qua (S,T) là f (S,T) = | f |

Chứng minh: Chú ý rằng f (S\{s};V) = 0 bởi tính chất cân bằng luồng, ta có:

Giá trị của bất kỳ luồng f nào trong mạng vận tải G đều bị chặn trên bởi khả

năng thông qua của bất kỳ lát cắt nào của G

Chứng minh: Cho (S,T) là lát cắt bất kỳ của G và cho f là luồng bất kỳ Theo bổ đề

26.5 và tính ràng buộc về khả năng thông qua:

Định lý 26.7 (Định lý lát cắt cực tiểu luồng cực đại)

Nếu f là một luồng trong mạng vận tải G = (V,E) với đỉnh phát s và đỉnh thu t

thì các điều kiện sau là tương đương:

1 f là một luồng cực đại trong G

2 Mạng thặng dư Gf không chứa đường tăng luồng nào

3 | f | = c(S,T) đối với lát cắt (S,T) của G

Chứng minh:

(1)  (2): Giả sử f là một luồng cực đại trong G nhưng G f có một đường tăng

luồng p Khi đó, theo hệ quả 26.4, luồng tổng f + f p , trong đó f p được cho bởi

phương trình (26.6), là một luồng trong G với giá trị hoàn toàn lớn hơn | f |, mâu thuẫn với giả thiết rằng f là một luồng cực đại.

Trang 17

(2)  (3): Giả sử rằng Gf không chứa đường tăng luồng nào, tức là Gf khôngchứa đường nào từ s đến t Định nghĩa:

Thuật toán Fork-Fulkerson cơ bản

Trong mỗi lần lặp đi lặp lại của phương pháp Ford-Fulkerson, chúng ta tìm

được vài đường tăng luồng p và tăng luồng f trên mỗi cung của p theo giá trị thặng

dư cf (p) Sự trình bày sau về phương pháp tính toán luồng cực đại trong một đồ thị

G = (V, E) bằng cách cập nhật luồng f [u,v] giữa mỗi cặp đỉnh u,v (2 đỉnh này nối

với nhau tạo thành một cung).1 Nếu u và v không được nối với nhau bởi một cung

trong cả hai hướng thì ta gán f [u,v] = 0 Các khả năng thông qua c(u,v) được cho

sẵn theo đồ thị, và c(u,v) = 0 nếu (u,v)  E Giá trị thặng dư cf (u,v) được tính theođúng như công thức (26.5) Biểu thức cf (p) trong đoạn mã sau chỉ là một biến tạmthời để lưu trữ giá trị thặng dư của đường p

FORD-FULKERSON(G, s, t)

1 for mỗi cung (u, v)  E [G]

2 do f [u, v]  0

3 f [v, u]  0

4 while tồn tại a đường p từ s đến t trong mạng thặng dư G f

5 do c f (p)  min {c f (u, v) : (u, v)  p}

6 for mỗi cung (u, v) trong p

7 do f [u, v]  f [u, v]+c f (p)

8 f [v, u]  - f [u, v]

Thuật toán Ford-Fulkerson đơn giản dựa trên phương pháp Ford-Fulkerson đã trìnhbày trước đó Hình 26.5 cho thấy kết quả của mỗi lần lặp trong khi thực hiện ví dụ

Dòng 1-3 khởi tạo luồng f bằng 0 Vòng lặp while từ dòng 4-8 thực hiện việc lặp để

1 Chúng ta sử dụng dấu ngoặc vuông khi xem xét một đại lượng (identifier) như là một trường có thể biến đổi (ví dụ như f)

và sử dụng dấu đơn khi xem xét nó như là một hàm.

17

Trang 18

tìm một đường tăng luồng p trong Gf và tăng luồng f theo p dựa trên giá trị thặng

dư c f (p) Khi không tồn tại đường tăng luồng thì luồng f là luồng cực đại.

Hình 26.5: Thực hiện thuật toán Ford-Fulkerson cơ bản (a) – (d) Việc lặp liên tiếpcủa vòng lặp while Phía bên trái của mỗi phần biểu diễn mạng thặng dư Gf từ dòng

4 với đường tăng luồng p được tô đậm Phía bên phải của mỗi phần biểu diễn tổngluồng f (đó là kết quả của việc cộng thêm fp vào f) Mạng thặng dư trong (a) làmạng vào (ban đầu) G (e) Mạng thặng dư sau cùng của vòng lặp while Nếu khôngcòn đường tăng luồng nào thì luồng f biểu diễn trong hình (d) là một luồng cực đại

Phân tích thuật tóan Fork- Fulkerson

Thời gian thực hiện thuật toán Ford-Fulkerson phụ thuộc vào đường tăngluồng p trong dòng 4 được xác định như thế nào Nếu nó được lựa chọn xấu thìthuật toán có thể không giới hạn: giá trị của luồng sẽ tăng một cách liên tục, nhưng

Trang 19

nó không hội tụ (hướng đến) giá trị luồng cực đại.2 Tuy nhiên, nếu đường tăng đượcchọn bằng cách sử dụng phương pháp tìm kiếm theo chiều rộng trước(a breadth-first search) (phương pháp này được trình bày trong phần 22.2) thì thuật toán thựchiện trong thời gian đa thức Trước khi chứng minh kết quả này, chúng ta thu đượcmột giới hạn trong trường hợp đường tăng luồng được chọn tùy ý và tất cả các khảnăng thông qua là các số nguyên.

Trong thực tiễn, bài toán luồng cực đại thường xuất hiện với các khả năngthông qua nguyên Nếu các khả năng thông qua là các số hữu tỉ thì một phép biếnđổi theo tỉ lệ thích hợp có thể được sử dụng để biến chúng thành các số nguyên Giảthiết dưới đây trình bày việc thực hiện thuật toán Ford-Fulkerson trong thời gian

O(E |f*|), trong đó f* là luồng cực đại được tìm thấy bởi thuật toán Việc phân tích

như sau: các dòng 1-3 mất thời gian O(E) Vòng lặp While từ dòng 4-8 được thực

hiện tối đa |f*| lần, vì giá trị luồng tăng ít nhất một đơn vị trong mỗi lần lặp.

Công việc thực hiện bên trong vòng lặp có thể tạo được hiệu quả nếu chúng taquản lí tính hiệu quả cấu trúc dữ liệu được sử dụng để biểu diễn mạng G = (V, E).Giả sử rằng chúng ta lưu giữ một cấu trúc dữ liệu tướng ứng với một đồ thị cóhướng G’= (V, E’), trong đó E’ = {(u,v): (u,v) E hoặc (v,u) E} Các cung trongmạng G cũng là các cung trong G’ và vì vậy nó là một cách đơn giản để duy trì các

khả năng thông qua và các luồng trong cấu trúc dữ liệu này Cho luồng f trên G, các

cung trong mạng thặng dư Gf chứa tất cả các cung (u,v) của G’ thõa: c(u,v) - f[u,v]

 0 Thời gian để tìm một đường trong một mạng thặng dư là O(V + E’) = O(E)nếu chúng ta sử dụng cả tìm kiếm theo chiều rộng và tìm kiếm theo chiều sâu Mỗilần lặp của vòng while mất thời gian O(E), khiến cho tổng thời gian thực hiện của

Ford-Fulkerson là O(E |f*|).

Khi các khả năng thông qua là nguyên và giá trị luồng tối ưu |f*| là nhỏ, thì

thời gian thực hiện thuật toán Ford-Fulkerson là tốt Hình 26.6(a) biểu diễn một ví

dụ về những gì có thể xảy ra trên một mạng vận tải đơn giản với |f*| là lớn Một

luồng cực đại trong mạng này có giá trị 2.000.000: 1.000.000 đơn vị của luồng đitheo đường s  u  t, và luồng khác 1.000.000 đơn vị đi theo đường s  v  t Nếuđường tăng đầu tiên được tìm thấy bởi thuật toán Ford-Fulkerson là s  u  v  t(hình 26.6(a)) thì luồng có giá trị 1 sau lần lặp đầu tiên Kết quả mạng thặng dưđược biểu diễn trong hình 26.6(b) Nếu lần lặp thứ hai tìm thấy đường tăng s  v 

u  t (hình 26.6(b)) thì luồng sau có giá trị 2 Hình 26.6(c) biểu diễn kết quả mạngthặng dư Chúng ta có thể tiếp tục chọn đường tăng luồng s  u  v  t trongnhững lần lặp thuộc số lẻ và đường tăng luồng s  v  u  t trong những lần lặpthuộc số chẵn Chúng ta có thể thực hiện tổng của 2.000.000 tăng, mỗi lần chỉ tănggiá trị luồng lên một đơn vị

2 Phương pháp Ford-Fulkerson có thể không kết thúc nếu các khả năng thông qua của cung là những số vô tỷ.

19

Trang 20

Hình 26.6 (a) Một mạng vận tải đối với thuật toán Ford-Fulkerson có thể mất thờigian O(E |f|*), trong đó f* là một luồng cực đại với |f*| = 2.000.000 Biểu diễn mộtđường tăng luồng với giá trị thặng dư 1 (b) Mạng thặng dư Biểu diễn một đườngtăng luồng khác với giá trị thặng dư 1 (c) Mạng thặng dư.

Thuật toán Edmonds-Karp

Giới hạn trên của thuật toán Ford-Fulkerson có thể được cải thiện nếu chúng tathực hiện việc tính toán đường tăng luồng p trong dòng 4 (của thuật toán Ford-Fulkerson) với một phương pháp tìm kiếm rộng, tức là nếu đường tăng luồng là mộtđường ngắn nhất từ s đến t trong mạng thặng dư, trong đó mỗi cung có đơn vịkhoảng cách (trọng lượng) Chúng ta gọi phương pháp Ford-Fulkerson vì thuật toánEdmonds-Karp được bổ sung Bây giờ chúng ta chứng minh rằng thuật toánEdmonds-Karp thực hiện với thời gian O(V E2)

Việc phân tích phụ thuộc vào khoảng cách đến các đỉnh trong mạng thặng dư

Gf Bổ đề sau sử dụng kí hiệu f (u,v) cho khoảng cách đường ngắn nhất từ u đến vtrong Gf, trong đó mỗi cung có đơn vị khoảng cách

Bổ đề 26.8

Nếu thuật toán Edmonds-Karp áp dụng trên một mạng vận tải G = (V,E) vớiđỉnh phát s và đỉnh thu t, thì v V\{s,t} : khoảng cách đường ngắn nhất f(u,v)trong mạng còn dư Gf tăng một cách đều đặn với mỗi sự tăng luồng

Chứng minh: Chúng ta giả sử rằng, cho vài đỉnh vV - {s,t}, có một sự tăng luồng

laf nguyên nhân làm cho đường ngắn nhất từ s đến v giảm xuống, và sau đó chúng

ta sẽ tìm thấy sự mâu thuẫn f là luồng trước lần tăng đầu tiên (luồng f làm giảm một vài khoảng cách đường ngắn nhất) và f ’ là luồng tiếp sau đó v là đỉnh   f’(u,v) vớikhoảng cách f’(s,v) là nhỏ nhất của f’(u,v) bị giảm bởi việc tăng luồng, vì vậy f ’

(s,v) < f (s,v) Cho p = s uv là một đường ngắn nhất từ s đến v trong Gf ’ nên(u,v) Ef ’

Trang 21

Chúng ta khẳng định (u,v) Ef Vì sao? Nếu chúng ta có (u,v) Ef, thì chúng

ta cũng có thể có:

f (s,v)  f (s,u) + 1 (theo bổ đề 24.10, bất đẳng thức tam giác)

 f ‘ (s,u) + 1 (theo bất đẳng thức (26.8)) = f ’ (s,u) (theo phương trình (26.7)),điều này trái với giả thiết f ’(s,v) < f(s,v)

Chúng ta có thể có (u,v)  Ef và (u,v)  Ef ’ như thế nào? Việc tăng phải thựchiện tăng luồng từ v đến u Thuật toán Edmonds-Karp luôn tăng luồng theo cácđường ngắn nhất, và vì vậy đường ngắn nhất từ s đến u trong Gf có (v, u) như làcung cuối cùng của nó Vì vậy,

f (s,v) = f (s, u) - 1

 f ‘ (s, u) - 1 (theo bất đẳng thức (26.8)) = f ’ (s, v) -2 (theo phương trình (26.7)),điều này trái với giả thiết f ’(s,v) < f(s,v) Chúng ta kết luận giả thiết một đỉnh vtồn tại là không đúng

Định lý tiếp theo giới hạn số lần lặp của thuật toán Edmonds-Karp

giảm (luồng này chỉ xuất hiện nếu (v, u) xuất hiện trên một đường tăng) Nếu f ’ là

luồng trong G khi trường hợp này xảy ra thì ta có:

21

Trang 22

- 2 Như vậy, (u, v) có thể trở thành tới hạn tối đa (|V|-2)/2 = |V|/2 – 1 lần Vì cóO(E) cặp đỉnh có thể có một cung giữa chúng trong một đồ thị thặng dư, tổng số cáccung tới hạn trong suốt toàn bộ quá trình thực hiện thuật toán Edmonds-Karp làO(V E) Và do đó mỗi đường tăng luồng có ít nhất một cung tới hạn.

Vì mỗi lần lặp của thuật toán Ford-Fulkerson có thể được thực hiện với thờigian O(E) khi đường tăng luồng được tìm thấy bởi phương pháp tìm kiếm theochiều rộng, tổng thời gian thực hiện chương trình theo thuật toán Edmonds-Karp làO(V E2) Chúng ta sẽ thấy rằng thuật toán Push-relabel có thể mang lại các giới hạntốt hơn Thuật toán ở phần 26.4 đưa ra một phương pháp để đạt được thời gian thựchiện là O(V2E), phương pháp này làm nền tảng cho thuật toán với thời gian O(V3) ởphần 26.5

Trang 23

Chỉ ra sự thực hiện thuật toán Edmonds-Karp trên mạng vận tải ở hình 26.1(a).

- Thực hiện việc tính toán đường tăng luồng p trong dòng 4 (của thuật toánFord-Fulkerson) với một phương pháp tìm kiếm rộng, tức là nếu đườngtăng luồng là một đường ngắn nhất từ s đến t trong mạng thặng dư, trong

đó mỗi cung có đơn vị khoảng cách (trọng lượng)

- Giải thuật được mô tả trong file chương trình

Chứng minh rằng, với bất kỳ cặp đỉnh u và v, với bất kỳ khả năng thông qua c và

luồng f , ta có: c f (u, v) + cf (v, u) = c(u, v) + c(v, u)

Bài tập 26.2-5

23

Trang 24

Nhớ lại cách vẽ hình biểu diễn sự chuyển đổi một mạng vận tải với đa đỉnh phát(multisource), đa đỉnh thu (multisink) thành một mạng với đỉnh phát và đỉnh thuđơn (ở phần 26.1) bằng cách thêm vào các cung có khả năng thông qua vô hạn.Chứng minh rằng bất kỳ luồng nào trong mạng kết quả cũng có một giá trị hữu hạnnếu các cung của mạng đa đỉnh phát, đa đỉnh thu ban đầu có khả năng thông quahữu hạn.

Bài tập 26.2-6

Giả sử rằng mỗi đỉnh phát si trong bài toán đa đỉnh phát, đa đỉnh thu tạo ra chínhxác pi đơn vị luồng sao cho f (si, V)=pi Cũng giả sử rằng, mỗi đỉnh thu tj tiêu thụchính xác qj đơn vị, sao cho f (V, tj,)=qj ,trong đó ipi = jqj Hãy chỉ ra cách để

chuyển đổi bài toán tìm một luồng f tuân theo các sự ràng buộc thêm vào đó thành

bài toán tìm một luồng cực đại trong một mạng vận tải với đỉnh phát và đỉnh thuđơn

Bài tập 26.2-7

Chứng minh bổ đề 26.3

Cho mạng vận tải G = (V, E), f là một luồng trong G và p là đường tăng luồng

trong Gf Định nghĩa một hàm fp: VxV  R bởi:

- Dựa vào định nghĩa fp (u, v) nên ta có fp (u, v) < cf(u, v) và fp (u, v) = - fp

(u, v) Nghĩa là fp thỏa mãn 2 tính chất của luồng: Sức chứa tối đa và tínhđối xứng lệch

- Tính bảo toàn luồng:

Trang 25

- Vì rằng sau khi ta thực hiện quá trình tăng luồng dựa vào các đường tăngluồng trong mạng thặng dư, tức rằng sau quá trình tăng luồng ta có đượcmột đồ thị tồn tại các cung bão hòa Và tập cạnh của đồ thị này cũngchính tập cạnh E của đồ thì G ban đầu, tức |Esau| = |Eđầu| = |E|.

Vì vậy một luồng cực đại trong một mạng vận tải G = (V, E) luôn luôn cóthể được tìm thấy bởi một dãy tối đa |E| các đường tăng

Bài tập 26.2-9

Cung liên kết của một đồ thị vô hướng là số nhỏ nhất k các cung phải bị xóa bỏ khỏi

đồ thi phân tách Ví dụ, cung liên kết của một cây là 1 và cung liên kết của mộtvòng tuần hoàn các đỉnh là 2 Chỉ ra cách làm thế nào để cung liên kết của một đồthị vô hướng G = (V, E) có thể được xác định bằng cách thực hiện thuật toán luồngcực đại trên tối đa |V| mạng vận tải, mỗi mạng có O(V) đỉnh và O(E) cung

Bài tập 26.2-10

Giả sử rằng một mạng vận tải G = (V, E) có các cung đối xứng, tức là (u, v) E nếu

và chỉ nếu (v, u)  E Hãy chỉ ra rằng thuật toán Edmonds-Karp giới hạn tối đa |V| |E|/4 lần lặp (Gợi ý: Với bất kỳ cung (u, v)xét cả (s,u) và (v, t) thay đổi như thếnào giữa các lần (u, v) tới hạn.)

26.3 Bộ ghép cực đại trên đồ thị hai phía

Đối với một số bài toán tổ hợp ta có thể áp dụng phương pháp Luồng cực đại(maximum - flow) để giải.Có một số bài toán với nhiều nguồn phát và nhiều nguồnthu như ở mục giới thiệu Phần 26.1 cho chúng ta một ví dụ Có một số bài toán tổhợp khác dường như rất ít liên quan đến vấn đề luồng trong mạng, nhưng thực tế ta

có thể giải nó bằng cách dùng phương pháp luồng cực đại Một trong số đó ta có thể

kể đến bài toán: tìm kiếm một bộ ghép cực đại trong đồ thị hai phía Mục này tậptrung giải quyết vấn đề đó Để giải quyết vấn đề này, ta sẽ tận dụng lợi thế của cácđặc tính của phương pháp For Fulkerson.nhà.Chúng ta thấy rằng phương pháp

Ford-Fulkerson có thể được dùng để giải quyết vấn đề tìm bộ ghép cực đại trên đồ

thị hai phía.Ở đây ta xét đối với đồ thị G = (V, E) với thời gian tính là O(VE).

Bài toán về bộ ghép cực đại trên đồ thị hai phía

Phần này ta sẽ tìm hiểu bài toán tìm bộ ghép cực đại trên đồ thị hai phía Do

đó trước khi tìm hiểu bài toán ta cần tìm hiểu một số khái niệm: đồ thị hai phía, bộghép (matching), bộ ghép cực đại (maximum bipartite matching)

Đồ thị hai phía (đồ thị phân đôi):

Cho đồ thị G = (V,E) mà tập đỉnh V có thể chia thành 2 tập đỉnh con

L (tập đỉnh con trái) và R (tập đỉnh con phải).Bất kì cạnh e  E đều là cạnh nối từ

25

Trang 26

đỉnh l  L đến đỉnh r  R thì G được gọi là đồ thị hai phía ( hay còn gọi là đồ thịphân đôi)

Hình 1: Đồ thị hai phía G

Ví dụ: Bài toán phân lịch dạy của các giáo viên dạy các môn học tương ứng trongmột khóa học Ở bài toán này:

- Tập L biểu thị cho tập hợp các giáo viên

- Tập R biểu thị cho tập các môn học

- Cạnh nối từ LR biểu thị giáo viên dạy môn tương ứng

Bộ ghép (matching)

Cho một đồ thị vô hướng G = (V,E), G là đồ thị hai phía với V = L R.một bộ

ghép (matching) là một tập hợp các cạnh M  E đôi một không có đỉnh chung.

Với bộ ghép M thì ta có:

- Tập các đỉnh v V,mỗi cạnh của M liên thuộc với v gọi là tập các đỉnh

được ghép (matched vertices) và ngược lại v không phải là đỉnh được ghép

(unmatched)

Tập các cạnh trong M gọi là các cạnh đã ghép (matched edges)

- Tập các cạnh trong M gọi là các cạnh đã ghép (matched edges) và ngượclại

Ví dụ: Cho đồ thị hai phía như hình 2 bên dưới.

Hình 2: Đồ thị hai phía G

Ta có:

Bộ ghép M: M ={(X1,Y1),(X2,Y2)}

Trang 27

Tập các đỉnh ghép: F = {X1,X2,Y1,Y2}

Tập các cạnh ghép: C = {(X1,Y1),(X2,Y2)}

Bộ ghép cực đại (maximum bipartite matching)

Một bộ ghép cực đại (maximum matching) là một bộ ghép của các

yếu tố cực đại Nghĩa là, một bộ ghép M sao cho với với bất kì bộ ghép M' nào, ta

có M  M’ Nói cách khác M là bộ ghép cực đại là bộ ghép có số cạnh ghépcực đại

Trong phần này ta sẽ tập trung chú ý đến việc tìm ra bộ ghép cực đại trên đồthị hai phía Ta giả sử rằng tập hợp đỉnh có thể chia thành hai tập L và R ta có: V =

L  R.Ở đó L và R rời nhau và tất cả các cạnh trong E nối giữa L và R Hình 26.7minh họa khái niệm của một bộ ghép cực đại

Hình 26.7 Một đồ thị hai phía G = (V,E) với phân hoạch đỉnh V = L  R (a) Một bộ ghép với số phần tử là 2 (b) Một bộ ghép cực đại với số phần tử là 3.

Bài toán tìm một bộ ghép cực đại trong một đồ thị hai phía có nhiều ứng dụngthực tiễn Để lấy ví dụ, ta có thể xét việc bộ ghép một tập hợp L máy với một tậphợp R công việc được thực hiện đồng thời

Xét ở hình 26.7 ta xem sự hiện diện của cạnh (u,v) trong E có nghĩa là mộtmáy cụ thể uL có khả năng thực hiện công việc v cụ thể vR Một bộ ghép cựcđại ở đây là tính làm sao có thể cung cấp công việc cho càng nhiều máy càng tốt

27

Trang 28

Để tìm ra bộ ghép cực đại của đồ thị hai phía G = (V,E) ta thực hiện:

- Đưa bài toán tìm bộ ghép cực đại trên đồ thị hai phía G về dạng bàitoán tìm luồng cực đại trên mạng luồng G’

- Dùng phương pháp Ford- Fulkerson để giải quyết bài toán

Ta định nghĩa mạng luồng G’ = (V’, E’) tương ứng với đồ thị hai phía G như

sau Ta cho đỉnh phát (source- s ) và đỉnh thu (sink-t)là các đỉnh mới không thuộc

V, và ta đặt V’ = V / s, t Nếu phân hoạch đỉnh của G là V = L  R, các cạnh cóhướng của G’ là các cạnh của E, có hướng từ L đến R cùng với các cạnh ở đỉnh V

sẽ căn cứ vào:

E’ = (s,u): uL

 (u,v): uL, vR và (u,v) E 

 (v,t): vR

Hình 26.8 Mạng vận tải tương ứng với một đồ thị hai phía (a) Đồ thị hai

phía G = (V,E) có phân hoạch đỉnh V = L  R từ Hình 26.7 Một bộ ghép cực đạiđược biểu thị bởi độ đậm ở các cạnh (các cạnh được tô đậm) (b) Mạng luồng tươngứng G’ có một luồng cực đại đã nêu Mỗi cạnh có khả năng thông qua là 1 Cáccạnh tô đậm có một luồng là 1, và tất cả các cạnh khác không mang luồng nào cả.Các cạnh tô đậm từ L đến R tương ứng với các cạnh trong một bộ ghép cực đại của

đồ thị hai phía

Để hoàn thành việc chỉ ra các bộ ghép cực đại,ta gán khả năng thông qua chomỗi cạnh trong E’.Vì mỗi đỉnh trong V có ít nhất một cạnh nối nên | E | ≥| V | / 2

Suy ra | E | ≤ |E'| = |E| + |V| ≤ 3|E| và do đó |E'| = O(E)

Bổ đề dưới đây chỉ ra rằng một bộ ghép trong G tương ứng trực tiếp với mộtluồng trong mạng vận tải G’ tương ứng của G Ta nói rằng một luồng f trên mạng

vận tải G = (V,E) có giá trị nguyên nếu f (u,v) là một số nguyên với tất cả các cặp

(u,v) tương ứng thuộc V x V

Bổ đề 26.10

Trang 29

Cho G = (V,E) là một đồ thị hai phía có phân hoạch đỉnh V=LR, và đặtG’=(V’,E’) là mạng luồng tương ứng của G Nếu M là một bộ ghép trong G, thì cómột luồng có giá trị số nguyên f trong G’ thỏa :

f = M

Ngược lại, nếu f là một luồng có giá trị nguyên trong G’, thì sẽ tồn tại một bộ

ghép M trong G với số phần tử (độ lớn) của M thỏa:

M = f

Chứng minh: Trước tiên ta chứng tỏ bộ ghép M trong G tương ứng với một

luồng có giá trị nguyên f trong G’.Ta định nghĩa f như sau:

Nếu (u,v)M, thì f(s,u) = f(u,v) = f(v,t) = 1 và f (u,s) = f(v,u) = f(t,v) = -1.Vớicác cạnh (u,v) E’ còn lại thì f(u,v) = 0

Ta dễ thấy được rằng mỗi cạnh (u,v)M tương ứng với 1 đơn vị của luồngtrong G’ theo đường đi: s uvt Hơn nữa, các đường đi được tạo ra bởi cáccung trong M bao gồm những đỉnh không kề nhau ngoại trừ hai đỉnh s và t Tổngluồng trên mạng qua từng lát cắt (Ls, Rt) bằng độ lớn của M (M) Chonên, theo Bổ đề 26.5 giá trị của luồng là f =M

Để chứng minh điều ngược lại, ta giả sử f là một luồng có giá trị nguyên trongG’ và cho

M = (u,v): uL, vR, và (u,v)>0

Mỗi đỉnh uL chỉ có một cạnh vào kí hiêu là (s,v), và khả năng thông quacủa nó là 1 Như vậy, mỗi đỉnh uL có tối đa một đơn vị của luồng mạng dương đivào Trong trường hợp nếu một đơn vị luồng dương không đi vào, thì do sự cânbằng luồng, một đơn vị luồng dương sẽ đi ra Hơn nữa, do f là có giá trị nguyên, vớimỗi đỉnh u L một đơn vị luồng dương có thể đi vào tại 1 cung và ra nhiều nhất làmột cung Vậy một đơn vị của luồng dương đi vào u nếu và chỉ nếu có một đỉnh v

R thỏa f(u,v) = 1 và có tối đa là một cung ra tại mỗi đỉnh u L chứa luồngdương Một tham số cân bằng (symmetric argument) sẽ được gán cho mỗi đỉnh v 

R Khi đó tập M là một bộ ghép

Ta dễ thấy rằng với mọi đỉnh ghép uL, ta có f(s,u)=1, và với mọi cạnh

(u,v)E-M, ta có f(u,v)=0 Bởi vậy, từ Bổ đề 26.1ta suy ra:

M= f(L,R)

=f(L,V’) - f(L,L) - f(L,s) - f(L,t) (Bổ đề 26.1)

Biểu thức trên có thể được rút gọn như sau:

Do là luồng cân bằng nên f(L,V’) = 0; Theo Bổ đề 26.1 thì f(L.L)=0 Do tínhđối xứng nên - f(L,s) = f(s,L).Do không có cung nào từ L vào t nên f(L,t) = 0

Từ đó suy ra: M= f(s,L)

=f(s,V’) (do tất cả các cung ra từ s đều đi vào L)

= f, (theo định nghĩa của f)

Theo Bổ đề 26.10, chúng ta có thể kết luận được một bộ ghép cực đại trongmột đồ thị hai phía G tương ứng với một luồng cực đại trong mạng vận tải tương

29

Trang 30

ứng G’ của G, nhờ đó chúng ta có thể tính một bộ ghép cực đại trong G bằng cáchtìm luồng cực đại trên G’ Sự ràng buộc duy nhất là thuật toán tìm luồng cực đại trả

về một luồng trong G’ mà trong đó có một số hàm f(u,v) cho giá trị không nguyên,mặc dầu giá trị luồng là một giá trị nguyên Định lý sau đây sẽ chỉ ra rằng nếuchúng ta dùng phương pháp Ford-Fulkerson thì sẽ giải quyết được vấn đề trên

Định lý 26.11 (Định lý bảo toàn)

Nếu hàm khả năng c có giá trị bảo toàn thì luồng cực đại f được tạo bằngphương pháp Ford-Fulkerson sẽ có tính chất fcó giá trị số nguyên Ngoài ra, vớitất cả các đỉnh u và v, giá trị của f(u,v) là một số nguyên

Chứng minh: Phần chứng minh sẽ theo phương pháp quy nạp trên số lần lặp

lại Ta để nó làm Bài tập 26.3-2

Giờ đây, ta có thể chứng minh hệ quả dưới đây theo Bổ đề 26.10

Hệ quả 26.12

Độ lớn của một bộ ghép cực đại trong một đồ thị hai phía G là giá trị của một

luồng cực đại trong mạng luồng tương ứng G’ của nó

Chứng minh:

Giả sử rằng M là một bộ ghép cực đại trong G và luồng tương ứng f trong G’

không cực đại và có một luồng cực đại f trong G’ sao cho f’ > f

Vì khả năng thông qua trong G’ có giá trị nguyên(theo Định lý 26.11).Ta thấy

rằng f' mang giá trị nguyên.Vì vậy, f’tương ứng với một bộ ghép M’ trong G có số phần tử (độ lớn) M’=f’ > f= M, bộ ghép mâu thuẫn với giả thiết M là bộ

ghép cực đại Tương tự, ta có thể chỉ ra rằng nếu f là một luồng cực đại trong G’, bộ

ghép tương ứng của nó là một cực đại trên G.

Như vậy, cho một đồ thị hai phía vô hướng G, ta có thể tìm một bộ ghép cựcđại bằng cách tạo ra mạng vận tải G’, sau đó dùng phương pháp Ford-Fulkerson tìmmột bộ ghép cực đại M từ luồng cực đại giá trị nguyên đã tìm được Do các bộ ghéptrong một đồ thị hai phía có độ lớn tối thiểu min(L,R) = O(V), giá trị của luồng cựcđại tương ứng G’ là O(V) Ta có thể tìm một bộ ghép cực đại trong một đồ thị hai

phía trong thời gian O(VE’) = O(VE).Vì vậy |E'| = Θ(E).

Một số bài tập

26.3-1.Chạy thuật toán Ford-Fulkerson trên mạng luồng trong Hình 26.8 (b)

và chỉ ra mạng thặng dư sau mỗi phép tăng cường luồng Đánh số các đỉnh trong L

từ trên xuống từ 1 đến 5 và trong R từ trên xuống từ 6 đến 9 Với mỗi lần lặp lại,chọn đường đi tăng cường nhỏ nhất

26.3-2 Chứng minh Định lý 26.11

26.3-3 Cho G = (V,E) là một đồ thị hai phía với phân hoạch đỉnh V=LR, và

cho G’ là mạng luồng tương ứng của nó Xác định đường đi tốt (good upper bound)dựa trên trọng số (length) của đường tăng được tìm thấy trong G’ bằng phươngpháp Ford-Fulkerson

Ngày đăng: 11/04/2015, 22:10

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

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

TÀI LIỆU LIÊN QUAN

w