1. Trang chủ
  2. » Giáo án - Bài giảng

Thuật toán hoán chuyển nguồn đích tìm luồng cực đại trên mạng mở rộng

4 21 0

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Bài viết Thuật toán hoán chuyển nguồn đích 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 nhờ giảm khối lượng tính toán ở nhiều công đoạn này sẽ làm tăng đáng kể hiệu quả so với thuật toán tìm luồng cực đại trên mạng truyền thống, với ý tưởng của phương pháp là gán nhãn các đỉnh đồng thời từ đỉnh nguồn và đỉnh đích.

Trần Quốc Chiến, Trần Ngọc Việt, Nguyễn Đình Lầu 94 THUẬT TỐN HỐN CHUYỂN NGUỒN ĐÍCH TÌM LUỒNG CỰC ĐẠI TRÊN MẠNG MỞ RỘNG SOURCE-SINK ALTERNATIVE ALGORITHM FOR 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,… 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 đó, 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 nhờ giảm khối lượng tính tốn nhiều cơng đoạn làm tăng đáng kể hiệu so với thuật tốn tìm luồng cực đại mạng truyền thống, với ý tưởng phương pháp gán nhãn đỉnh đồng thời từ đỉnh nguồn đỉnh đích Kết báo thuật tốn hốn chuyển nguồn đích tìm luồng cực đại mạng mở rộng Abstract - Graph is a powerful mathematical tool applied in many fields as transportation, communication, informatics, economy, … In ordinary graph the weights of edges and vertexes are considered indepently 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 modelize many practical problems more exactly and effectively The main contribution of this paper is a source-sink alternative algorithm for finding maximal flows on extended traffic 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 đề Luồng mạng mở rộng 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 nhiên, nhiều tốn thực tế, trọng số nút không giống với đường qua nút đó, cịn phụ thuộc vào tuyến đến tuyến khỏi nút Ví dụ thời gian qua ngã tư mạng giao thông phụ thuộc vào hướng di chuyển phương tiện giao thơng: rẽ phải, thẳng hay rẽ trái, chí có hướng bị cấm Vì cần 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 Trên sở nghiên cứu toán luồng cực đại [1, 2, 3, 4, 5, 6] mạng mở rộng [7, 8, 9], báo phát triển thuật tốn hốn chuyển nguồn đích tìm luồng cực đại mạng mở rộng Cho mạng mở rộng G =(V, E, cE, cV) Giả thiết G có đỉnh nguồn s đỉnh đích t Mạng mở rộng Cho mạng đồ thị 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 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 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 Bộ (V, E, cE, cV) gọi mạng mở rộng (1) Tập giá trị {f(x,y) | (x,y)G} gọi luồng mạng G thoả mãn (i)  f(x,y)  cE(x,y) (x,y)E (ii) Với đỉnh z nguồn đích  f ( v, z ) =  f ( z , v ) ( v , z )G ( z , v )G (iii) Với đỉnh z khơng phải nguồn đích  f ( v, z )  cV(z) ( v , z )G Biểu thức v(F) =  f ( s, v ) ( s , v )G gọi giá trị luồng F • Bài tốn luồng cực đại: Cho mạng mở rộng G = (V, E, cE, cV) với đỉnh nguồn a đỉnh đích z Nhiệm vụ tốn tìm luồng có giá trị lớn Bài tốn luồng cực đại tốn quy hoạch tuyến tính Giá trị luồng bị giới hạn tổng khả thông hành cung từ đỉnh nguồn, ta khẳng định định lý sau: • Định lý 1: Với mạng mở rộng G = (V, E, cE, cV) với đỉnh nguồn a đỉnh đích z, ln ln tồn luồng cực đại Chứng minh tương tự tài liệu [1] Thuật tốn hốn chuyển nguồn đích tìm luồng cực đại mạng mở rộng + Đầu vào Mạng mở rộng G = (V, E, cE, cV) với đỉnh TẠP CHÍ KHOA HỌC VÀ CƠNG NGHỆ ĐẠI HỌC ĐÀ NẴNG - SỐ 7(80).2014 95 nguồn a đỉnh đích z Các đỉnh G xếp theo thứ tự đặt nhãn tiến đỉnh t là: prevj(t):= u; + Đầu Luồng cực đại F = {f(x, y) | (x, y)G}, tập luồng mạng G + Các bước (1) Khởi tạo cj(t):=min{ci(u), cE(u,t)−f(u,t),di(u)}, di(u) > 0; Luồng xuất phát: f(x, y):= 0, (x, y)E Các đỉnh xuất phát gán nhãn lần thứ L1 gồm thành phần: Nhãn tiến có dạng: L1(v) = [  , prev1(v), c1(v), d1(v), bit1(v)] gán nhãn lần hai L2(v) = [  , prev2(v), c2(v), d2(v), bit2(v)], với prev1(v) đỉnh liền kề trước nhãn tiến; Nhãn lùi có dạng: L1(v) = [  , prev1(v), c1(v), d1(v), bit1(v)] gán nhãn lần hai L2(v) = [  , prev2(v), c2(v), d2(v), bit2(v)], với prev1(v) đỉnh liền kề sau nhãn lùi; Đặt nhãn tiến () cho đỉnh nguồn nhãn lùi () cho đỉnh đích: a[,  , , ,1] & z[,  , , ,1] 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’ tập đỉnh gán nhãn tiến nhờ đỉnh tập S S := a , S ' :=  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’ tập đỉnh gán nhãn lùi nhờ đỉnh tập T T :=  z , T ' :=  (2) Sinh nhãn tiến (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 u khỏi S , S := S \ u Giả sử nhãn tiến u [  ,previ(u), ci(v), di(v),biti(v)], i = A tập đỉnh chưa có nhãn tiến kề đỉnh sinh nhãn tiến u Sang bước 2.2 -Trường hợp S =  S '   : Gán S := S ', S ' :=  Sang bước -Trường hợp S =  S ' =  : Kết thúc, luồng F cực đại (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 A =  : Quay lại bước 2.1 -Trường hợp A   : Chọn t  A nhỏ Loại t khỏi tập A, A := A \ t Gán nhãn tiến cho t sau: Nếu (u, t )  E, f (u, t )  cE (u, t ), biti (u) = cj(t):=min{ci(u), cE(u,t)−f(u,t)}, di(u)=0, dj(t):= cV(t)−  f ( i, t ) ; ( i , t )G bitj(t):=1, dj(t) > 0, bitj(t):=0, dj(t) = Nếu (t , u)  E, f (t , u)  đặt nhãn tiến đỉnh t là: prevj(t):= u; cj(t):=min{ci(u), f(t,u)}, dj(t):= cV(t)−  f ( i, t ) ; bitj(t):=1 ( i , t )G 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, sang bước (4) hiệu chỉnh tăng luồng Nếu t gán nhãn tiến t khơng có nhãn lùi, bổ sung t vào S’, S ' := S ' t quay lại bước 2.2 (3) Sinh nhãn lùi (3.1) Chọn đỉnh sinh nhãn lùi -Trường hợp T   : Chọn đỉnh v  T nhỏ (theo thứ tự) Loại v khỏi T , T := T \ v Giả sử nhãn lùi v [  , previ(v), ci(t), di(t), biti(t)], i = B tập đỉnh chưa có nhãn lùi kề đỉnh sinh nhãn lùi v Sang bước (3.2) - Trường hợp T =  T '   : Gán T := T ', T ' :=  Quay lại bước - Trường hợp T =  T ' =  : Kết thúc, luồng F cực đại (3.2) 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 B =  : Quay lại bước 3.1 - Trường hợp B   : Chọn t  B nhỏ Loại t khỏi B, B := B \ t Gán nhãn lùi cho t sau: Nếu (t , v)  E, f (t , v)  cE (t , v), biti (v) = đặt nhãn lùi đỉnh t là: prevj(t):= v; cj(t):=min{ci(v), cE(t,v)−f(t,v)}, di(v)=0, cj(t):=min{ci(v), cE(t,v)−f(t,v),di(v)}, di(v) > 0; dj(t):= cV(t)−  f ( i, t ) ; ( i , t )G bitj(t):=1, dj(t) > 0, bitj(t):=0, dj(t) = Nếu (v, t )  E, f (v, t )  đặt nhãn lùi đỉnh t là: prevj(t):= v; cj(t):=min{ci(v), f(v,t)}, dj(t):= cV(t)−  f ( i, t ) ; bitj(t):=1 ( i , t )G Nếu t khơng gán nhãn lùi, quay lại bước (3.2) Nếu t gán nhãn lùi t có nhãn tiến, sang bước (4) hiệu chỉnh tăng luồng Trần Quốc Chiến, Trần Ngọc Việt, Nguyễn Đình Lầu 96 Nếu t gán nhãn lùi t nhãn tiến, bổ sung t vào T’, T ' := T ' t quay lại bước (3.2) (4) Hiệu chỉnh tăng luồng Giả sử t có nhãn tiến [  , previ(t), ci(t), di(t), biti(t)] nhãn lùi [  , previ(t), ci(t), di(t), biti(t)] Ta hiệu chỉnh luồng F sau: (4.1) Hiệu chỉnh ngược từ t a theo nhãn tiến (4.1.1) Khởi tạo y:= t, x:= prev1(t), := c1(t) (4.1.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) −  (4.1.3) Tịnh tiến (i) Trường hợp x = a, sang bước (4.2) • Định lý Cho mạng mạng mở rộng G = (V, E, cE, cV) 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 Khi đó, F luồng cực đại Chứng minh tương tự tài liệu [1] • Độ phức tạp thuật tốn Giả thiết khả thơng hành cạnh khả thông hành nút 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, nên độ phức tạp lần tăng luồng là: O(E  + 2.V) Ký hiệu v* trị luồng cực đại Số lần tăng luồng nhiều v* Vì vậy, độ phức tạp thuật toán là: 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 khả thông hành nút cV Đỉnh nguồn 1, đỉnh đích (ii) Trường hợp x  a, đặt y:= x x:=h, với h thành phần thứ hai nhãn tiến đỉnh y Sau quay lại bước (4.1.2) (4.2) Hiệu chỉnh từ t đến z theo nhãn lùi (4.2.1) Khởi tạo x:= t, y:= prev1(t), := c1(t) (4.2.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: Hình Sơ đồ mạng mở rộng Xuất phát từ luồng cho hình 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) −  (4.2.3) Tịnh tiến (i) Trường hợp x = z, sang bước 4.3 (ii) Trường hợp x  z: Đặt x:= y y:=k, với k thành phần thứ hai nhãn lùi đỉnh x Sau quay lại bước (4.2.2) (4.3) Xóa tất nhãn đỉnh mạng, trừ đỉnh nguồn a đỉnh đích z Quay lại bước (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 Chứng minh Theo định lý 1, qua bước hiệu chỉnh luồng, giá trị luồng tăng lên lượng đơn vị (do cE nguyên, cV nguyên, kéo theo  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 phải kết thúc Hình Mạng xuất phát từ luồng *Đỉnh nguồn 1: [,  , , , 1] đỉnh đích 6: [,  , , , 1] Đỉnh 2: nhãn tiến [, 1, 10, 10, 1] ; Đỉnh 5: nhãn lùi [, 6, 9, 9, 1] ; Đỉnh 3: nhãn tiến [, 1, 9, 9, 1] nhãn lùi [, 4, 7, 9, 1] Đỉnh 4: nhãn tiến [, 3, 7, 10, 1] nhãn lùi [, 6, 10, 10, 1] +Kết hiệu chỉnh tăng luồng cho hình giá trị luồng v(F) = +Tương tự, kết hiệu chỉnh tăng luồng cho hình giá trị luồng v(F) = 14 TẠP CHÍ KHOA HỌC VÀ CƠNG NGHỆ ĐẠI HỌC ĐÀ NẴNG - SỐ 7(80).2014 + Kết hiệu chỉnh tăng luồng cho hình giá trị luồng v(F) = 16 97 Tiếp theo, thuật tốn hốn chuyển nguồn đích 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 cho thuật tốn TÀI LIỆU THAM KHẢO Hình Mạng có giá trị luồng v(F)= Hình Mạng có giá trị luồng v(F)= 14 Hình Mạng có giá trị luồng v(F)= 16 Đây luồng cực đại, lần sinh nhãn tiến nhãn lùi không gán nhãn [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 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 Đà nẵng, 1(13)/2006, 53-58 [3] Trần Quốc Chiến, “Thuật toán hoá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 toán hoá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 quát”, 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ế, 2021/6/2013 NXB Khoa học tự nhiên Công nghệ Hà Nội 2013 522-527 [9] 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 mạng mở rộng”, Tạp chí Khoa học & Cơng nghệ, Đại học Đà Nẵng, 1(74)/2014, 1-4 [10] Taylor, M A P., editor: Transportation and Traffic theory in the 21st Century, Pergamon Press, Amsterdam, The Netherlands, 2002 [11] Ellis L Johnson, Committee Chair, George L Nemhauser: Shortest paths and multicommodity network flow, 2002 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ế cách xác, giảm khối lượng tính tốn nhiều cơng đoạn từ làm tăng đáng kể hiệu thuật toán so với thuật toán [9], tăng luồng nút vừa có nhãn tiến vừa có nhãn lùi (BBT nhận bài: 24/03/2014, phản biện xong: 10/04/2014) ... ? ?Thuật toán hoá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. .. 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 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 Đà... (4.2) • Định lý Cho mạng mạng mở rộng G = (V, E, cE, cV) 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 Khi đó, F luồng cực đại Chứng minh tương

Ngày đăng: 02/10/2022, 15:19

Xem thêm:

HÌNH ẢNH LIÊN QUAN

Cho sơ đồ mạng mở rộng ở hình 1. - Thuật toán hoán chuyển nguồn đích tìm luồng cực đại trên mạng mở rộng
ho sơ đồ mạng mở rộng ở hình 1 (Trang 3)
Hình 3. Mạng có giá trị luồng v(F)= 7 - Thuật toán hoán chuyển nguồn đích tìm luồng cực đại trên mạng mở rộng
Hình 3. Mạng có giá trị luồng v(F)= 7 (Trang 4)

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

TÀI LIỆU LIÊN QUAN