Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 22 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
22
Dung lượng
891,01 KB
Nội dung
TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN TOÁN ỨNG DỤNG VÀ TIN HỌC TIỂU LUẬN MƠN TỐN RỜI RẠC ĐỀ TÀI BÀI TOÁN LUỒNG TRÊN MẠNG HỌ VÀ TÊN MSSV NGUYỄN QUANG MINH 20206157 Hà Nội, 2021 Bài Toán Luồng Trên Mạng Tiểu Luận Toán Rời Rạc Mục lục I Giới thiệu chung II Bài toán Mở đầu Ví dụ thực tế luồng mạng Một số toán luồng mạng III Lát cắt, đường tăng luồng,định lý Ford-Fulkerson Mở đầu Bài toán luồng cực đại Định nghĩa lát cắt Định lý Ford-Fulkerson Các định lý a) Định lý luồng cực đại mạng lát cắt hẹp b) Định lý tính nguyên c) Định lý chi phí thời gian thực giải thuật d) Thuật tốn Ford-Fulkerson khơng phải thuật toán đa thức 10 IV.Thuật toán Capacity Scaling Giả mã 10 Tính đắn thuật toán Capacity Scaling 10 Thời gian tính thuật tốn Capacity Scaling V Thuật toán đường tăng ngắn Ý tưởng 11 Giả mã 11 Các kết 12 Phân tích thuật toán đường tăng ngắn 12 VI Mở rộng: Thuật toán song song tìm luồng cực đại mạng Ý tưởng thuật toán 13 Triển khai thuật toán 13 Các định lý 16 a) Định lý 16 b) Định lý 16 VIIỨng dụng VIIIMột số toán ứng dụng cụ thể Mạng với nhiều điêm phát nhiều điểm thu 17 Bài toán với khả thông qua cung đỉnh 17 Bài toán hệ thống đại diện chung 18 Các toán tối ưu rời rạc- Bài tốn luồng chi phí nhỏ 18 Bài toán ghép cặp(Matching) 18 a) Cặp ghép 18 b) Bài toán cặp ghép cực đại đồ thị hai phía 18 c) Bipartite Matching: Tính đ Bài tốn đường khơng giao cạnh (Edge Disjoint Paths) Trang Bài Toán Luồng Trên Mạng Tiểu Luận Toán Rời Rạc Bài toán độ liên kết mạng (Network Connectivity) 20 Ví dụ minh họa 20 Trang BÀI TOÁN LUỒNG TRÊN MẠNG NGUYỄN QUANG MINH Ngày 13 tháng 11 năm 2021 I Giới thiệu chung Luồng cực đại toán tối ưu đồ thị tìm ứng dụng rộng rãi thực tế lý thuyết tổ hợp Bài toán đề xuất vào đầu năm 1950 gắn liền với tên tuổi hai nhà toán học Mỹ:Ford (Lester Randolph Ford:1927-) Fulkerson(Delbert Ray Fulkerson:1924-1976) Trong lý thuyết đồ thị, luồng mạng, thường gọi tắt luồng, cách gán luồng (dòng chảy) cho cung đồ thị có hướng (trong trường hợp gọi mạng vận tải), cung có khả thơng qua, cho dung lượng luồng qua cung không vượt q khả thơng qua Ngồi ra, ta cịn có điều kiện dung lượng luồng vào nút phải dung lượng luồng khỏi nút đó, ngoại trừ trường hợp nút phát (hay nút nguồn) - nơi có dịng ra, nút thu - nơi có luồng vào Một mạng vận tải dùng để giả lập giao thơng hệ thống đường sá, dịng chảy đường ống, dòng mạch điện, tương tự di chuyển qua mạng lưới gồm nút Ta gọi mạng (network) đồ thị có hướng G(V, E), có đỉnh A khơng có cung vào gọi điểm phát (source),duy đỉnh B khơng có cung gọi đỉnh thu (sink) cung e(u, v) ∈ E gán với số không âm c(e) = c[u, v] gọi khả thơng qua cung (capacity).Để thuận tiện cho việc trình bày,ta qui ước khơng có cung (u, v) khả thơng qua c[u, v] gán Nếu có mạng G = (V, E).Ta gọi luồng (flow) f mạng G phép gán cho cung e(u,v)∈ E số thực không âm f(e) = f[u, v] gọi luồng cung e, thỏa mãn điều kiện sau : Luồng cung không vượt khả thơng qua nó: ≤ f[u, v] ≤ c[u, v] (∀(u, v) ∈ E) Với đỉnh v không trùng với đỉnh phát A đỉnh thu B,tổng luồng cung vào tổng luồng cung khỏi v: − Trong đó: Γ (v) = + Γ (v) = {w ∈ V |(v, w) ∈ E} Tiểu Luận Toán Rời Rạc Bài Toán Luồng Trên Mạng Giá trị luồng tổng luồng cung từ đỉnh phát = tổng luồng cung vào từ đỉnh thu Hình 1: Mạng với khả thông qua (1 phát,6 thu ) luồng với giá trị Khả thơng qua cịn dư (residual capacity) cạnh cf (u, v) = c(u, v) − f(u, v) Khái niệm định nghĩa mạng cịn dư (residual network), ký hiệu G f (V, Ef ), thể lượng khả thơng qua có Để ý có cung từ u tới v mạng cịn dư, khơng có cung từ u tới v mạng ban đầu Do luồng theo hướng ngược triệt tiêu lẫn nhau, giảm luồng từ v tới u tương đương với tăng luồng từ u tới v Một đường tăng (augmenting path) đường (u1 , u2 , , uk), u1 = s, uk = t,và cf (ui, ui+1) > 0) nghĩa gửi thêm luồng dọc theo đường Ví dụ: Hình mạng vận tải với nguồn s, nút thu t, bốn nút khác Luồng khả thông qua ký hiệu f /c Lưu ý mạng này, điều kiện đối xứng, khả thông qua cân luồng thỏa mãn Tổng luồng từ tới t 5, dễ thấy từ thực tế tổng luồng từ s có giá trị 5, tổng luồng vào t Ta biết khơng có luồng xuất biến nút khác Hình 2: Hình biểu thị mạng cịn dư từ luồng cho Lưu ý có khả thơng qua số cung mà khả thông qua ban đầu 0, ví dụ cung (d, c) Luồng khơng phải luồng cực đại Có cung với khả thông qua dương suốt dọc theo đường (s, a, c, t), (s, a, b, d, t) (s, a, b, d, c, t) , đường tăng Khả thông qua đường thứ min(c(s, a) − f(s, a), c(a, c), c(c, t) − f(c, t)) = min(2, 1, 1) Đường cuối không tồn mạng ban đầu, ta gửi luồng theo đường đó, ta có luồng hợp lệ Nếu mạng thực sự, có luồng có giá trị từ a tới b đồng thời với luồng có giá trị từ b tới a, ta quản lý luồng tổng Trang Tiểu Luận Tốn Rời Rạc Bài Tốn Luồng Trên Mạng Hình 3: AI Bài toán Mở đầu Bài toán đơn giản thông dụng cho luồng mạng tốn tìm luồng cực đại đồ thị cho trước, với kết mong muốn luồng tổng lớn từ điểm nguồn đến điểm thu Có nhiều tốn khác giải thuật toán luồng cực đại, chúng mơ hình hóa dạng mạng vận tải, chẳng hạn cặp ghép hai phía, tốn phân cơng cơng việc (assignment problem), tốn vận tải Trong toán luồng đa (multi-commodity flow problem), ta có nhiều điểm phát, nhiều điểm thu, nhiều loại "hàng" cần chảy từ nút phát cho trước tới nút thu cho trước Ví du, nhiều loại hàng sản xuất nhiều nhà máy, cần chuyên chở đến cho khách hàng khác qua mạng giao thơng Trong tốn luồng chi phí cực tiểu, cung u, v có chi phí cho trước k(u, v) , chi phí gửi luồng f(u, v) qua cung f(u, v).k(u, v) Mục tiêu gửi luồng có dung lượng cho trước từ nguồn tới điểm thu với chi phí thấp Trong tốn luồng tuần hồn (circulation problem), với cung (u, v), c(u, v) cịn có cận l(u, v).Mỗi cung có chi phí Thơng thường, tốn luồng tuần hoàn, điều kiện cân luồng phải áp dụng cho nút, có kết nối điểm thu ngược trở lại điểm phát Bằng cách này, ta áp đặt luồng tổng l(t, s) c(t, s) Do luồng tuần hoàn mạng nên tốn đặt tên Ví dụ thực tế luồng mạng Mạng Truyền thông Mạng điện Cơ khí Thủy lợi Tài Giao thơng Hóa học Trang Bài Toán Luồng Trên Mạng Tiểu Luận Toán Rời Rạc Một số toán luồng mạng Nhiều biến thể tốn luồng có quan hệ với với hình thức tổng quát hóa hay chuyên biệt hóa Trong đây, tốn giải lời giải cho toán cha Bài toán luồng với điều kiện hàm mục tiêu tùy ý Bài toán luồng với điều kiện tuyến tính Bài tốn luồng tuần hồn đa (Multi-commodity circulation problem) Thuật toán thời gian đa thức biết giải quy hoạch tuyến tính Bài tốn luồng đa chi phí cực tiểu Đặt tất cận Bài toán luồng chi phí cực tiểu Giải với loại hàng, thu, phát Bài toán luồng cực đại Đặt tất chi phí cực đại hóa luồng Bài toán luồng đa Đặt tất chi phí 0.Đặt tất chi phí Giải với loại hàng, thu, phát BI Lát cắt, đường tăng luồng,định lý Ford-Fulkerson Mở đầu Bài toán luồng cực đại mạng tốn tối ưu đồ thị tìm ứng dụng rộng rãi thực tế ứng dụng thú vị lý thuyết tổ hợp Bài toán đề xuất vào đầu năm 1950, gắn liền vơi tên tuổi hai nhà toán học Mỹ Ford Fulkerson Bài toán luồng cực đại ∗ Cho mạng G = (V, E) Hãy tìm luồng f mạng với giá trị luồng lớn Luồng gọi luồng cực đại mạng tốn gọi tốn tìm luồng cực đại mạng Định nghĩa lát cắt Ta gọi lát cắt(X, Y ) cách phân hoạch tập đỉnh V mạng thành hai tập rời X Y , X chứa đỉnh phát Y chứa đỉnh thu Khả thông qua lát cắt(X, Y ) tổng tất khả thơng qua cung (u, v) có u ∈ x v ∈ y Lát cắt với khả thông qua nhỏ gọi lát cắt hẹp Định lý Ford-Fulkerson Ý tưởng phương pháp Ford-Fulkerson tăng dần giá trị luồng mạng đạt cực đại Với bước, mạng G tại,chúng ta tìm đường s − t mà gửi luồng qua được, đường gọi đường tăng luồng (augmenting path).Sau tiến hành gửi luồng qua G cho luồng hợp lệ Thuật tốn kết thúc khơng cịn tìm thấy đường tăng luồng Trang Tiểu Luận Toán Rời Rạc Bài Toán Luồng Trên Mạng Giá trị luồng cực đại mạng khả thông qua lát cắt hẹp nhất.Việc chứng minh định lý Ford-Fulkerson xây dựng thuật tốn tìm luồng cực đại mạng: Giả sử f luồng mạng G(V, E).Từ mạng G(V, E) ta xây dựng đồ thị có trọng số Gf = (V, Ef ) sau: Xét cạnh e(u, v) ∈ E(c[u, v] > 0) : Nếu f[u, v] < c[u, v] ta thêm cung (u, v) vào E f với trọng số c[u, v] − f[u, v] , cung gọi cung thuận Về ý nghĩa, trọng số cung cho biết tăng luồng f cung (u, v) với lượng khơng q trọng số Xét tiếp f[u, v] > ta thêm cung (v, u) vào E f với trọng số f[u, v], cung gọi cung nghịch Về ý nghĩa, trọng số cung cho biết cịn giảm luồng f cung (u, v) lượng không trọng số Đồ thị Gf gọi đồ thị tăng luồng Hình 4: Mạng G, luồng cung(1 phát,6 thu) đồ thị tăng luồng tương ứng Giả sử P đường từ đỉnh phát A tới đỉnh thu B Gọi ∆ giá trị nhỏ trọng số cung đường P Ta tăng giá trị luồng f cách đặt: f[u, v] : = f[u, v] + ∆, (u,v) cung đường P cung thuận f[v, u] : = f[v, u] −∆ ,nếu (u, v) cung đường P cung nghịch Cịn luồng cung khác giữ nguyên Có thể kiểm tra luồng f xây dựng luồng mạng giá trị luồng f tăng thêm δ so với giá trị luồng f cũ.Ta gọi thao tác biến đổi luồng tăng luồng dọc đường P , đường P từ A tới B gọi đường tăng luồng Mạng thặng dư Mạng thặng dư chứa cung thay đổi để tăng lưu lượng thực luồng Xét G = (V, E) ⇒ mạng thặng dư Gf = (V, Ef ) đồ thị có hướng,mỗi cung (u, v) ∈ Ef có + trọng số cf (u, v) ∈ R • cf (u, v) = c(u, v) − f(u, v) (lượng băng thơng nhận thêm trước đạt đến giới hạn • cf (v, u) = f(u, v) (chiều ngược lại= lượng tối đa giảm bớt) • Nếu cf (e) = 0; bỏ qua cung e Trang Tiểu Luận Tốn Rời Rạc Bài Tốn Luồng Trên Mạng Ví dụ: Với đồ thi tăng luồng G f trên, giả sử chọn đường (1, 3, 4, 2, 5, 6) Giá trị nhỏ trọng số cung 2, ta tăng giá trị f[1, 3], f[3, 4], f[2, 5], f[5, 6] lên (do cung cung thuận) giảm giá trị f[2, 4] (do cung (4, 2) cung nghịch).Ta luồng mang giá trị Hình 5: Luồng mạng G trước sau tăng Đến ta hình dung thuật tốn tìm luồng cực đại mạng: khởi tạo luồng bất kỳ, sau tăng luồng dọc theo đường tăng luồng, khơng tìm đường tăng luồng Các bước thuật tốn tìm luồng cực đại mơ tả sau: – Bước 1:Khởi tạo: Một luồng mạng,chẳng hạn luồng (luồng cung ), sau tăng luồng dọc theo đường tăng luồng,cho tới khơng tìm đường tăng luồng – Bước 2:Lặp bước sau ∗ Tìm đường tăng luồng P luồng có ≡ tìm đường từ A tới B đồ thị tăng luồng, khơng tìm đường tăng luồng bước lặp kết thúc ∗ Tăng luồng dọc theo đường P – Bước 3:Thơng báo giá trị luồng cực đại tìm Hàm tăng luồng v = p[t]; u = t ;tang = e[t]; while (u ̸=s) if (v > 0) f[v, u]+ = tang ; else v = −v; f[u, v] = f[u, v] -tang; u = v; v = p[u]; Giả mã thuật toán Ford-Fulkerson: begin (* Khởi tạo: Bắt đầu từ luồng với giá trị ) for u ∈ V for v ∈ V f(u,v):=0; stop:=false; while not stop if then Trang Bài Toán Luồng Trên Mạng Tiểu Luận Toán Rời Rạc else stop:=true; end; Tính đắn thuật tốn Ford-Fulkerson: Nếu luồng trước tăng hợp lệ luồng sau tăng luồng hợp lệ Nếu khả thông qua cung đồ thị đầu vào nguyên giá trị luồng sau tăng lớn giá trị luồng trước tăng đơn vị Các định lý a) Định lý luồng cực đại mạng lát cắt hẹp Luồng cực đại mạng khả thông qua lát cắt hẹp nhất.Khi tìm luồng cực đại theo thuật tốn khơng có đường từ A tới B đồ thị tăng luồng.Nếu đặt tập X gồm đỉnh đến từ đỉnh phát A đồ thị tăng luồng (A ∈ X) tập Y gồm điểm cịn lại (B ∈ Y ) (X, Y ) lát cắt hẹp đó.Có thể có nhiều lát cắt hẹp nhất, ví dụ đặt tập Y gồm đỉnh đén đỉnh thu B đồ thị tăng luồng (B ∈ Y ) tập X gồm đỉnh cịn lại (X, Y ) lát cắt hẹp b) Định lý tính nguyên Nếu tất khả nang thông qua số ngun thuật tốn ln tìm luồng cực đại với tất cung số nguyên Điều chứng minh dễ ban đầu khơi tạo luồng tức cung nguyên.Mỗi lần tăng luồng lên lượng trọng số nhỏ cung đường tăng luồng số nguyên nên cuối luồng cực đại tất phải có luồng cung cung nguyên c) Định lý chi phí thời gian thực giải thuật • Giả thiết:Tất khả thông qua số nguyên khoảng từ đến C • Bất biến: Mỗi giá trị luồng f(e) khả thông qua c f (e) ln ln số ngun q trình thực thuật tốn ∗ • Định lý: Thuật tốn dừng sau khơng q val(f ) ≤ nC lần lặp • Chứng minh: Sau lần tăng luồng, giá trị luồng tăng thêm • Hệ quả:Thời gian tính thuật tốn Ford-Fulkerson O(m.n.C) • Đặc biệt C = thuật tốn địi hỏi thời gian O(n.m) Trang Bài Toán Luồng Trên Mạng Tiểu Luận Tốn Rời Rạc Thuật tốn Ford-Fulkerson khơng phải thuật toán đa thức d) Trong thuật toán Ford-Fulkerson,nếu dùng đường ngắn nhất(qua cạnh nhất) từ đỉnh phát tới đỉnh thu đồ thị tăng luồng cần n.m lần chọn đường để tìm luồng cực đại Phương pháp cải tiến:Tại bước, ta nên tìm đường tăng luồng cho giá trị tăng luồng gia tăng nhiều Nói chung với thuất toán Ford-Fulkerson, đánh giá lý thuyết bị lệch nhiều so với thực tế, với phân tích trường hợp xấu, chi phí thời gian thực thuật toán lớn Nhưng thực tế thuật tốn hoạt động nhanh hiệu IV Thuật toán Capacity Scaling Giả mã ScalingMaxFlow(V,E,s,t,c) FOR e ∈ E, f(e) ← k q q=min(k ∈ Z : ≥ C) ; ∆ = While (∆ ≥ 1) Xây dựng đồ thị Gf (∆) While (tìm đường từ P tới s đến t Gf (∆) f ← augment (f, P ) Hiệu chỉnh Gf (∆) ∆=∆/2 RETURN f Tính đắn thuật tốn Capacity Scaling • Giả thiết:Khả thông qua cung số nguyên khoảng từ đến C • Bất biến: Mọi luồng khả thơng qua suốt q trình thực thuật tốn ln ln số ngun • Tính đắn: Nếu thuật tốn kết thúc f luồng cực đại Chứng minh: – Theo tính bất biến,khi ∆ = ⇒ Gf (∆) = Gf – Pha nấc ∆ = kết thúc khơng tìm đường tăng luồng – Vậy f luồng cực đại Thời gian tính thuật tốn Capacity Scaling ⋆ Bổ đề 1: vịng lặp ngồi lặp + log2C lần Chứng minh: C ≤ ∆ < 2C, ∆ nửa sau lần lặp Trang 10 Bài Toán Luồng Trên Mạng Tiểu Luận Toán Rời Rạc ⋆ Bổ đề 2: Giả sử f luồng thời điểm kết thúc pha nấc ∆ Giá trị luồng cực đại không vượt val(f) + m(∆) Chứng minh: – Ta kết thúc pha nấc ∆ phải tìm dược lát cắt (S, T ) cho cap(S, T ) ≤ val(f) + m∆ – Gọi S tập đỉnh đạt tới từ s Gf (∆) Rõ ràng s ∈ S, t ∈/ S theo định nghĩa S : val(f) = (f(e)) − e∈S→T ≥ (f(e)) e∈T →S (c(e) − ∆) − e∈S→T = (c(e)) − e∈S→T (∆) e∈T →S (∆) − e∈S→T (∆) e∈T →S ≥ cap(S, T ) − m∆ ⋆ Bổ đề 3: Có nhiều 2m lần đường tăng luồng pha nấc ∆ – Gọi f luồng cuối pha nấc 2∆ (là pha trước pha nấc ∆ ⇒ val(f∗) ≤ val(f) + m(2∆) – Mỗi lần tăng pha nấc ∆ tăng giá trị val(f) lên ∆ • Định lý: Thuật tốn Scaling-maxflow kết thúc sau không O(m log C) lần tăng luồng cài đặt với thời gian O(m log C) V Thuật toán đường tăng ngắn Ý tưởng Tìm đường tăng luồng nhờ thực BFS(Breadth Fisrt Search) • Dễ thực • Đường tăng có cạnh Giả mã ShortestAugmentPath(V, E, s, t) FOREACH e ∈ E f(e) ← Gf ← đồ thị tăng luồng(residual graph) WHILE(tồn đường tăng) tìm đường tăng P BFS f ← augment(f, P ) Trang 11 Bài Toán Luồng Trên Mạng Tiểu Luận Toán Rời Rạc hiệu chỉnh Gf RETURN f Các kết • Bổ đề 1: Trong suốt thuật toán, độ dài đường tăng ngắn khơng bị giảm • Bổ đề 2: Sau nhiều m đường tăng ngắn nhất, độ dài đường tăng ngắn tăng ngặt • Định lý: Thuật tốn đường tăng luồng ngắn địi hỏi thời gian tính O(m n) Chứng minh: – O(m + n) thời gian để tìm đường ngắn nhờ sử dụng BFS – O(m) lần tăng đường có k cung – Nếu có đường tăng ln tìm đường tăng đơn ⇒ ≤ k < n ⇒ O(mn) lần tăng – Thời gian thuật toán O(mn(m + n)) = O (m n) Phân tích thuật tốn đường tăng ngắn – Đồ thị mức LG G = (V, E, s) ∗ Với đỉnh v, xác định l(v) độ dài (theo số cung) đường ngắn từ s đến v ∗ Gọi LG = (V, EG) đồ thị G chứa cung (v, w) ∈ E với l(w) = l(v) + ∗ Có thể tính LG với thời gian O(m + n) nhờ sử dụng BFS ∗ P đường ngắn từ s đến v G đường từ s đến v LG – Bổ đề 1: Trong suốt thuật tốn, độ dài đường tăng ngắn khơng bị giảm ′ Chứng minh: Giả sử f f luồng trước sau tăng luồng theo đường ′ ngắn Gọi L L hai đồ thị mức Gf Gf′ ∗ Chỉ có cung nghịch bổ sung vào Gf′ ∗ Đường với cung nghịch có độ dài lớn độ dài trước – Bổ đề 2: Sau nhiều m đường tăng ngắn nhất, độ dài đường tăng ngắn tăng ngặt Chứng minh: Có cung (cung có khả thơng qua bé nhất) bị loại khỏi L sau lần tăng luồng Khơng có cung thêm vào L độ dài đường ngắn tăng Trang 12 Tiểu Luận Toán Rời Rạc ngặt – Định lý: Thuật toán đường tăng luồng ngắn địi hỏi thời gian tính O(m n) ∗ O(m + n) thời gian để tìm đường ngắn nhờ sử dụng BFS ∗ O(m) lần tăng đường có k cung ∗ O(mn) lần tăng VI Mở rộng: Thuật tốn song song tìm luồng cực đại mạng Ý tưởng thuật toán Dựa thuật toán truyền thống thuật toán hoán chuyển nguồn đích, xây dựng thuật tốn song song tìm luồng cực đại Ý tưởng phương pháp thay thuật tốn truyền thống dùng vi xử lý thực công việc từ đỉnh nguồn đến đỉnh đích Trong thuật tốn song song sử dụng hai vi xử lý thực công việc song song, vi xử lý xuất phát từ đỉnh nguồn, vi xử lý xuất phát từ đỉnh đích Hai vi xử lý trình tìm đường tăng luồng gặp đỉnh trung gian t đó, cơng việc vi xử lý xử lý công việc từ đỉnh t đến nút nguồn, vi xử lý xử lý công việc từ đỉnh t đến nút đích Triển khai thuật tốn • Đầu vào:Mạng G(V, E với nguồn a, đích z, khả thông qua: C = (c ij), (i, j) ∈ G Các đỉnh G xếp theo thứ tự • Đầu ra: Luồng cực đại F = (fij), (i, j) ∈ G • Các bước: – Bước 1:Khởi tạo: P1 : Luồng xuất phát : For i:=1 to (n div 2) Trang 13 Bài Toán Luồng Trên Mạng Tiểu Luận Toán Rời Rạc For j:=1 to n if cij > then fij = Đặt nhãn tiến (↑) cho đỉnh nguồn : a(↑, ϕ, ∞) Tạo lập tập S gồm đỉnh có nhãn tiến chưa dùng để sinh nhãn tiến: S:=a Khởi gán điều kiện kết thúc Stop:=False P2: Luồng xuất phát : For i:= (n div 2)+1 to n For j:=1 to n if cij > then fij = Đặt nhãn lùi (↓) cho đỉnh nguồn : a(↓, ϕ, ∞) Tạo lập tập T gồm đỉnh có nhãn lùi chưa dùng để sinh nhãn lùi: T:=z Khởi gán điều kiện tăng luồng incflow:=False – Bước 2: Sinh nhãn P1 : Sinh nhãn tiến Trường hợp Stop=True xuất luồng cực đại; kết thúc Trường hợp incflow=True ; chuyển sang thực Bước Bước 2.1: Chọn đỉnh sinh nhãn tiến: ⋆ Trường hợp S ̸=∅ : Chọn đỉnh u ∈ S nhỏ (theo thứ tự) Loại n khỏi S, S := S/u Ký hiệu nhãn tiến u (↑ , p, a ) A tập đỉnh chưa có nhãn tiến kề với u Sang bước 2.2 ⋆ Trường hợp S = ∅, gán Stop:=True ; thông báo hệ thống biết điều kiện dừng , xuất luồng cực đại, kết thúc Bước 2.2: Gán nhãn tiến cho đỉnh chưa có nhãn tiến kề đỉnh sinh nhãn tiến u Trường hợp Stop=True xuất luồng cực đại, kết thúc Trường hợp incflow=True; chuyển sang Bước ⋆ Trường hợp A = ∅ : Quay lại Bước ⋆ Trường hợp A ̸=∅, chọn t ∈ A nhỏ nhất(theo thứ tự) Loại t khỏi A ,A := A/t Gán nhãn tiến cho t sau: Nếu (u, t) ∈ E fut < cut, đặt nhãn tiến đỉnh t (↑, u, min(a, cu,t, fu,t)) Nếu (t, u) ∈ E ftu > 0, đặt nhãn tiến đỉnh t (↑, u, min(a, ftu)) Nếu t không gán nhãn tiến , quay lại Bước 2.2 Nếu t gán nhãn tiến t có nhãn lùi, gán incflow:=True ; thơng báo cho hệ thống biết tìm đường tăng luồng, sang Bước 3, hiệu chỉnh tăng luồng, xóa nhãn Nếu t gán nhãn tiến t không gán nhãn lùi, bổ sung t vào S, S := S ∪ t quay lại Bước 2.2 P2: Sinh nhãn lùi Trường hợp Stop=True , kết thúc Trang 14 Bài Toán Luồng Trên Mạng Tiểu Luận Toán Rời Rạc Trường hợp incflow=True chuyển sang Bước Bước 2.3: Chọn đỉnh sinh nhãn lùi ⋆ Trường hợp T ̸=∅ : Chọn đỉnh v ∈ T nhỏ nhất(theo thứ tự) Loại v khỏi T , T := T /v Ký hiệu nhãn lùi v (↑, q, β B) tập đỉnh chưa có nhãn lùi kề đỉnh sinh v Sang Bước 2.4 ⋆ Trường hợp A = ∅, thông báo hệ thống biết P2 gặp điều kiện dừng, kết thúc Bước 2.4 : Gán nhãn lùi cho đỉnh chưa có nhãn lùi kề đỉnh sinh nhãn lùi v Trường hợp Stop=True, kết thúc Trường hợp incflow=True, chuyển sang Bước ⋆ Trường hợp B = ∅ : Quay lại Bước ⋆ Trường hợp B ̸=∅, chọn t ∈ B nhỏ nhất(theo thứ tự) Loại t khỏi B , B := B/t gán nhãn lùi cho t sau Nếu (t, v) ∈ E ftv < ctv, đặt nhãn lùi đỉnh t (↑, v, min(β, ctv, ftv)) Nếu (v, t) ∈ E fvt > 0, đặt nhãn lùi đỉnh t (↑, u, min(β, ftu)) Nếu t không gán nhãn lùi , quay lại Bước 2.4 Nếu t gán nhãn lùi t có nhãn tiến, gán incflow:=True ; thông báo cho hệ thống biết tìm đường tăng luồng, sang Bước 3, hiệu chỉnh tăng luồng, xóa nhãn Nếu t gán nhãn tiến t khơng gán nhãn lùi, bổ sung t vào T , T := T ∪t quay lại Bước 2.4 – Bước 3: Hiệu chỉnh tăng luồng , xóa nhãn Ta có t đinh gán nhãn tiến Bước 2.2 nhãn lùi Bước 2.4 để thuật toán dẫn đến Bước Đỉnh t có nhãn tiến (↑, p, α) nhãn lùi (β) Đặt ∆ = min(α, β) Ta hiệu chỉnh luồng f xóa nhãn sau P1: Bước 3.1: Hiệu chỉnh ngược từ t a theo nhãn tiến ■ Khởi tạo j:=t , i:=p ■ Hiệu chỉnh : Nếu cung (i, j) ∈ G, hiệu chỉnh fij = f ij + ∆ Nếu cung (j, i) ∈ G, hiệu chỉnh fij = f ij − ∆ ∗ Tịnh tiến Nếu i = a, xóa tất nhãn tiến mạng trừ đỉnh nguồn a đỉnh đích z, thơng báo hệ thống biết P1 thực việc tăng luồng, xóa nhãn tiến xong, đợi P2 xóa nhãn xong,quay lại Bước Nếu j ̸=a, đặt j:=i i:=h, với h thành phần thứ hai nhãn tiến đỉnh j Bước 3.2: Hiệu chỉnh từ t đến z theo nhãn lùi Trang 15 Bài Toán Luồng Trên Mạng Tiểu Luận Toán Rời Rạc ■ Khởi tạo: i:=t,j:=q ■ Hiệu chỉnh Nếu cung (i, j) ∈ G, hiệu chỉnh fij = fij + ∆ Nếu cung (j, i) ∈ G, hiệu chỉnh fij = fij − ∆ Bước 3.3: Tịnh tiến Nếu i = z, xóa tất nhãn lùi mạng trừ đỉnh nguồn a đỉnh đích z, thơng báo hệ thống biết P2 thực việc tăng luồng, xóa nhãn lùi xong, đợi P1 xóa nhãn xong, quay lại Bước Nếu i ̸=z, đặt i:=j j:=k, với k thành phần thứ hai nhãn lùi đỉnh I Sau quay lại Bước 3.2 Các định lý a) Định lý Nếu khả thơng qua có giá trị nguyên sau hữu hạn bước trình giải kết thúc Chứng minh: Qua bước hiệu chỉnh, giá trị luồng tăng lên đơn vị(do khả thông qua nguyên kéo theo α β nguyên dương nên ∆ = min(α, β) nguyên dương) Mặt khác giá trị luồng bị chặn tổng khả thơng qua cung khỏi đỉnh nguồn.Vì qua số hữu hạn bước trình giải kết thúc Hệ quả: Nếu khả thơng qua có giá trị hữu tỉ sau hữu hạn bước trình giải kết thúc Chứng minh: Qui địng mẫu số giá trị thông qua, giả sử mẫu số chung N, qua bước tăng luồng,giá trị luồng tăng 1/N, mặt khác giá trị luồng bị chặn tổng khả thông qua tất cung từ đỉnh nguồn.Vì qua số hữu hạn bước, trình giải kết thúc Định lý b) Cho mạng G(V, E, C), nguồn a, đích z, f luồng nhận sau kết thúc thuật tốn, f luồng cực đại Chứng minh • TH1: Thuật tốn kết thúc xuất phát từ P1 gặp điều kiện S = Φ Kí hiệu X tập tất đỉnh mang nhãn tiến, lát cắt (X, V /X) lát cắt cực tiểu, suy f luồng cực đại • TH2: Thuật toán kết thúc xuất phát từ P2 gặp điều kiện T = Φ Kí hiệu Y tập tất đỉnh mang nhãn tiến, lát cắt (V /Y, Y ) lát cắt cực tiểu, suy f luồng cực đại VII Ứng dụng Một mạng vận tải sử dụng để giả lập hệ thống có điều kiện định nghĩa Trang 16 Bài Toán Luồng Trên Mạng Tiểu Luận Toán Rời Rạc Hình dung loại đường ống nối với thành mạng Mỗi đường ống có độ rộng định, cho phép dòng chảy với lượng nước định Mỗi đường ống gặp nhau, tổng lượng nước chảy vào điểm nối phải lượng chảy từ Ta có nguồn nước, điểm phát, điểm tập trung nước, điểm thu Khi luồng cách lấy nước từ nguồn tới nút thu cho tổng lượng nước khỏi nút thu không đổi Về trực quan, tổng luồng mạng tỷ lệ nước chảy từ điểm thu Luồng so sánh với người vật liệu mạng giao thông vận tải, với điện hệ thống phân phối điện Với mạng vật lý vậy, luồng vào nút trung gian phải luồng khỏi Bài tốn luồng cực đại mạng có nhiều ứng dụng thực tế như: Bài toán xác định cường độ dòng lớn dòng vận tải hai nút đồ giao thơng, tốn tìm luồng dầu lớn bơm từ tàu chở dầu vào bể chứa hệ thống đường ống dẫn dầu Ngoài ra, ứng dụng tốn cịn để giải tốn như: Bài tốn đám cưới vùng quê, toán hệ thống đại diện chung, tốn phân nhóm sinh hoạt, tốn lập lịch cho hội nghị VIII Một số toán ứng dụng cụ thể Mạng với nhiều điêm phát nhiều điểm thu Cho n kho cần chuyển hàng s 1, s2, sn m kho nhận hàng t1, t2, tn Hãy tìm phương án chuyển hàng cho lượng hàng chuyển lớn nhất, cho biết trước số lượng hàng cần chuyển khả chứa hàng kho số hàng chuyển từ si đến tj c(i, j) *Phương pháp giải: Bài tốn đưa tốn mạng với nhiều điểm phát điểm thu Ta coi kho si điểm phát, kho nhận t j điểm thu Đồng thời đưa vào điểm phát giả s nối với tất điểm phát điểm thu giả t nối với điểm thu Giá trị c(s, si) số hàng cần chuyển kho si,và c(tj, t) khả chứa hàng kho tj Bài toán với khả thông qua cung đỉnh Hãy tìm phương án vận chuyển dầu từ bể chứa s tới bể nhận t thông qua hệ thống đường ống dẫn dầu, cho lượng dầu chuyển nhiều Cho biết trước lượng dầu lớn bơm qua đường ống qua điểm nối ống *Phương pháp giải: Xây dựng đồ thị G = (V, E), với V tập đỉnh đồ thị gồm s, t tập điểm nối, E tập cung đồ thị gồm đường ống dẫn dầu Trong G, với đỉnh v thuộc V tổng luồng vào đỉnh v không vượt khả thơng qua d(v) nó: Σf (w, v) ≤ d (v) (w ∈ V ) Để tìm luồng cực đại s t mạng ta xây dựng mạng G ′ cho: đỉnh v G tương ứng với hai đỉnh v+ v− G ′, cung (u,v) G tương ứng với cung (u−, v+) G′ cung (u, v) G′ có khả thơng qua d(v) tức khả thông qua đỉnh v G Dễ thấy luồng cực đại tức khả Trang 17 Bài Toán Luồng Trên Mạng Tiểu Luận Tốn Rời Rạc thơng qua đỉnh v G Dễ thấy luồng cực đại G ′ luồng cực đại G với khả thông qua cung đỉnh Bài toán hệ thống đại diện chung Cho tập gồm m phần tử X = z 1, z2, zm Giả sử (A1, A2, An) (B1, B2, Bn) dãy tập hợp X Dãy gồm n phần tử x 1, x2, xn gọi hệ thống đại diện chung dãy A B cho tìm hốn vị k tập 1, 2, n cho (x 1, x2, xn) đại diện phân biệt dãy (A1, A2, An) (Bk(1), Bk(2), Bk(n)) Các toán tối ưu rời rạc- Bài tốn luồng chi phí nhỏ Cho cạnh có n đỉnh Mỗi cạnh mạng có khả thơng qua c(u, v) cước phí vận chuyển p(u, v) định ứng với đơn vị hàng Cho trước lượng hàng S cần vận chuyển từ nguồn đến đỉnh đích , tìm phương án tối ưu để chi phí vận chuyển hết lượng hàng S nhỏ Bài toán ghép cặp(Matching) a) Cặp ghép Cho G = (V, E) đồ thị vô hướng Cặp ghép đồ thị G tập cạnh đồ thị đôi đỉnh chung Bài tốn cặp ghép cực đại : Tìm cặp ghép với lực lượng lớn b) Bài tốn cặp ghép cực đại đồ thị hai phía Đồ thị vô hướng G = (V, E) hai phía V phân hoạch thành tập X Y cho cạnh e ∈ E biểu diễn e = (x, y) với x ∈ X y ∈ Y Cặp ghép tập cạnh đơi khơng có đỉnh chung Bài tốn cặp ghép cực đại :Tìm cặp ghép có lực lượng lớn c) Bipartite Matching: Tính đắn ′ Định lý: Lực lượng cặp ghép cực đại G= giá trị luồng cực đại G ′ Chứng minh: Chỉ cần chứng minh G có cặp ghép lực lượng k G có luồng với giá trị k ⇒ Cho cặp ghép M có lực lượng k • Xét luồng f đẩy luồng đơn vị dọc theo k đường • f luồng có giá trị k ′ Cho f luồng giá trị k G • Từ định lý tính ngun ⇒ tìm luồng nguyên: f(e) • Gọi M= tập cạnh e từ X sang Y với f(e) = Trang 18 Tiểu Luận Toán Rời Rạc Bài Tốn Luồng Trên Mạng • Mỗi đỉnh X Y đầu mút ≤ cạnh M • |M| = k, luồng có giá trị k nên có k cạnh từ X sang Y với giá trị luồng cung Hình 6: Caption Bài tốn đường khơng giao cạnh (Edge Disjoint Paths) Định nghĩa: Hai đường gọi không giao cạnh chúng cạnh chung Bài tốn đường khơng giao cạnh Cho đồ thị có hướng G = (V, E) hai đỉnh s t, tìm số lượng lớn đường từ s đến t không giao cạnh Quy toán luồng cực đại: gán cho cạnh khả thông qua Chứng minh: Điều kiện cần: • Giả sử có k đường khơng giao cạnh P 1, , Pk • Đặt f(e) =1 e thuộc vào số đường đi; f(e) = 0, trái lại • Do đường khơng có cạnh chung nên f luồng có giá trị k Chứng minh: Điều kiện đủ: • Giả sử luồng cực đại có giá trị k • Theo định lý tính nguyên ⇒ tồn f luồng 0-1 với giá trị k • Xét cạnh (s, u)với f(s, u) = -theo điều kiện cân luồng, tồn cạnh (u, v) vớif(u, v) = - tiếp tục đạt tới t, sử dụng cạnh • Tạo k đường (không thiết đơn) khơng giao cạnh Trang 19 Tiểu Luận Tốn Rời Rạc Bài Toán Luồng Trên Mạng Bài toán độ liên kết mạng (Network Connectivity) Định nghĩa: Tập cạnh F ⊆ E gọi tách t với s đường từ s đến t qua cạnh F Liên kết mạng: Cho đồ thị có hướng G = (V, E) hai đỉnh s t, tìm số lượng cạnh cần loại bỏ để tách t với s Đường không giao cạnh Độ liên kết mạng Định lý:Số lớn đường không giao cạnh từ s đến t số nhỏ cạnh cần loại bỏ để tách t với s Chứng minh: Điều kiện đủ: • Giả sử loại bỏ F ⊆ E ngăn cách t từ s, |F | = k • Do đường từ s đến t có cạnh F , suy số lượng đường không giao cạnh không vượt k Chứng minh: Điều kiện cần • Giả sử k số lượng lớn đường khơng giao cạnh • Khi giá trị luồng cực đại k • Từ định lý Max-flow min-cut ⇒ lát cắt nhỏ (A, B ) có khả thơng qua k • Gọi F tập cạnh từ A sang B • |F | = k F tách t với s Ví dụ minh họa Cho bảng chữ nhật kích thước M × N(M, N < 100) vng Trong có số trằng, cịn lại đen Hãy chọn 2M ô đên bảng cho thoả mãn điêu kiện: ⋆ Mỗi dòng chọn ô đen ⋆ Số ô đen chọn cột chọn nhiều ô nhỏ Ta phát biểu toán dạng khác: xét mạng gồm N + M + đỉnh, gồm hai đỉnh thu phát s, t; Mđỉnh tương ứng với M dòng N đỉnh lại tương ứng với N cột bảng Đỉnh s nối với tất đỉnh tương ứng với dòng, đỉnh tương ứng với cột nối với đỉnh thu t, ô (i, j) đen ta nối đỉnh thứ i dịng với đỉnh thứ j cột Khả thơng qua cung xác định sau: • Mọi cung xuất phát từ đỉnh s có khả thơng qua • Mọi cung nối cặp đỉnh dịng cột có khả thơng qua Trang 20 Bài Toán Luồng Trên Mạng Tiểu Luận Toán Rời Rạc • Mọi cung nối với đỉnh thu t khả thơng qua thay đổi q trình thay đổi tốn luồng để thoả điều kiện thứ hai tốn, song chúng ln nhau, ban đầu khả thông qua cung Sau bước tìm luồng cực đại ta tăng khả thơng qua cung thêm đơn vị phụ thuộc vào luồng vừa tìm thoả mãn điều kiện thứ toán hay chưa Bài toán phát biểu lại sau: Tìm mạng có khả thơng qua cung đỉnh thu bé cho giá trị luồng cung chứa đỉnh phát *Phương pháp giải: • Bước 1: Ban đầu xét mạng có khả thơng qua cung chứa đỉnh thu • Bước 2: Mỗi bước tìm luồng cực đại Nếu luồng tìm thoả mãn điều kiện 1, nghĩa giá trị luồng cung chứa đỉnh phát ta dừng thuật tốn, ngược lại ta tăng khả thông qua cung thêm đơn vị quay lại bước Bài tốn khơng tồn lời giải khả thông qua cung chứa đỉnh thu N mà không tồn luồng cực đại cho giá trị luồng cung chứa đỉnh phát Trang 21 .. .Bài Toán Luồng Trên Mạng Tiểu Luận Toán Rời Rạc Mục lục I Giới thiệu chung II Bài toán Mở đầu Ví dụ thực tế luồng mạng Một số toán. .. B,tổng luồng cung vào tổng luồng cung khỏi v: − Trong đó: Γ (v) = + Γ (v) = {w ∈ V |(v, w) ∈ E} Tiểu Luận Toán Rời Rạc Bài Toán Luồng Trên Mạng Giá trị luồng tổng luồng cung từ đỉnh phát = tổng luồng. .. hai nhà toán học Mỹ Ford Fulkerson Bài toán luồng cực đại ∗ Cho mạng G = (V, E) Hãy tìm luồng f mạng với giá trị luồng lớn Luồng gọi luồng cực đại mạng toán gọi toán tìm luồng cực đại mạng Định