Bài viết Thuật toán tìm luồng cực đại trên mạng mở rộng xây dựng mô hình mạng mở rộng để có thể áp dụng mô hình hóa các bài toán thực tế chính xác và hiệu quả hơn. Kết quả chính của bài báo là thuật toán Ford-Fulkerson cải biên tìm luồng cực đại trên mạng mở rộng.
Trần Quốc Chiến, Trần Ngọc Việt, Nguyễn Đình Lầu THUẬT TỐN TÌM LUỒNG CỰC ĐẠI TRÊN MẠNG MỞ RỘNG ALGORITHM FINDING MAXIMAL FLOWS ON EXTENDED TRAFFIC NETWORKS Trần Quốc Chiến1 , Trần Ngọc Việt2 , Nguyễn Đình Lầu2 Trường Đại học Sư phạm, Đại học Đà Nẵng; Email: tqchien@dce.udn.vn Trường Cao đẳng Giao thông Vận tải II; Email: trviet01@yahoo.com, launhi@gmail.com Tóm tắt – Đồ thị cơng cụ tốn học hữu ích ứng dụng nhiều lĩnh vực giao thông, truyền thông, công nghệ thông tin, kinh tế Cho đến nay, đồ thị xét đến trọng số cạnh, đỉnh cách độc lập, độ dài đường tổng trọng số cạnh đỉnh đường Tuy nhiên, thực tế, trọng số đỉnh không giống với đường qua đỉnh đó, mà cịn phụ thuộc vào cạnh đến cạnh khỏi đỉnh Bài viết xây dựng mơ hình mạng mở rộng để áp dụng mơ hình hóa tốn thực tế xác hiệu Kết báo thuật tốn Ford-Fulkerson cải biên tìm luồng cực đại mạng mở rộng Abstract – A graph is a powerful mathematical tool applied in many fields such as transportation, communication, informatics, economy In an ordinary graph the weights of edges and vertexes are considered independently where the length of a path is the sum of weights of the edges and the vertexes on this path However, in many practical problems, weights at a vertex are not the same for all paths passing this vertex, but depend on coming and leaving edges The paper develops a model of extended network that can be applied to modelling many practical problems more exactly and effectively The main contribution of this paper is the revised Ford-Fulkerson algorithm finding maximal flows on extended networks Từ khóa – đồ thị; mạng; luồng; luồng cực đại; thuật toán Key words – Graph; Network; Flow; Maximal Flow; Algorithm Đặt vấn đề Hàm chi phí nút bV : V×Ev ×Ev ×R∗ , với bV (u, e, e ) chi phí phải trả để chuyển đơn vị phương tiện từ tuyến e qua nút u sang tuyến e Bộ (V, E, cE , cV , bE , bV ) gọi mạng mở rộng Cho p đường từ nút u đến nút v qua cạnh ei , i = 1, , h+1, nút ui , i = 1, , h, sau: Mạng luồng mạng cơng cụ tốn học hữu ích ứng dụng nhiều lĩnh vực giao thông, truyền thông, công nghệ thông tin, kinh tế, Cho đến mạng cổ điển xét đến trọng số tuyến nút cách độc lập, độ dài đường đơn tổng trọng số cạnh nút đường Tuy p = [u, e1 , u1 , e2 , u2 , , eh , uh , eh+1 , v] nhiên, nhiều toán thực tế, trọng số nút khơng giống với đường qua nút đó, mà cịn Định nghĩa chi phí lưu hành đơn vị phương tiện qua phụ thuộc vào tuyến đến tuyến khỏi nút Ví dụ đường p, ký hiệu b(p), theo công thức sau: thời gian qua ngã tư mạng giao thông phụ thuộc vào h+1 h hướng di chuyển phương tiện giao thông: rẽ phải, b (p) = bE (ei ) + bV (ui , ei , ei+1 ) (1) thẳng hay rẽ trái, chí có hướng bị cấm Vì cần xây i=1 i=1 dựng mơ hình mạng mở rộng để áp dụng mơ hình hóa tốn thực tế xác hiệu Luồng mạng mở rộng Trên sở nghiên cứu toán luồng cực đại [1, 2, Cho mạng mở rộng G = (V, E, cE , cV , bE , bV ) Giả 3, 4, 5, 6] đồ thị mở rộng [7, 8], báo phát triển thuật tốn Ford-Fulkerson cải biên tìm luồng cực đại mạng thiết G có đỉnh nguồn s đỉnh đích t Tập giá trị mở rộng f(x, y)|(x, y) ∈ G Mạng mở rộng Cho mạng đồ thị hỗn hợp G = (V, E) với tập nút V tập cạnh E Các cạnh có hướng vơ hướng Có nhiều loại phương tiện lưu hành mạng Những cạnh vô hướng biểu diễn tuyến hai chiều, phương tiện tuyến ngược hướng lưu hành chia sẻ khả thông hành tuyến Trên mạng cho hàm sau gọi luồng mạng G thoả mãn (i) ≤ f(x, y) ≤ cE (x, y) ∀(x, y) ∈ G (ii) Với đỉnh z nguồn đích f (v, z) = (v,z)∈G f (z, v) (z,v)∈G Hàm khả thông hành cạnh cE : E → R∗ , với cE (e) khả thông hành cạnh e ∈ E (iii) Với đỉnh z khơng phải nguồn đích Hàm khả thông hành nút cV : V → R∗ , với cV(u) khả thông hành nút u ∈ V f (v, z) cV (z) (v,z)∈G Biểu thức Hàm chi phí cạnh bE : E → R∗ , với bE (e) chi phí phải trả để chuyển đơn vị phương tiện qua cạnh e Lưu v (F) = f (s, v) ý với tuyến hai chiều chi phí hai hướng có (s,v)∈G thể khác Với nút v ∈ V, ký hiệu Ev tập cạnh liên thuộc nút v gọi giá trị luồng F TẠP CHÍ KHOA HỌC VÀ CÔNG NGHỆ, ĐẠI HỌC ĐÀ NẴNG - SỐ 1(74).2014.QUYỂN II • Bài toán luồng cực đại: (i) (u, v) cạnh có hướng từ u đến v Nếu biti (u) = f(u, v) < cE (u, v), đặt nhãn đỉnh v Cho mạng mở rộng G = (V, E, cE , cV , bE , bV ) với đỉnh sau: nguồn s đỉnh đích t prevj (v) := u; Nhiệm vụ tốn tìm luồng có giá trị lớn cj (v) := min{ci (u), cE (u, v) − f(u, v)}, di (u) = 0, Bài toán luồng cực đại toán quy hoạch tuyến tính Giá trị luồng bị giới hạn tổng khả thông hành cj (v) := min{ci (u), cE (u, v) − f(u, v), di (u)}, cung từ đỉnh nguồn, ta khẳng di (u) > 0; định định lý sau: Định lý Với mạng mở rộng G = (V, E, cE , cV , bE , bV ) với đỉnh nguồn s đỉnh đích t, luôn tồn luồng cực đại dj (v) := cV (v) − f (i, v); (i,v)∈G bitj (v) := 1, dj (v) > 0, bitj (v) := 0, dj (v) = Thuật toán Ford-Fulkerson mở rộng (ii) (v, u) cạnh có hướng từ v đến u Nếu f(v, u) > 0, + Đầu vào Mạng mở rộng G = (V, E, cE , cV , bE , bV ) đặt nhãn đỉnh v sau: với đỉnh nguồn s đỉnh đích t prevj (v) := u; cj (v) := min{ci (u), f(v, u)}, Các đỉnh G xếp theo thứ tự f (i, v); bitj (v) := dj (v) := cV (v) − + Đầu Luồng cực đại F = f(x, y)|(x, y) ∈ G (i,v)∈G + Các bước (iii) (u, v) cạnh vô hướng Nếu f(v, u) > 0, đặt nhãn đỉnh v giống trường hợp (ii) Luồng xuất phát: f(x, y) := 0, ∀(x, y) ∈ G Nếu f(v, u) = f(u, v) ≥ 0, đặt nhãn đỉnh v giống Các đỉnh, xuất phát từ đỉnh nguồn, trường hợp (i) gán nhãn lần thứ L1 gồm thành phần L1 (v) = Nếu v không gán nhãn thì, quay lại bước (2.2) [prev1 (v), c1 (v), d1 (v), bit1 (v)] gán nhãn Nếu v gán nhãn v = t, sang bước hiệu chỉnh lần hai L2 (v) = [prev2 (v), c2 (v), d2 (v), bit2 (v)] tăng luồng (3) Đặt nhãn cho đỉnh nguồn Nếu v gán nhãn v = t, thêm v vào S , S := S ∪ {v}, quay lại bước (2.2) L1 (s) = [ , ∞, ∞, 1] (3) Hiệu chỉnh tăng luồng Tạo lập tập S gồm đỉnh có nhãn chưa Giả sử t có nhãn [prev1 (t), c1 (t), d1 (t), bit1 (t)] Ta dùng để sinh nhãn, S tập đỉnh gán nhãn nhờ hiệu chỉnh luồng F sau: đỉnh tập S Khởi đầu (3.1) Khởi tạo (1) Khởi tạo S = {s}, S := (2) Sinh nhãn (2.1) Chọn đỉnh sinh nhãn • Trường hợp S = : Chọn đỉnh u ∈ S nhỏ (theo thứ tự đó) Loại u khỏi S, S := S\{u} Giả sử nhãn cuối u [previ (u), ci (v), di (v), biti (v)], i = Ký hiệu A tập đỉnh chưa có nhãn lần kề đỉnh sinh nhãn u Qua bước (2.2) • Trường hợp S = S = : Gán S := S S := Quay lại bước (2.1) • Trường hợp S = S = : luồng F cực đại Kết thúc (2.2) Gán nhãn cho đỉnh chưa có nhãn kề đỉnh sinh nhãn y := t, x := prev1 (t), δ := c1 (t) (3.2) Hiệu chỉnh (i) Trường hợp (x, y) cạnh có hướng từ x đến y: đặt f(x, y) := f(x, y) + δ (ii) Trường hợp (y, x) cạnh có hướng từ y đến x: đặt f(y, x) := f(y, x) − δ (iii) Trường hợp (x, y) cạnh vô hướng: Nếu f(x, y) ≥ f(y, x) = 0, đặt f(x, y) := f(x, y) + δ Nếu f(y, x) > 0, đặt: f(y, x) := f(y, x) − δ • Trường hợp A = : Quay lại bước (2.1) • Trường hợp A = : Chọn v ∈ A nhỏ (theo thứ (3.3) Tịnh tiến lùi tự) Loại v khỏi A, A := A\ {v} Ký hiệu j số (i) Trường hợp x = s: Xoá tất nhãn đỉnh lần gán nhãn, j = tương ứng với nhãn lần mạng, trừ đỉnh nguồn s, quay lại bước (2) nhãn lần Ta thiết lập nhãn Lj (v) đỉnh v theo trường hợp sau: (ii) Trường hợp x = s: Đặt y := x Trần Quốc Chiến, Trần Ngọc Việt, Nguyễn Đình Lầu Nếu y có nhãn L2 (y), đặt x := prev2 (y) xóa nhãn L2 (y); Nếu y khơng có nhãn L2 (y), đặt x := prev1 (y) Bảng 2: Khả thông mút Đỉnh cV ∞ 10 10 ∞ Sau quay lại bước (3.2) Chứng minh tương tự tài liệu [1] ta nhận định lý sau Xuất phát từ luồng cho hình 2: Định lý Nếu khả thông qua cạnh khả thơng qua đỉnh số ngun, sau hữu hạn bước trình giải kết thúc Định lý Nếu khả thông qua cạnh khả thơng qua đỉnh số hữu tỉ, sau hữu hạn bước trình giải kết thúc Định lý (tính thuật tốn Ford-Fulkerson cải biên) Cho mạng mạng mở rộng G = (V, E, cE , cV , bE , bV) với đỉnh nguồn s đỉnh đích t, F = f(x, y)|(x, y) ∈ G luồng nhận kết thúc thuật toán tìm luồng cực đại Khi đó, F luồng cực đại • Độ phức tạp thuật tốn Hình 2: Luồng giá trị Kết sinh nhãn cho Bảng 3: Bảng 3: Kết sinh nhãn lần Đỉnh L1 [ ,∞,∞,1] [1,10,10,1] [1,9,9,1] [3,7,10,1] [2,7,9,1] [4,7,∞,1] L2 Giả thiết khả thông qua cạnh khả thông qua đỉnh số nguyên Ở bước lặp tìm đường tăng luồng ta phải duyệt qua nhiều |E| cung để hiệu chỉnh luồng ta phải duyệt qua nhiều 2.|V| cung đường tăng luồng Như độ phức tạp lần tăng luồng O(|E| + 2.|V|) Ký hiệu v∗ trị luồng cực đại Kết hiệu chỉnh tăng luồng cho Hình giá trị Số lần tăng luồng nhiều v∗ Vì độ phức tạp ∗ luồng v(F) = thuật toán O(v (|E| + 2.|V|)) Ví dụ Cho sơ đồ mạng mở rộng Hình Mạng có nút, cạnh có hướng cạnh vô hướng Khả thông hành cạnh cE cho Bảng khả thông hành nút cV cho Bảng Đỉnh nguồn 1, đỉnh đích Trong tốn tìm luồng cực đại, tạm thời chưa sử dụng chi phí cạnh bE chi phí đỉnh bV Hình 1: Sơ đồ mạng mở rộng Hình 3: Luồng giá trị Bảng 4: Kết sinh nhãn lần Đỉnh L1 [ , ∞, ∞,1] [1,10,10,1] [1,2,2,1] L2 [2,7,9,1] [5,7,∞,1] Bảng 1: Khả thông hành cạnh Cạnh (1,2) (1,3) (2,3) (2,5) (3,4) (3,5) (4,6) (4,5) (5,6) cE 10 7 10 Kết hiệu chỉnh tăng luồng cho Hình giá trị luồng v(F) = 14 Hình 4: Luồng giá trị 14 TẠP CHÍ KHOA HỌC VÀ CÔNG NGHỆ, ĐẠI HỌC ĐÀ NẴNG - SỐ 1(74).2014.QUYỂN II Kết sinh nhãn cho Bảng 5: Bảng 5: Kết sinh nhãn lần Đỉnh L1 , ∞, ∞1] [1,3,3,1] [1,2,2,1] L2 [2,2,2,1] [3,2,2,1] [5,2,∞,1] Kết hiệu chỉnh tăng luồng cho Hình giá trị luồng v(F) = 16 Hình 5: Luồng giá trị 16 Đây luồng cực đại, lần sinh nhãn tiếp theo, đỉnh không gán nhãn Kết luận Bài viết xây dựng mơ hình mạng mở rộng để áp dụng mơ hình hóa tốn thực tế xác hiệu Tiếp theo, thuật tốn Ford-Fulkerson cải biên tìm luồng cực đại mạng mở rộng xây dựng Cuối cùng, ví dụ cụ thể trình bày để minh họa thuật tốn FordFulkerson cải biên Tài liệu tham khảo [1] Trần Quốc Chiến, Bài tốn tìm luồng cực đại mạng, Đề tài NCKH cấp Bộ, mã số B2005-16-34 [2] Trần Quốc Chiến, “Thuật tốn hốn chuyển nguồn đích tìm luồng cực đại (1)”, Tạp chí Khoa học & Cơng nghệ, Đại học Đà Nẵng, 1(13)/2006, 53-58 [3] Trần Quốc Chiến, “Thuật tốn hốn chuyển nguồn đích tìm luồng cực đại (2)”, Tạp chí Khoa học & Cơng nghệ, Đại học Đà Nẵng, 3(15)4(16)/2006, 77-82 [4] Trần Quốc Chiến, “Thuật tốn đích hướng nguồn tìm luồng cực đại”, Tạp chí Khoa học & Công nghệ, Đại học Đà Nẵng, 4(21)/2007, 1-6 [5] Trần Quốc Chiến, Hồ Xn Bình, “Thuật tốn song song tìm luồng cực đại”, Tạp chí Khoa học & Cơng nghệ, Đại học Đà Nẵng, 5(22)/2007, 37-42 [6] Trần Quốc Chiến, “Thuật tốn hốn chuyển nguồn đích có trọng số tìm luồng cực đại”, Tạp chí Khoa học & Cơng nghệ, Đại học Đà Nẵng, 3(26)/2008, 99-105 [7] Trần Quốc Chiến, “Thuật tốn tìm đường ngắn đồ thị tổng qt”, Tạp chí Khoa học & Cơng nghệ, Đại học Đà Nẵng, 12(61)/2012, 16-21 [8] Trần Quốc Chiến, Nguyễn Mậu Tuệ, Trần Ngọc Việt, “Thuật tốn tìm đường ngắn đồ thị mở rộng” Proceeding of the 6th National Conference on Fundamental and Applied Information Technology Research (FAIR), Kỷ yếu Hội nghị Khoa học Quốc gia lần thứ VI “Nghiên cứu ứng dụng CNTT”, Huế, 20-21/6/2013 NXB Khoa học tự nhiên Công nghệ Hà Nội 2013 522-527 (BBT nhận bài: 25/12/2013, phản biện xong: 02/01/2014) ... (tính thuật toán Ford-Fulkerson cải biên) Cho mạng mạng mở rộng G = (V, E, cE , cV , bE , bV) với đỉnh nguồn s đỉnh đích t, F = f(x, y)|(x, y) ∈ G luồng nhận kết thúc thuật tốn tìm luồng cực đại. .. Chiến, Bài tốn tìm luồng cực đại mạng, Đề tài NCKH cấp Bộ, mã số B2005-16-34 [2] Trần Quốc Chiến, ? ?Thuật toán hoán chuyển nguồn đích tìm luồng cực đại (1)”, Tạp chí Khoa học & Công nghệ, Đại học Đà... ? ?Thuật tốn hốn chuyển nguồn đích tìm luồng cực đại (2)”, Tạp chí Khoa học & Công nghệ, Đại học Đà Nẵng, 3(15)4(16)/2006, 77-82 [4] Trần Quốc Chiến, ? ?Thuật tốn đích hướng nguồn tìm luồng cực đại? ??,