Đó là một trong những bài toán đơn giản nhất liên quan đến mạng vận tải, và như chúng ta tìm hiểu trong chương này thì vấn đề trên có thể được giải quyết bằng những thuật toán hiệu.. 26.
Trang 1LUỒNG CỰC ĐẠI
Chúng ta có thể mô hình hóa một bản đồ đường đi bằng một đồ thị có hướng nhằm tìm
ra một đường đi ngắn nhất từ nơi này đến nơi khác, chúng ta cũng có thể biểu diễn một
đồ thị có hướng như một “mạng vận tải” và sử dụng nó để trả lời những câu hỏi về những luồng vật chất (material flows) Hãy hình dung một lượng vật chất (material coursing) bắt đầu điểm phát - nơi vật chất được tạo ra - chạy ngang qua một hệ thống
đến điểm thu (SINK) - nơi nó được tiêu thụ Lượng vật chất tạo ra ở điểm phát bằng
lượng vật chất ở điểm thu “Luồng” vật chất tại mọi điểm trong hệ thống được xem là
lượng vật chất di chuyển Những mạng vận tải có thể được sử dụng để mô phỏng các luồng chất lỏng chảy qua các ống dẫn, các bộ phận được kết nối với nhau qua dây chuyền lắp ráp, dòng điện chạy qua các mạng điện, thông tin truyền qua các mạng truyền thông,…
Mỗi một cung trong mạng vận tải tương ứng với một ống dẫn(conduit) vật chất Mỗi ống dẫn có khả năng chứa riêng, nó cho biết lượng vật chất tối đa có thể vận chuyển qua ống dẫn đó Ví dụ có thể chuyển 200 gallons chất lỏng qua một ống dẫn trong một giờ hoặc dòng điện 20 amperes qua dây điện Các đỉnh là chỗ nối của các ống dẫn (ngoại trừ nguồn và đích), các luồng vật chất qua các đỉnh mà không hợp lại Hay nói cách khác, lượng vật chất đi vào một đỉnh phải bằng lượng vật chất đi ra từ đỉnh đó.Chúng ta gọi thuộc tính này là “sự cân bằng luồng”, và nó tương tự định luật của Kirchhoff khi vật chất là dòng điện
Trong bài toán Luồng cực đại, chúng tôi muốn tính toán lượng vật chất lớn nhất có thể vận chuyển từ điểm phát đến điểm thu mà không vi phạm bất cứ ràng buộc nào Đó là một trong những bài toán đơn giản nhất liên quan đến mạng vận tải, và như chúng ta tìm hiểu trong chương này thì vấn đề trên có thể được giải quyết bằng những thuật toán hiệu Hơn nữa, các phương pháp cơ bản sử dụng trong thuật toán luồng cực đại có thể được ứng dựng để giải quyết các bài toán về mạng vận tải khác
Chương này trình bày 2 phương pháp để giải quyết bài toán luồng cực đại Phần 26.1 trình bày khái quát các khái niệm về mạng vận tải và luồng, định nghĩa bài toán luồng
cực đại Phần 26.2 mô tả phương pháp kinh điển để tìm matching cực đại trong đồ thị
bipartite vô hướng Trong phần 26.3, 26.4 trình bày phương pháp the push-relabel,
nó là cơ sở để đưa ra các thuật toán nhanh nhất đối với bài toán mạng vận tải Phần
26.5 bao gồm thuật toán "relabel-to-front", một sự bổ sung cụ thể cho phương the push-relabel - phương pháp mà có độ phức tạp tính toán O(V3) Mặc dù thuật toán này không phải là thuật toán nhanh nhất nhưng nó mô tả một vài phương pháp sử dụng trong các thuật toán nhanh nhất xác định đường tiệm cận và nó có hiệu quả trong thực tiễn
26.1 Mạng vận tải
Trong phần này, chúng tôi đưa ra một định nghĩa dựa trên một đồ thị được giả định là đúng về mạng vận tải, thảo luận các thuộc tính của chúng và định nghĩa bài toán luồng cực đại một cách chính xác Chúng tôi cũng giới thiệu một vài kí hiệu có ích
Trang 2Mạng vận tải và luồng
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 Hình 26 biểu diễn một ví dụ về mạng vận tải
Bây giờ chúng ta có định nghĩa về luồng chính thức hơn Cho G = (V,E) là một mạng vận tải với khả năng thông qua C Cho s là đỉnh phát và t là đỉnh thu của mạng Một luồng tổng trong G là một hàm có giá trị thực ƒ: 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):
∀u,v ∈ V: ƒ(u,v) ≤ c(u,v)
Tính đối xứng lệch (Skew symmetry):
∀u,v ∈ V: ƒ(u,v) = - ƒ(v,u)
Tính cân bằng luồng (Flow conservation):
∀u ∈ V\{s,t}:
Khối lượng ƒ(u,v) (có thể nhận giá trị 0 hoặc â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
Đó là tổng giá trị luồng ra khỏi đỉnh phát (kí hiệu trị tuyệt đối | | biểu thị giá trị của luồng chứ không phải là biểu thị của giá trị tuyệt đối hay lực lượng của một tập hợ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à đỉnh thu t Hãy tìm một luồng có giá trị cực đại từ đỉnh s đến đỉnh t
Hình 26.1 Mạng vận tải
Hình 26.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
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 đó.
Trang 3Hình 26.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
đơn thuần được sử dụng để tách luồng và khả năng thông qua của luồng; nó không phải là biểu
nó.
Trước khi xem một ví dụ về bài toán mạng vận tải, chúng ta hãy khảo sát nhanh 3 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 nói một cách đơn giản là Luồng tổng
từ đỉnh này đến đỉnh khác không được vượt quá khả năng thông qua đã được cho của luồng đó
Tính đối xứng lệch nghĩa là luồng tổng từ đỉnh u đến đỉnh v là đối xứng với luồng trong hướng ngược lại
Tính cân bằng luồng tức là tổng giá trị của luồng đi ra từ một đỉnh (ngoại trừ đỉnh phát
và đỉnh thu) là bằng 0 Dựa vào tính đối xứng lệch, chúng ta có thể viết lại tính cân bằng luồng như sau:
∀ v ∈V\{s,t} Tức là, tổng giá trị của luồng đi vào một đỉnh bằng 0
Khi cả (u,v) lẫn (v,u) đều không thuộc E thì có thể không có luồng nào giữa u và v khi đó:
ƒ(u,v) = ƒ(v,u) = 0 (Bài tập 26.1-1 yêu cầu chứng minh tính chất này)
Đ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ị thực của luồng đi vào một đỉnh được xác định bởi
Tổng luồng dương đi ra từ một đỉnh được định nghĩa ngược lại Chúng ta xác định tổng giá trị của luồng tại một đỉnh là bằng tổng giá trị thực của luông đi ra từ một đỉnh trừ đi tổng giá trị thực của luồng đi vào từ một đỉnh Sự thể hiện tính cân bằng luồng là
ở chỗ tổng giá trị của luồng đi vào một đỉnh (ngoại trừ đỉnh phát và đỉnh thu) phải bằng với tổng giá trị luồng đi ra từ đỉnh đó Tính chất này (tổng giá trị của mạng vận tải tại một đinh phải bằng 0) thường được xem như 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 26.1(a) Công
ty Lucky Puck có một nhà máy (đỉnh phát s) ở Vancouver sản xuất bóng khúc côn cầu trên băng và có một kho (đỉnh thu t) ở Winnipeg để cất giữ chúng Lucky Puck thuê 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) xác định giữa các thành phố(đỉnh) và có giới hạn về khả năng chuyên chở Lucky Puck có thể vận chuyể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 26.1(a)) Lucky Puck không có quyền điều khiển trên
Trang 4những lộ trình đó và các khả 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ểu diễn trong hình 26.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ất bóng nhiều hơn họ có thể vận chuyển đến kho Lucky Puck không quan tâm mất thờ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 để biểu diễn “mạng” vận chuyển với một luồng trong mạng này bởi vì số lượng thùng vận chuyển mỗi ngày từ thành phố này đến thành phố khác là vấn đề đối với tính ràng buộc về khả năng thông qua của luồng Ngoài ra, sự cân bằng luồng cũng phải được tuân theo, 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ượng bó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ành phố trung gian
Tuy nhiên có một sự khác biệt khó thấy 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 26.1) đến Calgary (v2) và 3 thùng mỗi ngày từ Calgary đến Edmonton Dường như có thể biểu diễn sự vận chuyển đó một cá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ủa tính chất Đối xứng lệch yêu cầu rằng ƒ(v1,v2) = - ƒ(v2,v1), nhưng trong trường hợp này là không đúng nếu chúng ta coi ƒ(v1,v2) = 8 và ƒ(v2,v1) = 3
Lucky Puck có thể nhận thấy rằng thật là vô ích để tìm cách 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 nhiều tài nguyên hơn trong quá trình
xử lí) Chúng ta biểu diễn 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 3 thù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ành phố bằng một luồng có giá trị dương theo tối đa một trong hai cung giữa các đỉnh tương ứng Tức là, trong mọi trường hợp nếu bóng được vận chuyển theo cả hai hướ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ường hợ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ận chuyển từ u tới v hoặc 8 đơn vị được vận chuyển từ u tới v và 3 đơn vị được vậ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ỉ quan tâ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, cách mà lưu lại được thông tin về sự vận chuyển theo cả hai hướng
Trang 5Phương pháp hủy bỏ (cancellation) sẽ xuất hiện trong toàn bộ thuật toán của chương này 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 khai triển thuật toán, chúng ta có thể tăng luồng trên cung (v,u) 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à đỉ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 {s1,s2,….sm} và một tập n kho chứa {t1,t2,
….tm} như trong hình 26.2(a) May mắn là bài toán này không khó hơn bài toán luồng cực đại thông thường
Chúng ta có thể quy bài toán xác định một luồng cực đại trong một mạng nhiều đỉnh phát và đỉnh thu về bài toán luồng cực đại thông thường Hình 26.2 cho thấy mạng có nhiều đỉnh phát và đỉnh thu (a) đượ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 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 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 trong mạng như hình (b) Đỉnh phát đơn s cung cấp nhiều luồng như yêu cầu cho các đỉnh phát si Tương tự, đỉnh thu đơn t tiếp nhận nhiều luồng từ các đỉnh thu ti Bài tập 26.1-3 yêu cầu chứng minh hai vấn đề trên là tương đương
Hình 26.2
Trang 6Hình 26.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
(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
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 Supersink t và một cung với khả năng thông qua vô hạn từ mỗi đỉnh thu
Làm việc với luồng
Chúng ta sẽ tiếp xúc với một vài hàm (như ƒ), hàm này nhận đối số là 2 đỉnh trong mạng vận tải. Trong chương này, chúng ta sẽ sử dụng một kí hiệu tổng ẩn trong đó mỗi đối số hoặc cả hai hoặc có thể là một tập hợp các đỉnh với cách hiểu là giá trị biểu hiện
là tổng của 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 chất cân bằng 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ỏ qua các điểm nối cố định khi chúng có thể được sử dụng trong kí hiệu hàm ẩn Ví dụ, trong phương trình
ƒ(s,V\s) = ƒ(s,V), thuật ngữ V\s nghĩa là tập V\{s}
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 luồng Bổ đề sau (phần chứng minh được đặt trong bài tập 26.1-4) đưa ra vài đồng nhất thức (identities) thường xuất hiện nhất, chúng có liên quan đến luồng và kí hiệu tập ẩn
Bổ đề 26.1
Cho G = (V,E) là một mạng vận tải và cho ƒ là một luồng trong G Khi đó đẳng thức sau khẳng định:
1 ∀ X ⊆ V, ta có: ƒ(X,X) = 0
2 ∀ X,Y ⊆ V, ta có: ƒ(X,Y) = - ƒ(Y,X)
3 ∀ X,Y,Z ⊆ V với ta có các tổng: ƒ(X∪Y,Z) = ƒ(X,Z) + ƒ(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ằng giá trị của một luồng là tổng luồng đi vào đỉnh phát; tức là:
Dễ dàng nhận thấy đặc tính này được khẳng định Do tính chất cân bằng luồng nên tất
cả các đỉnh (ngoại trừ đỉnh phát và đỉnh thu) có giá trị luồng dương đi vào và đi ra bằng nhau Theo định nghĩa, đỉnh phát có một tổng luồng có giá trị lớn hơn 0; tức là,
có nhiều luồng dương đi ra từ đỉnh phát hơn là đi vào Ngược lại, đỉnh thu là đỉnh có thể có một tổng luồng có giá trị bé hơn 0 Tức là có nhiều luồng dương đi vào đỉnh phát hơn là đi ra Điều đó được chứng minh như sau:
Trang 7Trong phần sau của chương, chúng ta sẽ vận dụng (generalize) kết quả này (Bổ đề 26.5).
Bài tập
26.1-1 Sử dụng định nghĩa về luồng, chứng minh rằng: nếu (u,v) ∉ E và (v,u) ∉E thì
ƒ(u,v) = ƒ(v,u) = 0
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
số luồng dương (the total positive flow) đi vào v phải bằng tổng số luồng dương đi ra khỏi v
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 nhiều đỉnh phát
và đỉnh thu đều tương ứng với một luồng có cùng giá trị 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ột Supersource và một supersink)
(f1 + f2)(u, v) = f1(u, v) + f2(u, v) (26.4)
∀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à luồng tổng f1 + f2 phải thõa mãn? và tính chất nào là trái ngược với nó?
26.1-7 Cho ƒ là một luồng trong mạng và cho α là một số thực Tích vô hướng αƒ là một hàm từ VxV đến R xác định bởi:
(αƒ)(u,v) =α ƒ(u,v)Chứng minh rằng các luồng đó tạo thành một tập lồi (a convex set) Tức là, chỉ ra rằng nếu ƒ1 và ƒ2 là các luồng thì ta có αƒ1 + (1- α)ƒ2 , ∀α∈[0,1]
26.1-8 Phát biểu bài toán luồng cực đại như là một bài toán lập trình tuyến tính
(linear-programming)
26.1-9 Giáo sư Adam có hai người con nhưng không may là chúng lại ghét nhau Vấn
đề là chính thái độ quá gay gắt đó không chỉ khiến chúng không chịu đi học cùng nhau
mà còn không chịu đi đến bất cứ chỗ nào mà đứa kia đã đến trong cùng ngày Chúng không có vấn đề gì khi vượt qua các con đường tại góc đường May thay, nhà 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ắc liệu có thể
Trang 8gở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ười con có thể đi học cùng trường như một bài toán về luồng cực đại.
26.2 Phương pháp Ford-Fulkerson
Phần này trình bày phương pháp Ford-Fulkerson để giải quyết bài toán luồng cực đại Chúng ta xem nó là một “phương pháp” hơn là một “thuật toán” bởi vì nó chứa thêm vài sự bổ sung khác với số lần thực hiện khác Phương pháp Ford-Fulkerson phụ thuộc vào ba khái niệm quan trọng và liên quan đến các bài toán và thuật toán về luồng:
mạng dư (residual networks), đường tăng (augmenting paths), và lát cắt (cuts) Các
khái niếm này là thiết yếu đối với định lý lát cắt cực tiểu luồng cực đại (định lý 26.7), định lý này mô tả giá trị của một luồng cực đại trong các thuật ngữ về lát cắt của mạng vận tải Chúng ta kết thúc chương này bằng một bổ sung rõ ràng về phương pháp Ford-Fulkerson và phân tích thời gian chạy của nó
Phương pháp Ford-Fulkerson là 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ăng giá trị của luồng bằng cách tìm một “đường tăng” Chúng ta có thể nghĩ một cách đơn giản
“đường tăng” là một đường từ đỉnh phát s đến đỉnh thu t, theo đường đó chúng ta có thể gởi nhiều luồng hơn và sau đó tăng luồng theo đường này Chúng ta lặp lại quá trình này cho đến khi không còn tìm thấy đường tăng nữa Định lý lát cắt cực tiểu luồng cực đại chỉ ra rằng khi 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 luồng ban đầu f nhận giá trị 0
2 while tồn tại một đường tăng p
3 do tăng luồng f theo p
4 return f
Cho một mạng vận tải và một luồng, mạng còn dư gồm các cung còn có thể tăng thêm tổng luồng Nói một cách rõ hơn, giả sử rằng chúng ta có một mạng vận tải G = (V,E)
với đỉnh phát s và đỉnh thu t Cho f là một luồng trong G và xem cặp các đỉnh u,v∈V Dung lượng tổng luồng thêm vào mà 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) chính là khả năng thông qua còn dư của (u,v), xác định bởi:
Ví dụ, nếu c(u,v) = 16 và f(u,v) = 11 thì 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ì khả năng thông qua còn dư c f (u,v) là lớn hơn khả năng thông qua c(u,v) Ví dụ, nếu c(u,v)
= 16 và f(u,v) = -4 thì khả năng thông qua còn 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 đẩy vào một luồng 4 đơn vị từ u tới v Sau đó chúng ta đẩy một luồng 16 đơn vị từ u đến v trước khi vi phạm đến sự ràng buộc về 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.
Trang 9Hình 26.3
(c) Luồng trong G là kết quả từ đường tăng theo p bởi khả năng thông qua còn dư của nó.
(d) Mạng còn dư sinh ra bởi luồng trong (c).
Cho một mạng vận tải G = (v,E) và một luồng f, mạng còn dư của G sinh ra bởi f là G f
= (V, E f), trong đó:
Ef = {(u, v) ∈ V x V : cf (u, v) > 0}
Tức là, mỗi cung của mạng còn dư hay cung còn dư có thể nhận một luồng có giá trị
lớn hơn 0 Hình 26.1(b) và 26.3(b) cho thấy mạng còn dư tương ứng G f
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) ∈Ef 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 va (v,u) ∈E (Hay nói cách khác, cung (u,v) có thể là một cung còn dư trong Ef thậm chí nếu nó không phải là cung trong E, đó là trường hợp Ef ∉E Mạng còn dư trong hình 26.3(b) chứa một vài cung như vậy, các cung đó không có trong mạng ban đầu, như (v1, s) and (v2, v3) Như vậy cung (u,v) xuất hiện chỉ trong Gf nếu (v,u) ∈E và có một luồng dương từ v tới u
Bởi vì tổng luồng f(u,v) từ u tới v là âm nên c f (u, v) = c(u, v) - f(u, v) là dương và (u,v)
∈Ef ) Nếu cả (u,v) và (v,u) không xuất hiện trong mạng ban đầu thì:
c(u,v) = c(v,u) = 0
Chúng ta kết luận rằng cung (u,v) có thể xuất hiện chỉ trong mạng còn dư nếu có ít nhất một trong hai cung (u,v) hoặc (v,u) xuất hiện trong mạng ban đầu, vì vậy ta có:
|Ef| ≤ 2|E|
Trang 10Quan sát thấy rằng mạng còn dư Gf cũng chính là một mạng vận tải với các khả năng thông qua được cho bởi cf Bổ đề sau chỉ ra một luồng trong một mạng còn dư liên quan 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, cho f là một luồng
trong G Cho Gf là mạng còn dư của G sinh ra bởi f và f’ là một luồng trong G f ’ Khi đó
luồng tổng f + f’ xác định bởi phương trình (26.4) là một luồng trong G với giá trị
|f + f'| = |f| + |f'|
Chứng minh Chúng ta phải kiểm tra tính đối xứng, tính ràng buộc về khả năng thông
qua và tính cân bằng luồng có được tuân theo hay không Đối với tính đối xứng, chú ý rằng ∀ u,v ∈ V, ta có:
(f + f')(u, v) = f(u, v) + f'(u, v)
(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 cân bằng luồng, chú ý rằng: ∀ u ∈V\{s,t}, ta có:
Cuối cùng, ta có:
Đường tăng
Cho một mạng vận tải G = (V,E) và luồng Một đường tăng là một đường đơn giản từ s
đến t trong một mạng còn dư Gf Theo định nghĩa về mạng còn dư, mỗi cung (u,v) trên
một đường tăng nhận thêm 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 Xem mạng còn 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ỗi cung theo đường tô đậm lên 4 đơn vị mà không vi phạm tính ràng buộc về khả năng thông qua vì khả năng
Trang 11thông qua còn dư nhỏ nhất trên đường là cf(v2,v3)=4 Dung lượng tối đa mà chúng ta có thể tăng cho luồng trên mỗi cung theo đường tăng p, cho bởi:
c f (p) = min{c f (u, v): (u, v) is on 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ổ đề được xem như bài tập (26.2-7))
Bổ đề 26.3
Cho G = (V,E) là một mạng vận tải, f là một luồng trong G và cho p là đường tăng trong Gf Định nghĩa một hàm fp: VxV → R bởi:
Vì vậy, 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 G = (V.E) là một mạng vận tải, f là một luồng trong G và cho p là một đường tăng trong Gf Cho 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
Vì f’ là một luồng trong G với giá trị | f' | = | f | + |fp| > | f |
Chứng minh trực tiếp từ các bổ đề 26.2 và 26.3
Lát cắt của mạng vận tải
Phương pháp Ford-Fulkerson lặp lại việc tăng luồng theo các đường tăng cho đến khi một luồng cực đại được tìm thấy Định lý lát cắt cực tiểu luồng cực đại (chúng ta sẽ chứng minh ngắn gọn) phát biểu rằng một luồng là cực đại nếu và chỉ nếu mạng còn
dư của nó không chứa đựng đường tăng nào Tuy nhiên, để chứng minh định lý này trước tiên chúng ta phải tìm hiểu khái niệm về lát cắt của một mạng vận tải
Hình 26.4
Các đỉnh trong S là đen và các đỉnh trong T là trắng Tổng luồ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
Một lát cắt (S,T) của một mạng vận tải G = (V,E) là một sự phân chia của V thành S và
T (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
Trang 12mà 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 thì luồng tổng đi 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át cắt của mạng
Hình 26.4 cho thấy lát cắt ({s,v1,v2},{v3,v4,t}) trong mạng vận tải của hình 26.1(b) Luồng tổng đi 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
Quan sát thấy rằng tổng luồng đi qua một lát cắt có thể bao gồm các luồng âm giữ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, tổng luồng đi qua một lát cắt (S,T) gồm có các luồng dương theo cả hai hướng; luồng dương từ S đến T được cộng thêm vào trong khi luồ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 được tí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
Một hệ quả khác từ bổ đề 26.5 cho thấy các khả năng thông qua của lát cắt có thể được
sử dụng để giới hạn (chặn) giá trị của một luồng như thế nào
Hệ quả 26.6
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:
| f | = f(S, T)
Trang 13Một kết quả trực tiếp từ hệ quả 26.6 là luồng cực đại trong một mạng bị chặn trên bởi khả năng thông qua của một lát cắt cực tiểu của mạng đó Định lý lát cắt cực tiểu luồng cực đại phát biểu rằng giá trị của một luồng cực đại là bằng với khả năng thông qua của một lát cắt cực tiểu.
Đị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 còn dư G f không chứa đường tă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ử trái ngược (mâu thuẩn) rằng f là một luồng cực đại trong G nhưng G f
lại có một đường tă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.
(2) ⇒ (3): Giả sử rằng Gf không chứa đường tăng nào, tức là Gf không chứa đường nào tử s đến t Định nghĩa:
S = {v ∈V: xác định một đường từ s đến v trong Gf } và T = V\{S} Sự phân chia (S,T)
là một lát cắt: thông thường ta có s∈S và t∉S vì không có đường nào từ s đến t trong
Gf Với mỗi cặp đỉnh u và v (u ∈S và v ∈T) ta có f(u, v) = c(u, v), mặt khác vì (u,v)
∈Ef (có thể đặt v trong tập S) Vì vậy, theo bổ đề 26.5 | f | = f(S,T) = c(S,T).
(3) ⇒ (1): theo hệ quả 26.6, | f | ≤ c(S,T) đối với tất cả các lát cắt (S,T) Vì vậy điều
kiện | f | = c(S,T) hàm ý rằng f là một luồng cực đại.
Thuật toán Ford-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 p và tăng luồng f trên mỗi cung của p theo khả năng thông qua còn 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,S) 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 cho 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 Khả năng còn 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ạm thời để lưu trữ khả năng thông qua còn dư của đường p
FORD-FULKERSON(G, s, t)
1 for each edge (u, v) ∈ E[G]
2 do f[u, v] ← 0
3 f[v, u] ← 0
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.
Trang 144 while tồn tại a đường p từ s đến t trong mạng còn dư G f
5 do c f (p) ← min {c f (u, v) : (u, v) ∈ p}
6 for each edge (u, v) trong p
đại
Phân tích thuật toán Ford-Fulkerson
Thời gian thực hiện thuật toán Ford-Fulkerson phụ thuộc vào đường tăng p trong dòng
4 được xác định như thế nào Nếu nó được chọn tồi thì thuật toán có thể không xác định: giá trị của luồng sẽ tăng một cách liên tục, nhưng 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 được chọ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ực hiện trong thời gian đa thức Tuy nhiên, trước khi chứng minh kết quả này, chúng ta thu được một giới hạn trong trường hợp đường tă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 cho với các khả năng thô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 ta quản lí cấu trúc dữ liệu sử dụng để biểu diễn mạng G = (V,E) một cách có hiệu quả 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 trong mạng G cũng là các cung trong G’ và vì vậy nó là một khoảng (không gian) ước lượng để 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 còn dư Gf chứa tất cả các cung (u,v) của G’ thõa:
c(u,v) - f[u,v] ≠ 0
Vì vậy, thời gian để tìm một đường trong một mạng còn 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 Vì vậy, mỗi lần lặp của vòng while mất thời gian O(E) khiến cho thời gian thực hiện tổng cộng của
Ford-Fulkerson là O(E |f*|).
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ỷ.
Trang 15Hình 26.5
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ếp của vòng lặp while Phía bên trái của mỗi phần biểu diễn mạng còn dư Gf với đường tăng p được tô đậm Phía
dư trong (a) là mạng vào (ban đầu) G (e) Mạng còn dư sau cùng khi thực hiện vòng lặp Nếu không còn đường tăng nào thì luồng f biểu diễn trong hình (d) là một luồng cực đại.
Hình 26.6
Trang 16Hì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ời gian 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 với khả năng thông qua còn dư 1 (b) Kết quả mạng còn dư Biểu diễn một đường tăng khác với khả năng thông qua 1 (c) Kết quả mạng còn dư.
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 đi theo đườ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 còn 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ạng còn dư Chúng ta có thể tiếp tục chọn đường tăng s → u → v → t trong những lần lặp thuộc số lẻ và đường tăng s → u → v → t trong những lần lặp thuộc số lẻ Chúng ta có thể tính tổng của 2.000.000 tăng, mỗi lần chỉ tăng giá trị luồng lên một đơn vị
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 ta thực hiện việc tính toán đường tăng p trong dòng 4 với một phương pháp tìm kiếm rộng, tức
là nếu đường tăng là một đường ngắn nhất từ s đến t trong mạng còn dư, trong đó mỗi cung có đơn vị khoảng cách (trọng lượng – weight) Chúng ta gọi phương pháp Ford-Fulkerson vì thuật toán Edmonds-Karp được thực hiện Bây giờ chúng ta chứng minh rằng thuật toán Edmonds-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 còn dư Gf Bổ đề sau sử dụng kí hiệu δf(u,v) cho khoảng cách đường ngắn nhất (shortest-path distance)
từ u đến v trong 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 đều 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 tạo
ra khoảng cách đường ngắn nhất từ s đến và sau đó chúng ra sẽ xuất phát từ một sự
mâu thuẩn Cho f là luồng trước sự 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à cho f’ là luồng kế sau đó Cho v là đỉnh ∈δf’(u,v), khoảng cách 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 ’ và
Vì vậy làm thế nào chúng ta chọn v, biết rằng nhãn khoảng cách của đỉnh u không giảm, nghĩa là
Trang 17= δ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ực hiệ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
ta sẽ chỉ ra rằng mỗi tập cung |E| có thể trở thành tới hạn tối đa |V|/2 – 1 lần
Cho u và v là các đỉnh trong V được nối với nhau bởi một cung trong E Vì các đường tăng là các đường ngắn nhất nên khi (u,v) tới hạn trong lần đầu tiên, ta có:
δf(s,v) = δf(s,u) + 1
Luồng được tăng một lần, cung (u,v) không xuất hiện trong mạng còn dư Nó không thể xuất hiện lại sau này trên đường tăng khác cho đến khi sau khi luồng từ u đến v
được 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ó:
Trang 18Vì vậy, từ khi (u,v) trở nên tới hạn cho đến khi nó trở nên tới hạn lần kế tiếp, khoảng cách từ đỉnh phát đến u tăng ít nhất 2 lần (ban đầu khoảng cách từ đỉnh phát đến u ít nhất bằng 0) Các đỉnh trung gian trên một đường ngắn nhất từ s đến u không thể chứa
s, u hoặc t (vì (u,v) trên đường tới hạn ngụ ý là u ≠ t) Vì vậy, cho đến khi u trở nên không thể đạt đến từ đỉnh phát thì khoảng cách của nó tối đa là |V| - 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ị còn dư, tổng số các cung 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
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ời gian O(E) khi đường tăng được tìm thấy bởi phương pháp tìm kiếm theo chiề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ạn tố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ực hiệ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
Trong ví dụ ở hình 26.5, lát cắt cực tiểu tương ứng với luồng cực đại đã chỉ ra là gì?
Trong số các đường tăng xuất hiện trong ví dụ, hai đường tăng nào khử (cancel)
luồng?
26.2-4
Chứng minh rằng, với bất kỳ cặp đỉnh u và 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)
26.2-5
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ạn nếu các cung của mạng đa đỉnh phát, đa đỉnh thu ban đầu có khả năng thông qua hữu hạn
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ính xá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
26.2-7
Chứng minh bổ đề 26.3
Trang 19Chỉ ra 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 (Gợi ý: xác định các đường tăng sau khi tìm thấy luồng cực đại.)
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ột vò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ồng cự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
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 Đối sánh cực đại (maximum bipartite matching)
Ngày nay, người ta đã có thể giải được một số bài toán tổ hợp tương tự bài toán luồng cực đại như bài toán đa tài nguyên (multiple source), bài toán luồng cực đại multiple-sink Ngoài ra chúng ta còn những bài toán tổ hợp liên quan đến luồng trong mạng, một trong số đó bài toán tìm một đối sánh cực đại (maximum matching) trong một đồ thị kép (bipartite graph) là một bài toán điển hình
Để giải bài toán này, chúng ta áp dụng tính bảo toàn của phương pháp
Ford-Fulkerson với đồ thị G=(V,E) trong thời gian O(VE).
Phát biểu bài toán:
Định nghĩa: (maximum matching)
Cho một đồ thị vô hướng G=(V,E), một đối sánh là tập các cung M là tập con của tập E mà mỗi một cung thuộc M thì đều được tạo từ đỉnh v ∈ V Một đỉnh v ∈ v là
được đối sánh (matched) bởi đối sánh M (matching M) nếu trong M có cung chứa điểm
đó, ngược lại thì v không được đối sánh bởi đối sánh M.
Một đối sánh cực đại (maximum matching) khi và chỉ khi độ lớn của nó là cực
đại, tức là nếu M là một đối sánh cực đại thì với đối sánh M’ bất kỳ thì:
|M|≥ |M’|.
Bài toán: (bipartite graph)
Xem như tập đỉnh của đồ thị phân thành hai tập con L và R thỏa V = L R và
giả thiết rằng mọi đỉnh trong V đều thuộc một cung nào đó thuộc E (xem hình 26.7)
Trang 20L R L R
(a) (b)
Hình 26.7: Đồ thị kép G=(V,E) với tập phân vùng đỉnh (vertex partition) V = L
R (a) đối sánh với số phần tử (cardinality) 2, (b) đối sánh với số phần tử 3.
Tìm một đối sánh cực đại trong một đồ thị kép là một bài toán có nhiều ứng
dụng thực tiễn Ví dụ: một đối sánh giữa 1 tập L là các máy trong một quy trình sản xuất với tập R là những công việc chính là tổ chức sao cho công việc được thực hiện theo một quy trình liên tục đồng nhất về thời gian Ta xem một cung (u,v) trong E biểu diễn một máy trong đó u ∈L là khả năng thực hiện của máy và v∈ R là công việc mà
máy cần phải làm Đối sánh cực đại ở đây chính là khả năng làm việc lớn nhất có thể cho phép của máy
Phương pháp tìm đối sánh cực đại:
Áp dụng phương pháp Ford-Fulkerson để tìm một đối sánh cực đại trong một đồ
thị vô hướng kép G=(V,E) trong một hàm thời gian (time polymonial) của V và E Hình 26.8 mô hình hóa ý tưởng giải bài toán đó là tạo ra một mạng vận tải (flow network) trong đó các luồng chính là các đối sánh