Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 23 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
23
Dung lượng
518,47 KB
Nội dung
CHƯƠNG BÀI TOÁN LUỒNG CỰC ĐẠI TRONG MẠNG Các khái niệm - Mạng: đồ thị có hƣớng G=(V,E), có đỉnh s khơng có cung vào gọi đỉnh phát có đỉnh t khơng có cung gọi đỉnh thu Mỗi cung e đƣợc gán với số không âm c(e) gọi khả thông qua cung e Qui ƣớc khơng có cung e c(e) = - Luồng mạng: ánh xạ f: E-> R+ , f(e) không âm gọi luồng cung e, thoả điều kiện sau: c om + Điều kiện thông qua: luồng cung không vƣợt khả thơng qua nó: 0≤f(e)≤c(e) + Điều kiện cân bằng: Tổng luồng cung vào đỉnh tổng luồng cung khỏi đỉnh Giá trị luồng: tổng luồng cung đỉnh s tổng luồng cung vào ng - co đỉnh t , gía trị gọi giá trị luồng, ký hiệu val(f) Luồng cực đại: luồng f* mạng với val(f*) lớn - Bài tốn tìm luồng cực đại có nhiều ứng dụng, ví dụ tốn giao thông: xác định cƣờng độ lớn th an - ng dịng vận tải hai nút giao thơng (khả thông qua tƣơng ứng với số xe trung bình đoạn đƣờng đơn vị thời gian), toán dẫn dầu: xác định luồng dầu du o lớn bơm từ tàu chở dầu vào bể chứa (khả thông qua tƣơng ứng với tiết diện cu Lát Cắt u ống) Lát cắt (X,X*) phân hoạch tập đỉnh V thành hai tập X X* = V\X, với s Khả thông qua lát cắt (X,X*) c(X,X*)= X, t X* c (v, w ) v w X X * Lát cắt với khả thông qua nhỏ đƣợc gọi lát cắt hẹp * Định lý 1: Giá trị luồng f mạng nhỏ khả thông qua lát cắt (X,X *) : val(f) ≤ c(X,X*), với lát cắt (X,X*), giá trị luồng cực đại khả thông qua lát cắt hẹp CuuDuongThanCong.com https://fb.com/tailieudientucntt Đồ thị Tăng Luồng, Đường Tăng Luồng Giả sử f luồng mạng G = (V,E) Ta xây dựng đồ thị Gf = (V, Ef), với tập cung Ef đƣợc xác định theo qui tắc sau: Xét e=(u,v) + Nếu f(u,v)0, (v,u) Ef với trọng số f(u,v): : giảm luồng f cung (u,v) với giá trị lớn c om f (u,v) ; cung (v,u) gọi cung nghịch Gf Gf gọi đồ thị tăng luồng đƣờng từ s đến t đồ thị tăng luồng Gf gọi đƣờng tăng luồng f cu u du o ng th an co ng Ví dụ: (Các số viết cạnh cung theo thứ tự khả thông qua luồng cung) Giả sử P=(s=v0, v1, , vk=t) đƣờng tăng luồng đồ thị tăng luồng Gf Gọi giá trị nhỏ trọng số cung đƣờng P Xây dựng luồng f’ mạng G theo qui tắc sau: f’(u,v) = f(u,v) + , (u,v) P cung thuận Gf f(u,v) - , (v,u) P cung nghịch Gf f(u,v), (u,v) P CuuDuongThanCong.com https://fb.com/tailieudientucntt Dễ dàng kiểm tra f’ luồng mạng G val(f’) = val(f) + => val(f’) > val(f) Ta gọi thủ tục biến đổi luồng f thành f’ nhƣ thủ tục tăng luồng dọc theo đƣờng P Định lý 2: Các mệnh đề dƣới tƣơng đƣơng: (i) f luồng cực đại mạng (ii) khơng tìm đƣợc đƣờng tăng luồng f; (iii) val(f)=c(X,X*) với lát cắt (X,X*) .c om Định lý sở để xây dựng thuật tốn lặp sau để tìm luồng cực đại mạng: Thuật Tốn Tìm Luồng Cực Đại (thuật tóan Ford-Fulkerson) Bắt đầu từ luồng f G (có thể luồng 0), tìm đƣờng tăng luồng P Gf , tăng ng luồng dọc theo đƣờng P ta đƣợc luồng f’ G Lặp lại việc tìm đƣờng tăng luồng với luồng 4,0 th Ví dụ: Tìm luồng cực đại mạng sau: 5,0 1,0 du o 2,0 1,0 ng 3,0 6,0 an co f’ khơng tìm đƣợc đƣờng tăng luồng luồng G đạt cực đại 6,0 u 4,0 cu Thuật toán không cần xây dựng đồ thị tƣờng minh Gf mà tìm đƣợc đƣờng tăng luồng, cách dùng thuật toán duyệt theo chiều rộng (hoặc chiều sâu) lần lƣợt gán nhãn [ p(v), d(v)] cho đỉnh v , với : p(v) đỉnh trƣớc đỉnh v đƣờng tăng luồng từ s tới v d(v): gía trị lớn tăng luồng cung (p(v), v) giảm luồng cung (v, p(v)) +p(v): cần tăng luồng theo cung (p(v), v) ; -p(v): cần giảm luồng theo cung (v, p(v)) * Thuật tốn tìm đường tăng luồng int Find_Path(){ CuuDuongThanCong.com https://fb.com/tailieudientucntt gán tất đỉnh chƣa thăm ; queue= ; queue hệ thống đại diện phân biệt hai dãy , tức điều kiện sau đƣợc thoả mãn: Ai B(i), i = 1, 2, ,n Xây dựng mạng G=(V,E) với tập đỉnh V = s, t 1,xx2, ,xn u1, u2, ,un 1v, v2, ,vn 1y, y2, ,yn đỉnh xi tƣơng ứng với tập Ai, đỉnh yi tƣơng ứng với tập Bi, phần tử uj, yj tƣơng ứng với c om phần tử zj Tập cung mạng G đƣợc xác định nhƣ sau E = (s,xi): 1≤i≤n (x i,uj): với zj Ai, 1≤i≤n, 1≤j≤m (uj,vj):1≤j≤m (v j, yi): với zj Bi, 1≤i≤n, 1≤j≤m (y i, t): 1≤i≤n ng Khả thông qua tất cung đƣợc đặt Dễ dàng thấy hệ thống đại diện co chung hai dãy tồn mạng G=(V,E) tìm đƣợc luồng với giá trị n Để xét tồn luồng nhƣ sử dụng thuật tốn tìm luồng cực đại từ s đến t mạng G=(V,E) an c) Về toán tối ƣu rời rạc th Trong mục ta trình bày thuật tốn đƣợc xây dựng dựa thuật tốn tìm luồng cực du o Xét toán tối ƣu rời rạc: ng giải tốn tối ƣu rời rạc mơ hình tốn học cho số toán tối ƣu tổ hợp f(x1,x2, ,xn) = (1) cu u với điều kiện (2) (3) aij 0,1 , i = 1, 2, , m; j=1, 2, n, i p–nguyên dƣơng, i = 1, 2, ,m Bài tốn (1)-(3) mơ hình tốn học cho nhiều toán tối ƣu tổ hợp thực tế Dƣới ta dẫn vài ví dụ điển hình Bài tốn phân nhóm sinh hoạt Có m sinh viên n nhóm sinh hoạt chuyên đề Với sinh viên i, biết aij =1, sinh viên i có nguyện vọng tham gia vào nhóm j, aij =0, ngƣợc lại, pij số lƣợng nhóm chuyên đề mà sinh viên i phải tham dự, i = 1, 2, ,m; j=1, 2, ,n CuuDuongThanCong.com https://fb.com/tailieudientucntt Trong số cách phân sinh viên vào nhóm chuyên đề mà họ có nguyện vọng tham gia đảm bảo sinh viên i phải tham gia pi nhóm, tìm cách phân phối với số ngƣời nhóm có nhiều sinh viên tham gia nhỏ đƣợc Đƣa vào biến số xij=1, sinh viên i tham gia vào nhóm j, xij=0, ngƣợc lại, i=1, 2, ,m, j=1, 2, .,n, dễ thấy mơ hình tốn học cho tốn đặt toán (1)(3) Bài toán lập lịch cho hội nghị Một hội nghị có m tiểu ban, tiểu ban cần sinh hoạt ngày c om phịng họp phù hợp với Có n phịng họp dành cho việc sinh hoạt tiểu ban Biết aij = 1, phịng họp i thích hợp với tiểu ban j, aij=0, ngƣợc lại, i=1, 2, ,m, j=1, 2, .,n Hãy bố trí phòng họp cho tiểu ban cho hội nghị kết thúc sau ng ngày làm việc co Đƣa vào biến số xij = 1, bố trí tiểu ban i làm việc phịng j, an xij=0, ngƣợc lại, th i=1, 2, ,m, j=1, 2, .,n, dễ thấy mơ hình tốn học cho tốn đặt tốn (1)(3), pi=1, i=1, 2, ,m ng Bổ đề cu u du o Bài toán (1)-(3) có phƣơng án tối ƣu Chứng minh Điều kiện cần bổ đề hiển nhiên từ tồn phƣơng án toán suy bất đẳng thức (4) đƣợc thực dƣới dạng dấu đẳng thức Để chứng minh điều kiện đủ, cần điều kiện (4) đƣợc thực tốn ln có phƣơng án Thực vậy, giả sử điều kiện (4) đƣợc thực Khi ký hiệu I+i= 1≤j≤n: aij=1, I+i≥ pi, i = 1, 2, ,m Do gọi Ii I+i, Ii =pi, i=1, 2, ,m, X* = (x*ij)mxn với thành phần đƣợc xác định theo công thức x*ij = 1, j Ii, x*ij =0, j Ii, i= 1, 2, ,m, phƣơng án toán (1)-(3) Bổ đề đƣợc chứng minh 10 CuuDuongThanCong.com https://fb.com/tailieudientucntt Do (4) điều kiện cần để toán (1)-(3) có phƣơng án, nên phần ta giả thiết điều kiện đƣợc thực Bây ta việc giải toán (1)-(3) dẫn việc giải số hữu hạn toán luồng cực đại mạng Trƣớc hết, với số nguyên dƣơng k, xây dựng mạng G(k) =(V,E) với tập đỉnh V= s ui :i=1, 2, ,m wj : j=1, 2, ,n t s điểm phát, t điểm thu, tập cung E= (s,ui):i=1, 2, .,m (ui,wj) :i=1, 2, ,m; j=1, 2, ,n (wj,t): j=1, 2, ,n Mỗi cung e E đƣợc gán với khả thông qua q(e) theo qui tắc sau: q(s,ui)=pi, i=1, 2, .m, c om q(ui,wi)=aij, i=1, 2, .m; j=1, 2, ,n; q(wj,t)=k, j=1, 2, ,n th an co ng Hình cách xây dựng mạng G(k) du o ng Hình Mạng G(k) Ký hiệu: = Bổ đề cu (1)-(3) u Bổ đề sau cho thấy mối liên hệ luồng cực đại mạng G(k) phƣơng án toán Giả sử số nguyên dƣơng k đó, luồng cực đại nguyên mạng G(k) có giá trị Khi X* = (x*ij)mxn với thành phần đƣợc xác định theo công thức x*ij = * (ui,wj), i=1, 2, .,m; j=1, 2, ,n phƣơng án toán (1)-(3) Chứng minh Thực vậy, luồng cực đại mạng có giá trị luồng nguyên nên * (s,ui)=pi, i=1, 2, .,m, * (ui,wj) 0,1, i=1, 2, .,m, j=1, 2, .,n, từ suy 11 CuuDuongThanCong.com https://fb.com/tailieudientucntt Vậy X* phƣơng án toán (1)-(3) Bổ đề đƣợc chứng minh Bổ đề Giả sử X* =(x*ij) phƣơng án tối ƣu k* giá trị tối ƣu tốn (1)-(3) Khi luồng cực đại mạng G(k*) có giá trị Chứng minh Do giá trị luồng cực đại mạng G(k*) không vƣợt , nên để chứng minh bổ đề ta cần luồng với giá trị mạng G(k*) Xây dựng luồng * theo công thức sau: c om * (s,ui) = pi, * (ui, wj) = x*ij, Dễ dàng kiểm tra đƣợc * luồng mạng G(m) có giá trị Bổ đề đƣợc chứng minh ng Bổ đề Nếu k=m luồng cực đại mạng G(m) có giá trị co Chứng minh Lập luận tƣơng tự nhƣ Bổ đề 4, ta cần luồng với giá trị mạng G(m) Thực vậy, giả sử X* = (x*ij)mxn phƣơng án tốn (1)-(3) xây dựng theo cơng thức (5) an Xây dựng luồng * theo công thức giống nhƣ chứng minh bổ đề 4, ta có luồng với giá trị th Bổ đề đƣợc chứng minh Từ bổ đề suy việc giải tốn (1)-(3) dẫn việc tìm giá trị k* nguyên dƣơng nhỏ ng cho luồng cực đại mạng G(k*) có giá trị Bổ đề cho ta thấy giá trị k* [1,m] Vì để giải du o tốn (1)-(3) ta áp dụng phƣơng pháp tìm kiếm nhị phân đoạn [1,m] để tìm giá trị k *, bƣớc cần giải tốn luồng cực đại Để giải tốn tìm luồng cực đại cu Định lý u mạng sử dụng thuật tốn đa thức nhƣ nói Từ suy kết sau Bài toán (1)-(3) giải đƣợc nhờ thuật toán đa thức với độ phức tạp tính tốn log 2m.ONF, ONF độ phức tạp tính tốn tốn tìm luồng cực đại mạng G(k) BÀI TẬP CHƢƠNG Bài Cho G=(V,E) đồ thị có hƣớng khơng có cung (s,t) Chứng minh số đƣờng nối hai đỉnh s t số đỉnh đồ thị cần loại bỏ để đồ thị khơng cịn đƣờng nối s với t Bài 12 CuuDuongThanCong.com https://fb.com/tailieudientucntt Xây dựng thuật tốn tìm tập E1 tất cung đồ thị mà việc tăng khả thông qua cung E dẫn đến tăng giá trị luồng cực đại mạng Bài Cho hai dãy số nguyên dƣơng {pi, i=1,2,…,m} {qj, j=1,2,…,n} Hãy xây dựng ma trận A={aij : i=1,2,…,m; j=1,2,…n} với phần tử j {0,1} có tổng phần tử dòng i pi , tổng phần tử cột j qj Bài Có m chàng trai, n gái k bà mối, Mỗi bà mối p (p=1,2,…,k) có danh sách L p số chàng trai cô gái số chàng trai gái nói khách hàng bà ta Bà mối p se c om duyên cho cặp trai gái khách hàng bà ta, nhƣng không đủ sức tổ chức dp đám cƣới Hãy xây dựng thuật toán vào danh sách L p, dp, p=1,2,…,k; đƣa cách tổ chức nhiều đám cƣới m chàng trai n cô gái với giúp đỡ bà mối Bài : Chuyển bi ng Cậu bé vẽ N (N