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

62 594 4
Tiểu luận Phân tích và thiết kế 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

Nhóm 4 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ới khả 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ạ ƒ: 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): luồng từ đỉnh này đến đỉnh khác không vượt quá khả năng thông qua đã được cho củ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 của luồng từ v đến u. ∀u, v ∈ V: ƒ(u, v) = - ƒ(v, u) Tính bảo toàn luồng (Flow conservation): tổng giá trị của luồng đi từ một đỉnh ngoại trừ đỉnh phát và đỉnh thu đến một đỉnh là bằng 0. ∀u ∈ V\{s, t}: ( , ) 0 v V f u v ∈ = ∑ ∀ v ∈V\{s, t}. Tức là, tổng giá trị của luồng đi vào một đỉnh ngoại trừ đỉnh phát và đỉnh thu là bằng 0. Khi cả (u, v) lẫn (v, u) đều không thuộc E thì không có luồng nào giữa u và v. khi đó: ƒ(u, v) = ƒ(v, u) = 0. 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: 1 Nhóm 4 | | ( , ) v V f f s v ∈ = ∑ Đâ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ủa luồ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ậ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. 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ủa nó 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 ( , ) 0 ( , ) u V f u v f u v ∈ > ∑ 2 | | ( , ) v V f f s v ∈ = ∑ Nhóm 4 Tổng giá trị dương của luồ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ị thực của luồng tại một đỉnh là bằng tổng giá trị dương của 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ện tí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ính chấ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 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 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 để 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á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 1(a)). Lucky Puck không có sự kiểm soát trên 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 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 để mô phỏng “luồng” về việc vận chuyể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â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 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 (v 1 trong hình 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 đối xứng yêu cầu rằng ƒ(v 1 ,v 2 ) = - ƒ(v 2 ,v 1 ), vì vậy trong trường hợp này chúng ta không thể xem ƒ(v 1 ,v 2 ) = 8 và ƒ(v 2 ,v 1 ) = 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 3 Nhóm 4 đượ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á trình xử lí). Chúng ta biểu diễn vấn đề này 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 là vì 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 để 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 khai triể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 {s 1 ,s 2 ,…,s m } và một tập n kho bao gồm {t 1 ,t 2 ,…,t m } như trong hình 2(a). 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 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 đỉnh phá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, 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 đỉnh thu giả (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) và ngược lại. Đỉnh phát giả s cung cấp nhiều luồng như yêu cầu 4 Nhóm 4 cho các đỉnh phát s i .Tương tự, đỉnh thu giả t tiếp nhận nhiều luồng từ các đỉnh thu t i . 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 trong mạng vận tải. Chúng ta sẽ sử dụng một kí hiệu tổng ẩn (implicit summation notation) trong đó mỗi đối số hoặc cả hai có thể là một tập hợp các đỉnh với cách hiể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ì: ( , ) ( , ) x X y Y f X Y f x y ∈ ∈ = ∑ ∑ 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ọn 5 Nhóm 4 của tập hợp khi chúng được sử dụng trong kí hiệu tổng ẩ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 các luồng. Bổ đề Cho G = (V, E) là một mạng vận tải và cho ƒ là một luồng trong G. Khi đó có các thuộc tính sau: 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 X ∩ Y = Ø 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 giá trị của luồng đi vào đỉnh thu; tức là: |ƒ| = ƒ(V, t). Dễ dàng nhận thấy đặc tính này được khẳng định. Do tính bảo tồn luồng nên tất cả các đỉnh (ngoại trừ đỉnh phát và đỉnh thu) có giá trị dương của luồng đi vào và đi ra bằng nhau. Theo định nghĩa, đỉnh phát có tổng giá trị thực của luồng lớn hơn 0; tức là, luồng có giá trị dương đi ra từ đỉnh phát nhiều hơn là đi vào nó. Ngược lại, đỉnh thu là đỉnh có tổng giá trị thực của luồng bé hơn 0. Tức là luồng có giá trị dương đi vào đỉnh thu nhiều hơn là đi ra nó. Điều đó được chứng minh như sau: |ƒ| = ƒ(s, V) (bằng định nghĩa) = ƒ(V, V) - ƒ(V - s, V) (bằng bổ đề , phần 3) = - ƒ(V - s, V) (bằng bổ đề , phần 1) = ƒ(V, V - s) (bằng bổ đề , phần 2) = ƒ(V, t) + ƒ(V, V - s - t) (bằng bổ đề , phần 3) = ƒ(V, t) (tính bảo tồn luồng) Bài tập 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 Bài làm: 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 6 Nhóm 4 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ồng dương (the total positive flow) đi vào v phải bằng tổng luồng dương đi ra khỏi v. 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 đỉnh phá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ột Supersource và một supersink) và ngược lại. Bài tập 26.1-4 Chứng minh bổ đề 26.1. Bài làm: * Chứng minh: f(X, X) = 0 ( , ) ( , ) 1 ( , ) ( , ) ( , ) ( , ) 0 2 u v X X u v X X f X X f u v f u v f v u ∈ × ∈ × = = + = ∑ ∑ * Chứng minh: f(X, Y) = - f(Y, X) ( , ) ( , ) ( , ) ( , ) ( , ) u v X Y u v X Y f X Y f u v f v u ∈ × ∈ × = = − ∑ ∑ ( , ) ( , ) ( , ) ( , ) ( , ) u v X Y v u Y X f v u f v u f Y X ∈ × ∈ × = − = − = − ∑ ∑ * Chứng minh: ( , ) ( , ) ( , )X Y f X Y Z f X Z f Y Z = ∅ ⇒ = + I U ( , ) ( ) ( , ) ( ) ( ) ( , ) ( , ) ( , ) u v X Y Z u v X Z Y Z f X Y Z f u v f u v ∈ × ∈ × × = = ∑ ∑ U U U ( , ) ( , ) ( , ) ( , ) u v X Z u v Y Z f u v f u v ∈ × ∈ × = + ∑ ∑ ( , ) ( , )f X Z f Y Z = + Bài tập 26.1-5 Cho mạng vận tải G = (V, E) và luồng ƒ như hình 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). 7 Nhóm 4 Hình 1(b) Bài làm: * Xác định một cặp tập con X, Y ⊆ V: ƒ(X, Y) = -ƒ(V - X, Y): X = {s, v1} Y = {v3} V – X = {v2, v3, v4, t} f(X, Y) = f(v1, v3) = 12 f(V – X, Y) = f(v2, v3) + f(v4, v3) + f(t, v3) = (-4) + 7 + (-15) = -12 Vậy, f(X, Y) = - f(V – X, Y) * Xác định một cặp tập con X, Y ⊆ V: ƒ(X, Y) ≠ -ƒ(V - X, Y): X = {s, v1} Y = {v3, t} V – X = {v2, v3, v4, t} f(X, Y) = f(v1, v3) = 12 f(V – X, Y) = f(v2, v3) + f(v4, v3) + f(t, v3) + f(v3, t) + f(v4, t) = (-4) + 7 + (-15) + 15 + 4 = 7 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ừ 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) ∀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à tổng luồng f 1 + f 2 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 ∀ ∈ ( ) ( ) 1 2 ,f f u v + 8 Nhóm 4 ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) 1 2 1 2 1 2 1 2 , , , , , , , f u v f u v f v u f v u f v u f v u f f v u = + = − − = − + = − + Vậy, tổng luồng f 1 + f 2 thõa mãn tính chất đối xứng. * , \{ , },u v V s t ∀ ∈ ( )( ) 1 2 , v V f f u v ∈ + ∑ ( ) ( ) ( ) ( ) ( ) 1 2 1 2 , , , , 0 0 0 v V v V v V f u v f u v f u v f u v ∈ ∈ ∈ = + = + = + = ∑ ∑ ∑ Vậy, tổng luồng f 1 + f 2 thõa mãn tính chất bảo toàn luồng. * , ,u v V ∀ ∈ ( ) ( ) 1 2 ,f f u v + ( ) ( ) ( ) ( ) ( ) 1 2 , , , , 2 , f u v f u v c u v c u v c u v = + ≤ + = 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 f 1 + f 2 không thõa mãn tính chất ràng buộc về khả năng thông qua của luồng. Bài tập 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]. Bài làm: Để 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 f 1 và f 2 là các luồng nên ( ) ( ) 1 , ,f u v c u v ≤ và ( ) ( ) 2 , , , ,f u v c u v u v V ≤ ∀ ∈ Ta có: 9 Nhóm 4 ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) 1 2 1 2 1 2 1 , , 1 , , 1 * , * , 1 * , 1* , , f f u v f u v f u v f u v f u v c u v c u v c u v c u v α α α α α α α α + − = + − = ∗ + − ≤ + − ≤ = * Tính đối xứng: Hàm f 1 và f 2 là các luồng nên ( ) ( ) 1 1 , ,f u v f v u = − và ( ) ( ) 2 2 , , , ,f u v f u v u v V = − ∀ ∈ Ta có: ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) 1 2 1 2 1 2 1 2 1 2 1 , , 1 , , 1 , , 1 , 1 , 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 α α α α α α α α α α + − = + − =− − − =− + − =− + − * Tính bảo toàn luồng: Hàm f 1 và f 2 là các luồng nên ( ) 1 , 0 v V f u v ∈ = ∑ và ( ) 2 , 0, , \{ , } v V f u v u v V s t ∈ = ∀ ∈ ∑ Ta có: ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) 1 2 1 2 1 2 1 2 1 2 1 , , 1 , , 1 , * , 1 * , , 1 , *0 1 *0 0 v V v V v V v V v V v V v V v V f f u v f u v f u v f u v f u v f u v f u v f u v f u v α α α α α α α α α α α α ∈ ∈ ∈ ∈ ∈ ∈ ∈ ∈ + − = + − = + − = + − = + − = + − = ∑ ∑ ∑ ∑ ∑ ∑ ∑ ∑ Bài tập 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). Bài tập 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 đi qua các con đường tại góc đường. May thay, nhà 10 [...]... đại Chúng ta gọi nó là 1 “phương pháp” đúng hơn là một thuật toán vì nó bao gồm một số yếu tố với số lần thực hiện khác nhau Thuật toán FordFulkerson dựa trên 3 khái niệm quan trọng thể hiện tính vượt trội của phương pháp và có liên quan đến các vấn đề và các thuật toán về luồng: mạng thặng dư, đường tăng luồng và lát cắt 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. .. bổ đề 26.5 và tính ràng buộc về khả năng thông qua: |f| = f (S, T) = ∑f (u, v) ≤ ∑c(u, v) = c(S, T) u∈S u∈S v∈T v∈T 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... 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... cắt cực tiểu luồng cực đại) nhj 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 Gf có một đường tăng luồng p Khi đó, theo hệ quả 26.4, luồng. .. f p 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ông cò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ăng luồ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ì 18 Nhóm 4 thuật toán. .. tính luồng cực đại Hiện nay, các thuật toán được phát triển dựa vào phương pháp “pushrelabel" để tính luồng cực đại là nhanh nhất Ngoài ra, những vấn đề của luồng như chi phí cực tiểu cũng có thể giải quyết một cách hiệu quả bằng các phương pháp “push-relabel" Trong phần này chúng tôi sẽ giới thiệu phương pháp tính luồng cực đại tổng quát của Goldberg với độ phức tạp là O(V2E), do đó hiệu quả hơn thuật. .. 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ử luồng? - Lát cắt cực tiểu tương ứng với luồng cực đại đã chỉ ra là: ({s,v1,v2,v4}, {v3,t}) Trong số các đường tăng xuất hiện, hai đường tăng khử luồng: Bài tập 26.2-4 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ó:... 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ìm một bộ ghép cực đại M từ luồng cực đại giá trị nguyên đã tìm được Do... 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 luồ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 mà 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 thặng dư của nó không chứa đường tăng luồng nào Để chứng 14 Nhóm 4 minh định lý này trước tiên chúng ta phải tìm hiểu... 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ài toá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 . 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. pháp và có liên quan đến các vấn đề và các thuật toán về luồng: mạng thặng dư, đường tăng luồng và lát cắt. 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. đườ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ăng luồng p

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

Từ khóa liên quan

Mục lục

  • 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ó.

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

    • Bổ đề

    • Bổ đề 26.8

      • Định lý 26.9

      • Chứng minh

        • Bổ đề 26.13

        • Tính đúng đắn của phương pháp push-relabel

        • Bổ đề 26.17

        • Phân tích phương pháp push-relabel

        • Bổ đề 26.20

        • Bổ đề 26.21

        • Định lí 26.25

          • Bài tập

          • Bổ đề 26.28

            • Bổ đề 26.29

            • Xoá bỏ một đỉnh tràn

            • Bổ đề 26.30

            • Thuật toán RELABEL-TO-FRONT

            • Phân tích

              • Định lý 26.31

              • Bài tập

              • Một số bài toán

                • V’ = V  {s’,t’}

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

Tài liệu liên quan