Tiểu luận môn học THIẾT KẾ VÀ PHÂN TÍCH THUẬT TOÁN LUỒNG CỰC ĐẠI

41 655 0
Tiểu luận môn học THIẾT KẾ VÀ PHÂN TÍCH THUẬT TOÁN LUỒNG CỰC ĐẠI

Đ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

LUỒ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(V 3 ). 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. 1 Mạ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 ƒ: V x V → 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 ngang 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 đó. 2 Hì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 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 để tách 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ó. 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 3 nhữ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 (v 1 trong hình 26.1) đến Calgary (v 2 ) 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 ƒ(v 1 ,v 2 ) = - ƒ(v 2 ,v 1 ), nhưng trong trường hợp này là không đúng nếu chúng ta coi ƒ(v 1 ,v 2 ) = 8 và ƒ(v 2 ,v 1 ) = 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ó ƒ(v 1 ,v 2 ) = 5 và ƒ(v 2 ,v 1 ) = -5. Trong thực tế, 3 trong 8 thùng mỗi ngày từ v 1 đến v 2 bị hủy bỏ bởi 3 thùng mỗi ngày từ v 2 đến v 1 . 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. 4 Phươ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 {s 1 ,s 2 ,….s m } và một tập n kho chứa {t 1 ,t 2 , ….t m } 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,s i ) với khả năng thông qua c(s,s i ) = ∞, ∀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 (t i ,t) với khả năng thông qua c(t i ,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 s i .Tương tự, đỉnh thu đơn t tiếp nhận nhiều luồng từ các đỉnh thu t i . 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 5 Hì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. (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 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 t i , ∀ i = 1, ,3 đến t. 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à: |ƒ| = ƒ(V,t). (26.3) 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: 6 Trong 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). 26.1-4. Chứng minh bổ đề 26.1 26.1-5. Cho mạng vận tải G = (V,E) và luồng ƒ như hình 26.1(b), hãy xác định một cặp tập con X, Y ⊆ V: ƒ(X,Y) = -ƒ(V\{X,Y}). Sau đó, hãy xác định một cặp tập con X, Y ⊆ V: ƒ(X,Y) ≠ -ƒ(V\{X,Y}). 26.1-6. Cho một mạng vận tải G = (V,E). ƒ 1 , ƒ 2 là các hàm từ V x V đến R. Tổng luồng ƒ 1 + ƒ 2 là hàm từ V x V đến R xác định bởi (f 1 + f 2 )(u, v) = f 1 (u, v) + f 2 (u, v) (26.4) ∀u,v∈V. Nếu f 1 và f 2 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 f 1 + f 2 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ừ V x V đế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ể 7 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ườ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 Mạng còn dư (residual networks) 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: c f (u,v) = c(u,v) − f(u,v) (26.5) 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. 8 Hình 26.3 (a) Mạng vận tải G và luồng f tường ứng trong hình(b) (b) Mạng còn dư G f với đường tăng p(được tô đậm); khả năng thông qua còn dư của nó là c f (p) = c f (v2,v3) = 4. (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 đó: E f = {(u, v) ∈ V x V : c f (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 E f 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ì c f (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 va (v,u) ∈E. (Hay nói cách khác, cung (u,v) có thể là một cung còn dư trong E f thậm chí nếu nó không phải là cung trong E, đó là trường hợp E f ∉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ư (v 1 , s) and (v 2 , v 3 ). Như vậy cung (u,v) xuất hiện chỉ trong G f 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) ∈E f ). 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ó: |E f | ≤ 2|E|. 9 Quan sát thấy rằng mạng còn dư G f 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 c f . 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 G f 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(v, u) - f'(v, u) = -(f(v, u) + f'(v, u)) = -(f + f')(v, u). Đối với tính ràng buộc về khả năng thông qua, 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 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 10 [...]... “generic-push-relabel” để tính toán luồng cực đại Tới nay, rất nhiều thuật toán luồng cực đại được xem nhanh nhất đều là thuật toán push-label và sự thực thi nhanh nhất của thuật toán luồng cực đại dựa trên phương pháp push-relabel Những vấn đề về luồng khác như cực tiểu chi phí của luồng, có thể được giải quyết một cách hiệu quả bằng phương pháp “push-relabel” Phần này giới thiệu thuật toán luồng cực đại “chung” của... 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) 12 Mộ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ý... kết thúc, luồng trước nó tính là một luồng cực đại Bổ đề 26.19 (Tính đúng đắn của thuật toán generic push-relabel) Nếu thuật toán GENERIC-PUSH-RELABEL kết thúc khi chạy trên một mạng luồng G =(V,E) với nguồn phát s và đỉnh thu t., thì luồng trước f được tính là một luồng cực đại trong G Chứng minh: Chúng ta sử dụng vòng lặp bất biến dưới đây: Mỗi lần vòng lặp while kiểm tra trong dòng 2 của thuật toán. .. 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 để tìm một đường tăng p trong Gf và tăng luồng f theo p dựa trên khả năng thông qua còn dư cf(p) Khi không còn đường tăng nào thì luồng f là luồng cực đạ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ực đại trong G và luồng tương ứng f trong G’ là không cực đại và có một luồng cực đại f’ trong G’ thoả f ' > f Vì khả năng thông của G’ là giá trị nguyên (theo định lý 26.11) nên có thể suy ra f’ là giá trị nguyên Do đó, f’ tương ứng một đối sánh M’ trong G với độ lớn M ' = f ' > f = M , điều này ngược với giả thiết M là một đối sánh cực đại Tương tự ta có thể chỉ ra rằng nếu f là một luồng cực đại. .. = 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ư... 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 18 26.2-8 Chỉ 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... pháp push-relabel: Để chỉ ra thuật toán push-relabel giải quyết bài toán luồng cực đại, đầu tiên chúng ta sẽ chứng minh rằng nếu nó kết thúc, luồng trước f là một luồng cực đại Sau đó chúng ta chứng minh rằng thuật toán kết thúc Chúng ta bắt đầu với hàm chiều cao h Bổ đề 26.16 (Chiều cao đỉnh không bao giờ giảm) Trong suốt quá trình thực hiện GENERIC-PUSH-RELABEL trên một luồng mạng G =(V,E), đối với... 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... Sự đúng đắn và phân tích của thuật toán relabel-to-front phụ thuộc vào khái niệm các cạnh có thể chấp nhận được (admissible edges): những cạnh còn lại trong mạng đi qua mà luồng có thể được chen vào Sau khi chứng minh một vài thuộc tính về mạng của các cạch có thể chấp nhận được, chúng ta sẽ kiểm tra nhanh thao tác xoá bỏ hiện tại và phân tích chính thuật toán relabel-to-front Những cạnh và mạng có . 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. 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. c f (p). Khi không còn đường tăng nào thì luồng f là luồng cực đạ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

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

Từ khóa liên quan

Mục lục

  • LUỒNG CỰC ĐẠI

    • Mạng vận tải và luồng

    • Hì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 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 để tách 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ó.

      • Làm việc với luồng

      • Thuật toán Edmonds-Karp

      • Bổ đề 26.8

        • Định lý 26.9

        • Chứng minh

Tài liệu cùng người dùng

Tài liệu liên quan