Tiểu luận môn Kỹ thuật lập trình chủ đề MAXIMUM FLOW (LUỒNG CỰC ĐẠI) Nội dung trình bày Một số khái niệm, định lý Bài toán luồng cực đại Thuật toán FordFulkerson Một số ứng dụng của mạng và luồng Báo cáo dành cho các bạn tham khảo.
MAXIMUM FLOW (LUỒNG CỰC ĐẠI) Trình bày: Nhóm 6- KHMT B Nguyễn Văn Sửu Nguyễn Đề Nguyễn Đức Nghĩa Nguyễn Đức Quê Nguyễn Thị Thu Nội dung trình bày Một số khái niệm, định lý Bài toán luồng cực đại Thuật toán Ford-Fulkerson Một số ứng dụng mạng luồng Một số khái niệm, định lý Mạng vận tải Là đồ thị có hướng, khơng có khun có trọng số G=(V,E) gồm n đỉnh, m cạnh thỏa mãn: - Mỗi cung e=(u,v)∈ E (u,v∈ V) có trọng số c(e)=c[u,v] số nguyên không âm gọi khả thông qua cung e -Có đỉnh s khơng có cung vào gọi lối vào hay đỉnh phát - Có đỉnh t khơng có cung gọi lối hay đỉnh thu mạng Một số khái niệm, định lý (tt) Trọng số 15 s Đỉnh phát 15 11 15 15 15 31 15 17 t 10 Đỉnh thu Ví dụ: hình mạng vận tải với đỉnh phát s đỉnh thu t Một số khái niệm, định lý (tt) Luồng Cho mạng G=(V,E) Luồng ϕ G phép gán cho cung e=(u,v) số thực ϕ (e)= ϕ [u,v] ≥ 0, thỏa mãn: • Luồng khơng vượt q khả cung ≤ ϕ [u,v] ≤ c[u,v], ∀ (u,v)∈ E •Nếu v ≠ s,t tổng luồng vào v tổng luồng khỏi v (v∈ V\{s,t}) Giá trị luồng tổng luồng cung khỏi s, tổng luồng vào t Một số khái niệm, định lý (tt) a c Mạng vận tải G t s b a d c Một luồng f = 6 t s b 1 d Một số khái niệm, định lý (tt) Lát cắt Lát cắt (X,Y) 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ỏ lát cắt cực tiểu Luồng f(X,Y) tổng luồng cung (u,v) với (u∈X,v∈Y) tổng luồng cung (w,z) với z∈X,w∈Y Một số khái niệm, định lý (tt) Ví dụ: Lát cắt χ=(X,Y): Khả thông qua: c(χ) = 6+7+9+2 = 24 Luồng : f(χ) = 2+(-1)+3+2+2 = Y X 2/6 1/1 3/7 3/3 1/3 4/5 3/5 2/2 2/9 Một số khái niệm, định lý (tt) Định lý Cho mạng G=(V,E), luồng f, luồng thơng qua lát cắt (X,Y) |f| a c 5 t s b G d a c t s b 1 d Một số khái niệm, định lý (tt) Định lý Cho mạng G=(V,E), luồng f, f(X,Y)≤c(X,Y) f(X,Y) = ≤ c(X,Y) = 13 G a c 5 t s b d a 5/6 c 1/3 s t 0/3 b 1/1 d ∆P = 10/10 8/9 0/8 2/4 8/8 0/1 7/10 9/9 8/8 0/1 7/9 3/3 5/5 0/6 2/10 s 4/4 2/2 10 8/8 2/2 3/9 0/9 1/5 1/6 0/1 1/2 2/7 0/1 5/5 3/3 1/12 11 9/12 t 10/10 8/9 0/8 2/4 8/8 0/1 7/10 9/9 8/8 0/1 7/9 3/3 5/5 0/6 2/10 s 4/4 2/2 10 8/8 2/2 2/9 0/9 1/5 1/6 0/1 1/2 2/7 0/1 Luồng cực đại =22 5/5 3/3 1/12 11 9/12 t Nhận xét: • Thuật tốn Ford-Fulkerson có độ phức tạp O(e) (e số cung đồ thị) lần thực • Thời gian thực thuật toán phụ thuộc vào số cạnh (e) số đỉnh (n) đồ thị Người ta gọi “phụ thuộc đa thức mạnh” Nhược điểm thuật toán FordFulkerson Dùng đường có khả Các đường đưa vào luồng chứa nhiều cung ⇒Khắc phục nhược điểm: Khi chọn đường bản, ta chọn đường ngắn theo nghĩa số cung bé (vd: sử dụng BFS để tìm đường ngắn Ví dụ 5(2) 7(2) 8(0) 7(4) 5(4) 9(6) 5(3) 7(3) Bước khởi tạo f=0 5(0) 7(0) 8(0) 7(0) 5(0) 9(0) 5(0) 7(0) Bước tăng luồng 5(0) 7(0) 8(0) 7(0) P1 = (1,2,5,6) P2 = (1,3,5,6) 5(0) P3 = (1,3,2,5,6) P4 = (1,4,6) 9(0) 5(0) 7(0) 7(0) 5(0) P4 = (1,4,6) 8(0) 7(0) 5(0) ∆P = 9(0) 5(5) 7(5) 7(0) 5(0) 8(0) 7(0) 5(0) P1 = (1,2,5,6) 9(0) 5(5) P2 = (1,3,5,6) P3= (1,3,2,5,6) 7(0) 5(0) P2 = (1,3,5,6) 8(0) 7(5) 5(5) ∆P = 9(5) 5(5) 7(0) 5(0) 8(0) P1 = (1,2,5,6) P3= (1,3,2,5,6) 5(5) 5(5) 5(4) 7(4) 8(0) 7(5) P1 = (1,2,5,6) 5(5) ∆P = 9(9) 5(5) 7(5) 4 1 8(0) 5 5(5) Đến không đường đồ thị tăng luồng nên thuật toán kết thúc 9(9) 5(5) Bước 3: Luồng cực đại fmax=14 Luồng cực đại có giá trị 14, lát cắt cực tiểu (X,Y): X = {1,2,3,5}; Y = {4,6} 5(4) 7(4) 8(0) 7(5) 5(5) 9(9) 5(5) 7(5) Bài tốn luồng cực đại có nhiều ứng dụng việc giải tốn tổ hợp Khó khăn phải xây dựng mạng tương ứng cho việc tìm luồng cực đại tương đương với việc giải toán tổ hợp đặt Bài toán đám cưới vùng quê Bài toán lập lịch cho hội nghị Bài toán phân nhóm sinh hoạt Phát biểu tốn Có m chàng trai vùng quê Đối với chàng trai ta biết cô gái mà vừa ý Hỏi tổ chức đám cưới chàng trai sánh duyên với gái mà vừa ý Giải vấn đề Ta xây dựng đồ thị với đỉnh biểu thị chàng trai cô gái, cung biểu thị vừa ý chàng trai với gái Khi ta thu đồ thị hai phía Thí dụ Có chàng trai { T1, T2, T3,T4} cô gái { G1, G2, G3,G4, G5} Sự vừa ý cho bảng sau Chàng trai Các cô gái mà chàng trai ưng ý T1 G1, G4, G5 T2 G2 T3 G2, G3,G4 T4 G2, G4 G1 1 T1 1 s T2 1 G3 1 G2 T4 1 T3 1 G4 G5 nên luồng cực đại đồ thị có giá trị Vmax = m t ... cực đại Phát biểu toán Cho mạng vận tải G = (V,E) Tìm luồng f* với giá trị luồng lớn (Luồng f* gọi luồng cực đại) Định lý Ford-Fulkerson Giá trị luồng cực đại mạng khả thông qua lát cắt cực tiểu. .. luồng 2 5 4 Đến khơng cịn đường đồ thị tăng luồng nên thuật toán kết thúc Bước 3: Luồng cực đại Luồng cực đại có giá trị 9, lát cắt cực tiểu (X,Y): X = {1,3}; Y = {2,4,5,6} 5(5) 6(2) 3(3) 6(5)... 5 5(5) Đến không đường đồ thị tăng luồng nên thuật toán kết thúc 9(9) 5(5) Bước 3: Luồng cực đại fmax=14 Luồng cực đại có giá trị 14, lát cắt cực tiểu (X,Y): X = {1,2,3,5}; Y = {4,6} 5(4) 7(4)