1. Trang chủ
  2. » Tất cả

Bài toán về mạng chapter07 network

18 0 0

Đ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

CHƯƀNG 7 BÕI TOÆN Vổ MẀNG CHƯƠNG 7 BÀI TOÁN VỀ MẠNG Bùi Tiến Lên Đại học Khoa học Tự nhiên 01/01/2017 NỘI DUNG Giới Thiệu I Bài toán luồng cực đại trên mạng là một trong những bài toán tối ưu[.]

NỘI DUNG CHƯƠNG BÀI TOÁN VỀ MẠNG Bùi Tiến Lên Đại học Khoa học Tự nhiên 01/01/2017 Giới Thiệu I I Các định nghĩa mạng Định nghĩa 7.1 Bài toán luồng cực đại mạng tốn tối ưu đồ thị có ứng dụng rộng rãi lý thuyết thực tế Mạng (flow network) đồ thị có hướng N = (V , E , C) với V tập đỉnh thường gọi nút (node), E tập cạnh thường gọi cung (arc) C hàm khả Bài tốn đưa vào đầu năm 1950 gắn liền với tên tuổi hai nhà toán học Ford Fulkerson I I I Spring 2017 Graph Theory Có nút s khơng có cung vào, gọi nút phát (source) Có nút t khơng có cung ra, gọi nút thu (sink) Mỗi cung e = (u, v) ∈ E gán số thực không âm c(u, v) gọi khả thông qua (capacity) cung Spring 2017 Graph Theory Các định nghĩa mạng (cont.) Các định nghĩa luồng Định nghĩa 7.1 I Tập hợp W − (v) tập cung vào nút v I Tập hợp W + (v) tập cung nút v b s 3 a d Định nghĩa 7.2 Cho mạng N = (V , E , C, s, t), Luồng (flow) f mạng ánh xạ f : V2 → R+ (7.1) (u, v) 7→ f (u, v) thỏa mãn hai điều kiện sau t c I Điều kiện (capacity constraint): luồng cung (u, v) không vượt khả thông qua cung ≤ f (u, v) ≤ c(u, v) Hình 7.1: Mạng gồm nút, cung, đỉnh phát s đỉnh thu t Spring 2017 Graph Theory Các định nghĩa luồng (cont.) Spring 2017 Graph Theory b 1,5 Điều kiện (flow conversion): điều kiện cân luồng đỉnh v (trừ đỉnh thu đỉnh phát) tổng luồng cung vào tổng luồng cung X X f (e) = f (e) (7.3) e∈W + (x) Spring 2017 e∈W − (x) Graph Theory Các định nghĩa luồng (cont.) Định nghĩa 7.2 I (7.2) s 3,5 2,3 2,3 1,7 a 1,5 d 2,7 t c 3,3 Hình 7.2: Một luồng f mạng, số thứ cung giá trị luồng, số thứ hai cung khả thông qua Spring 2017 Graph Theory Các định nghĩa luồng (cont.) Các định nghĩa luồng (cont.) Định nghĩa 7.3 b 0,5 Cho mạng N = (V , E , C, s, t) luồng f mạng Giá trị luồng mạng định nghĩa tổng giá trị luồng cung từ đỉnh phát tổng giá trị luồng cung vào đỉnh thu X X f (N) = f (e) = f (e) (7.4) e∈W + (s) Spring 2017 s Bài toán luồng cực đại 0,3 0,7 a 0,5 t c 0,3 2,3 1,7 a 1,5 d 2,7 t c 3,3 (b) Luồng có giá trị Hình 7.3: Hai luồng khác mạng Spring 2017 Graph Theory c Cho mạng N = (V , E , C, s, t), gọi F tập hợp luồng mạng N Bài tốn tìm luồng cực đại (max flow) phát biểu qua công thức sau f s 3,5 2,3 10 Bài toán luồng cực đại (cont.) Bài toán 7.1 f = arg max (f (N) , f ∈ F ) b 1,5 0,7 (a) Luồng có giá trị e∈W − (t) Graph Theory 0,5 0,3 d s 4,4 3,4 a 3,3 1,4 5,5 t b 2,4 Hình 7.4: Luồng cực đại (7.5) Lưu ý c Nói chung, tồn vơ số luồng cực đại d 5,6 s 4,4 3,4 a d 5-x,6 3,3 1-x,4 5-x,5 t b 2+x,4 Hình 7.5: Luồng cực đại với ∀x, ≤ x ≤ Spring 2017 Graph Theory 11 Spring 2017 Graph Theory 12 Thuật tốn Ford-Fulkerson tìm luồng cực đại Đồ thị tăng luồng Cho mạng N = (V , E , C, s, t), thuật toán gồm hai bước Định nghĩa 7.4 I I I Bước khởi tạo: Luồng f bắt đầu với giá trị cung Bước lặp: I Xây dựng đồ thị tăng luồng N f I Tìm đường tăng luồng P đồ thị tăng luồng N f I Dùng đường tăng luồng P để cập nhật giá trị luồng f Bước lặp kết thúc khơng tìm đường tăng luồng f cuối luồng cực đại Cho mạng N = (V , E , C, s, t) f luồng mạng Đồ thị tăng luồng (residual network) đồ thị có hướng có trọng số Nf = (V , Ef ) với cung xây dựng sau: Xét cung (u, v) ∈ E I I I I I Spring 2017 Graph Theory 13 Đồ thị tăng luồng (cont.) b s 4,6 5,6 d 3,4 2,3 3,4 a 0,4 s 1 a Nếu < f (u, v) < c(u, v) I (u, v) ∈ E với trọng số c(u, v) − f (u, v) f I (v, u) ∈ E với trọng số f (u, v) f Các cung thuộc Nf thuộc N gọi cung thuận Các cung thuộc Nf không thuộc N gọi cung nghịch Spring 2017 Graph Theory 14 c Gọi P = (s = v0 , v1 , , vk = t) đường từ s đến t đồ thị tăng luồng Nf gọi đường tăng luồng (augmenting path) cho luồng f Gọi k trọng số cung nhỏ Cập nhật luồng f cho cung đường P Luồng cập nhật gọi f new 4,6 t 5,5 Hình 7.6: Luồng f b Nếu f (u, v) = c(u, v) (v, u) ∈ Ef với trọng số c(u, v) Đường tăng luồng 3,5 2,3 Nếu f (u, v) = (u, v) ∈ Ef với trọng số c(u, v) d 3 I f new (u, v) = f (u, v) + k (u, v) ∈ P cung thuận I f new (u, v) = f (u, v) − k (u, v) ∈ P cung nghịch Sau cập nhật ta có f new (N) = f (N) + k t Nghĩa luồng tăng thêm k đơn vị so với luồng cũ c Hình 7.7: Đồ thị tăng luồng Nf , cung thuận vẽ liền, cung nghịch vẽ gạch đứt Spring 2017 Graph Theory 15 Spring 2017 Graph Theory 16 Đường tăng luồng (cont.) s b a Minh họa thuật toán Ford-Fulkerson d 3 Cho mạng dưới, tìm luồng cực đại t s c 10 s 4+2,6 5,6 3,5 d 3,4 2-2,3 0+2,4 d 10 t a 10 c Hình 7.10: Mạng nút cung 4+2,6 t 2-2,3 3,4 a 10 Hình 7.8: Đường từ đỉnh s đến t có giá trị k = Nf b b 5,5 c Hình 7.9: Cập nhật cung luồng f nằm đường Spring 2017 Graph Theory 17 Minh họa thuật toán Ford-Fulkerson (cont.) s 0,10 b 0,4 0,2 0,8 0,10 d 0,6 a 0,9 c Spring 2017 Graph Theory Minh họa thuật toán Ford-Fulkerson (cont.) 0,10 s t 0,10 s 10 10 d a c Graph Theory 0,4 0,2 0,8 d 0,6 0,10 a c 9,9 0,10 t 9,10 Hình 7.13: Luồng cập nhật f 10 t s 10 10 Hình 7.12: Đồ thị tăng luồng đường tăng luồng Spring 2017 b 9,10 Hình 7.11: Luồng khởi tạo f b 18 b d 10 a c t Hình 7.14: Đồ thị tăng luồng đường tăng luồng 19 Spring 2017 Graph Theory 20 Minh họa thuật toán Ford-Fulkerson (cont.) s 6,10 b 0,4 0,2 6,8 d 9,10 6,6 a c 9,9 Minh họa thuật toán Ford-Fulkerson (cont.) 6,10 s t 10,10 s b d c a 10 s t 1 21 Minh họa thuật toán Ford-Fulkerson (cont.) s 10,10 4,4 0,2 6,8 9,10 d 6,6 a 9,9 c Graph Theory t 9,10 b a d 6 c 10 t Spring 2017 Graph Theory 22 Một số vấn đề với thuật toán Ford-Fulkerson Khi cài đặt thuật toán ta lưu ý điểm sau 10,10 I t 9,10 I Hình 7.19: Luồng cực đại f với giá trị cực đại 19 Spring 2017 c 9,9 10,10 Hình 7.18: Đồ thị tăng luồng khơng có đường tăng luồng Graph Theory b d Hình 7.17: Luồng cập nhật f Hình 7.16: Đồ thị tăng luồng đường tăng luồng Spring 2017 0,2 6,8 6,6 9,10 6 a 4,4 9,10 Hình 7.15: Luồng cập nhật f b 23 Đồ thị tăng luồng không? I Xây dựng đồ thị tăng luồng I Khơng xây dựng đồ thị tăng luồng Tìm đường tăng luồng nào? I Tìm đường DFS I Tìm đường BFS I Tìm đường ”tối ưu” Spring 2017 Graph Theory 24 Một số vấn đề với thuật toán Ford-Fulkerson (cont.) Một số vấn đề với thuật tốn Ford-Fulkerson (cont.) Lưu ý Ví dụ 7.1 Phải chọn đường tăng luồng cẩn thận có đường Cho mạng hình việc tăng luồng mạng theo hai đường tăng luồng P1 P2 sau: P1 , P2 , P1 , P2 , I Làm cho thuật toán chạy lâu I Làm cho thuật toán không kết thúc b s 1000 1000 a 1000 t 1000 Hình 7.20: Mạng nút cung Spring 2017 Graph Theory 25 Một số vấn đề với thuật toán Ford-Fulkerson (cont.) b s s a Graph Theory 26 Một số vấn đề với thuật toán Ford-Fulkerson (cont.) Ví dụ 7.2 b t Spring 2017 Cho mạng hình thực việc tăng luồng theo đường tăng luồng sau: P0 , P1 , P2 , P1 , P3 , P1 , P2 , P1 , P3 , t a (a) Đường tăng luồng P1 s-a-b-t (b) Đường tăng luồng P2 s-b-a-t Hình 7.21: Hai đường tăng luồng s 2 √ d 5−1 2 c b t a Spring 2017 Graph Theory 27 Spring 2017 Graph Theory 28 Một số vấn đề với thuật toán Ford-Fulkerson (cont.) Một số vấn đề với thuật toán Ford-Fulkerson (cont.) d Hình 7.22: Mạng nút c s t b a Hình 7.23: Đường tăng luồng P0 Spring 2017 Graph Theory 29 Một số vấn đề với thuật toán Ford-Fulkerson (cont.) Spring 2017 Graph Theory Một số vấn đề với thuật toán Ford-Fulkerson (cont.) d c s Spring 2017 d c t s b a Hình 7.24: Đường tăng luồng P1 Hình 7.25: Đường tăng luồng P2 31 Spring 2017 t b a Graph Theory 30 Graph Theory 32 Một số vấn đề với thuật toán Ford-Fulkerson (cont.) Cải tiến thuật toán Ford-Fulkerson Một cải tiến tính tốn đồ thị tăng luồng mở rộng Cho mạng N = (V , E , C, s, t) d I c s t I b a I Hình 7.26: Đường tăng luồng P3 Spring 2017 Graph Theory 33 Bước khởi tạo: khởi tạo đồ thị tăng luồng mở rộng Nf Bước lặp: I Tìm đường tăng luồng P đồ thị tăng luồng mở rộng Nf I Dùng đường tăng luồng P để cập nhật trọng số đồ thị tăng luồng mở rộng Nf Bước lặp kết thúc khơng tìm đường tăng luồng xác định luồng cực đại f từ đồ thị tăng luồng mở rộng cuối Nf Spring 2017 Graph Theory 34 Cải tiến thuật toán Ford-Fulkerson (cont.) Cải tiến thuật toán Ford-Fulkerson (cont.) Định nghĩa 7.5 Gọi P đường tăng luồng từ s đến t đồ thị tăng luồng mở rộng Nf (Lưu ý đường không qua cung có trọng số 0) Gọi k trọng số cung nhỏ Cập nhật trọng số cho đồ thị tăng luồng mở rộng Gọi (u, v) cung thuộc P Cho mạng N = (V , E , C, s, t) f luồng mạng Đồ thị tăng luồng mở rộng đồ thị có hướng có trọng số Nf = (V , Ef ) với cung xây dựng sau: Nếu (u, v) ∈ E I I I (u, v) ∈ Ef với trọng số c(u, v) I (v, u) ∈ Ef với trọng số Spring 2017 Graph Theory 35 Nf (u, v) = Nf (u, v) − k Nf (v, u) = Nf (v, u) + k Spring 2017 Graph Theory 36 Minh họa cải tiến thuật toán Ford-Fulkerson b s c b 5 Minh họa cải tiến thuật toán Ford-Fulkerson (cont.) t a s d 6 37 Minh họa cải tiến thuật toán Ford-Fulkerson (cont.) s a 4 Spring 2017 s t Graph Theory a 3 d Hình 7.29: Đường tăng luồng Spring 2017 t d 38 Minh họa cải tiến thuật toán Ford-Fulkerson (cont.) b Graph Theory 0 c 0 c Hình 7.28: Khởi tạo đồ thị tăng luồng Graph Theory b a Hình 7.27: Mạng nút 10 cung Spring 2017 4 0 c 3 t d Hình 7.30: Cập nhật đồ thị tăng luồng 39 Spring 2017 Graph Theory 40 Minh họa cải tiến thuật toán Ford-Fulkerson (cont.) b s a 3 b 0 c Minh họa cải tiến thuật toán Ford-Fulkerson (cont.) 6 s t 41 Minh họa cải tiến thuật toán Ford-Fulkerson (cont.) s a 5 Spring 2017 s t Graph Theory 0 a d Hình 7.33: Đường tăng luồng Spring 2017 t d 42 Minh họa cải tiến thuật toán Ford-Fulkerson (cont.) b Graph Theory 0 c 0 c Hình 7.32: Cập nhật đồ thị tăng luồng Graph Theory b a 5 d Hình 7.31: Đường tăng luồng Spring 2017 0 c 5 t d Hình 7.34: Cập nhật đồ thị tăng luồng 43 Spring 2017 Graph Theory 44 Minh họa cải tiến thuật toán Ford-Fulkerson (cont.) b s 0 a b 0 c Minh họa cải tiến thuật toán Ford-Fulkerson (cont.) 5 s t 45 Minh họa cải tiến thuật toán Ford-Fulkerson (cont.) s a Spring 2017 s t Graph Theory a 3 d Hình 7.37: Đường tăng luồng Spring 2017 t d 46 Minh họa cải tiến thuật toán Ford-Fulkerson (cont.) b 5 Graph Theory 0 0 c 0 0 c Hình 7.36: Cập nhật đồ thị tăng luồng Graph Theory b a d Hình 7.35: Đường tăng luồng Spring 2017 0 2 c t d Hình 7.38: Cập nhật đồ thị tăng luồng 47 Spring 2017 Graph Theory 48 Minh họa cải tiến thuật toán Ford-Fulkerson (cont.) b s c 3,4 2,5 5,6 Các dạng mở rộng I 5,5 t 6,6 0,3 2,4 0,3 a 4,4 d Mạng với nhiều điểm phát nhiều điểm thu (multiple sources or sinks) I Mạng với khả thông qua nút (vertex capacity) I Mạng với khả thông qua cung bị chặn hai phía 6,6 Hình 7.39: Luồng cực đại Spring 2017 Graph Theory 49 Các dạng mở rộng (cont.) s2 s1 b d 3 7 a c I t1 I Graph Theory 50 Mạng với nhiều nguồn phát s1 , s2 , , sm nhiều nguồn thu t1 , t2 , , tn biến đổi thành mạng chuẩn sau t2 Hình 7.40: Mạng gồm nguồn phát nguồn thu Spring 2017 Graph Theory Các dạng mở rộng (cont.) Spring 2017 51 Thêm vào nguồn phát giả (dummy source) S nối với tất nguồn phát si I Khả thông qua cung S s tổng khả i phát si Thêm vào nguồn thu giả (dummy sink) T nối với tất nguồn thu tj I Khả thông qua cung t T tổng khả i thu tj Spring 2017 Graph Theory 52 Các dạng mở rộng (cont.) s2 S b Các dạng mở rộng (cont.) d s1 a c t2 b s T t1 Graph Theory 53 I Các cung u u − I Graph Theory b+ s b− t a− Hình 7.43: Biến đổi mạng có nút a b bị hạn chế khả thông qua thành mạng chuẩn u− Graph Theory 54 a+ Một cung nối có khả thơng qua khả thơng qua đỉnh u Spring 2017 u+ Các dạng mở rộng (cont.) Đối với nút u bị hạn chế khả thông qua tách thành hai đỉnh u + u − Các cung vào u vào u + t Spring 2017 Mạng với nút bị hạn chế khả thông qua biến đổi sau I Hình 7.42: Mạng có nút a b bị hạn chế khả thông qua Các dạng mở rộng (cont.) I a Hình 7.41: Biến đổi mạng gồm nguồn phát nguồn thu thành mạng chuẩn gồm nguồn phát nguồn thu Spring 2017 55 Spring 2017 Graph Theory 56 Các dạng mở rộng (cont.) b [1,4] s Các dạng mở rộng (cont.) d [0,4] [0,6] [0,5] Mạng với khả thông qua cung (u, v) bị giới hạn [cmin , cmax ] biến đổi sau [0,7] t [0,4] a [2,5] c [0,6] I Thêm cung (t, s) với khả thông qua cung ∞ I Thêm vào nguồn phát S nguồn thu T I Hình 7.44: Mạng với cung bị chặn hai phía, cung có hai giá trị: giá trị thứ khả thông qua tối thiểu, giá trị thứ hai khả thông qua tối đa Spring 2017 Graph Theory 57 Các dạng mở rộng (cont.) b s S c I ∞ a t T Graph Theory 58 I Nếu giá trị luồng cực đại mạng N tồn luồng cực đại tương ứng N P e∈E cmin (e) Nếu P giá trị luồng cực đại mạng N khơng e∈E cmin (e) khơng tồn luồng cực đại tương ứng N Chứng minh Sinh viên tự chứng minh Hình 7.45: Mạng với cung bị chặn hai phía biến đổi thành mạng chuẩn Spring 2017 Graph Theory Định lý 7.1 d Spring 2017 Các dạng mở rộng (cont.) 1 Với cung (u, v) có cmin (u, v) > I Thêm cung (S, v) với khả thông qua c (u, v) I Thêm cung (u, T ) với khả thông qua c (u, v) I Cập nhật lại khả thông qua cho cung (u, v) c(u, v) = cmax (u, v) − cmin (u, v) 59 Spring 2017 Graph Theory 60 Các ứng dụng toán luồng cực đại Các định nghĩa lát cắt Bài tốn luồng cực đại có nhiều ứng dụng thực tế Có thể áp dụng để giải Định nghĩa 7.6 I Bài toán ghép cặp I Bài toán chuyển tải điện, nước hay dầu Cho mạng N = (V , E , C, s, t) I I I Một lát cắt (cut) (S, T ) phân hoạch tập đỉnh V cho s ∈ S t ∈ T Một tập cắt (cut-set) tập cung {(u, v) ∈ E |u ∈ S, v ∈ T } Khả thông qua lát cắt (S, T ) định nghĩa X c (S, T ) = c (u, v) (7.6) u∈S,v∈T I Spring 2017 Graph Theory 61 Các định nghĩa lát cắt (cont.) b s d 5 a s 3 a d 62 Cho mạng N = (V , E , C, s, t) Hãy tìm lát cắt nhỏ Sinh viên tự nghiên cứu Hình 7.46: Mạng có lát cắt (S={s,a},T={b,c,d,t}) Khả thơng qua lát cắt 17 b Graph Theory Bài toán 7.2 c Spring 2017 Bài tốn tìm lát cắt nhỏ t Lát cắt nhỏ (min cut) lát cắt có khả thơng qua nhỏ t c Hình 7.47: Mạng có lát cắt (S={s,a,c},T={b,d,t}) Khả thông qua lát cắt 14 Spring 2017 Graph Theory 63 Spring 2017 Graph Theory 64 Mối quan hệ luồng cực đại - lát cắt nhỏ Mối quan hệ luồng cực đại - lát cắt nhỏ (cont.) Cho mạng N = (V , E , C, s, t) Ta có nhận xét sau Định lý 7.2 I I Giá trị luồng f mạng nhỏ giá trị khả thông qua lát cắt (S, T ) mạng f (N) ≤ c(S, T ) (7.7) Giá trị luồng cực đại mạng không vượt khả thông qua lát cắt nhỏ mạng Spring 2017 Graph Theory 65 Giá trị luồng cực đại mạng giá trị khả thông qua lát cắt nhỏ Chứng minh Sinh viên tự chứng minh Spring 2017 Graph Theory 66 Mối quan hệ luồng cực đại - lát cắt - đường tăng luồng Mối quan hệ luồng cực đại - lát cắt - đường tăng luồng (cont.) Các mệnh đề tương đương: Định lý 7.4 (Định lý tính nguyên) Định lý 7.3 Nếu khả thông qua cung mạng số ngun luồng cực đại có giá trị nguyên f luồng cực đại Chứng minh Sinh viên đọc tài liệu [Trần and Dương, 2013] Khơng tìm đường tăng luồng P cho f Tồn lát cắt (S, T ) cho c(S, T ) = f (N) Chứng minh Sinh viên đọc tài liệu [Trần and Dương, 2013] Spring 2017 Graph Theory 67 Spring 2017 Graph Theory 68 Tài liệu tham khảo Trần, T and Dương, D (2013) Giáo trình lý thuyết đồ thị 2013 NXB Đại Học Quốc Gia TPHCM Spring 2017 Graph Theory 69 ... luồng khác mạng Spring 2017 Graph Theory c Cho mạng N = (V , E , C, s, t), gọi F tập hợp luồng mạng N Bài tốn tìm luồng cực đại (max flow) phát biểu qua công thức sau f s 3,5 2,3 10 Bài toán luồng... Theory 60 Các ứng dụng toán luồng cực đại Các định nghĩa lát cắt Bài tốn luồng cực đại có nhiều ứng dụng thực tế Có thể áp dụng để giải Định nghĩa 7.6 I Bài toán ghép cặp I Bài toán chuyển tải điện,... Cho mạng N = (V , E , C, s, t) Hãy tìm lát cắt nhỏ Sinh viên tự nghiên cứu Hình 7.46: Mạng có lát cắt (S={s,a},T={b,c,d,t}) Khả thông qua lát cắt 17 b Graph Theory Bài toán 7.2 c Spring 2017 Bài

Ngày đăng: 25/03/2023, 13:09

Xem thêm:

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

TÀI LIỆU LIÊN QUAN

w