Thuật toán đường đi tăng luồng tìm luồng cực đại trên mạng hỗn hợp mở rộng

6 9 0
Thuật toán đường đi tăng luồng tìm luồng cực đại trên mạng hỗn hợp mở rộng

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

Thông tin tài liệu

Bài viết Thuật toán đường đi tăng luồng tìm luồng cực đại trên mạng hỗn hợp mở rộng xây dựng mô hình mạng hỗn hợp 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 viết là thuật toán đường đi tăng luồng tìm luồng cực đại và định lý luồng cực đại lát cắt cực tiểu tương ứng trên mạng hỗn hợp mở rộng.

Trần Quốc Chiến, Trần Ngọc Việt, Nguyễn Đình Lầu 32 THUẬT TỐN ĐƯỜNG ĐI TĂNG LUỒNG TÌM LUỒNG CỰC ĐẠI TRÊN MẠNG HỖN HỢP MỞ RỘNG AUGMENTING-PATH MAXFLOW ALGORITHM ONEXTENDED MIXED 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 đó, 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 hỗn hợp mở rộng để áp dụng mơ hình hóa tốn thực tế xác hiệu Kết viết thuật tốn đường tăng luồng tìm luồng cực đại định lý luồng cực đại lát cắt cực tiểu tương ứng mạng hỗn hợp mở rộng Abstract - Graph is a powerful mathematical tool applied in many fields 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 they depend on coming and leaving edges This paper develops a model of mixed extended network that can be applied to modelling many practical problems more exactly and effectively The main contribution of this paper is the augmenting-path maxflow algorithm and the Maxflow-Mincut theorem on extended mixed 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 đề 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 Tuy nhiên, nhiều toá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ì 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, 7] đồ thị mở rộng [8, 9, 10], báo phát triển thuật toán đường tăng luồng tìm luồng cực đại mạng hỗn hợp mở rộng Luồng cạnh mạng hỗn hợp mở rộng Cho mạng hỗn hợp mở rộng G = (V, E, ce, cv, be, bv) Giả thiết G có đỉnh nguồn s đỉnh đích t Tập giá trị Mạng hỗn hợp mở rộng Cho đồ 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 Ký hiệu R* tập số thực dương Trên đồ thị 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 {f(x, y) | (x, y)E} gọi luồng cạnh mạng G thoả mãn (i) f(x, y) ce(x, y) (x, y)E (ii) Với đỉnh z khơng phải nguồn đích  f (v, z ) =  f (z, v) ( v , z )E ( z ,v )E (iii) Với đỉnh z khơng phải nguồn đích  f (v, z ) cv(z) ( v , z )E • Định lý Cho f = {f(x, y) | (x, y)E} luồng cạnh mạng G với nguồn s đích t Khi  f (s, v) −  f (v, s ) ( s ,v )E ( v ,s )E =  f (v, t ) −  f (t, v ) ( v ,t )E ( t ,v )E Chứng minh Ta quy ước, với đỉnh x, y khơng có cạnh từ x đến y, gán f(x, y)= Ta có  f (u, v ) =  f (v, u ) Hàm chi phí cạnh be: E→R*, với be(e) chi phí phải trả để chuyển đơn vị luồng qua cạnh e uV vV Với nút vV, ký hiệu Ev tập cạnh liên thuộc nút v  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ị luồng từ tuyến e qua nút u sang tuyến e’ Bộ (V, E, ce, cv, be, bv) gọi mạng hỗn hợp mở rộng  vV uV      f (u, v ) −  f (v, u ) = vV uV uV       f (u, v ) −  f (v, u ) + vV \ s , t uV uV ISSN 1859-1531 - TẠP CHÍ KHOA HỌC VÀ CÔNG NGHỆ ĐẠI HỌC ĐÀ NẴNG, SỐ 9(82).2014 (  f (u, s ) −  f (s, u ) ) + Chứng minh Ta quy ước, với đỉnh x, y khơng có cạnh từ x đến y, gán f(x, y)= Ta có  f (u, t ) −  f (t, u ) ) = val(f) ( s ,u )E ( u ,s )E ( Theo tính chất (ii) luồng cạnh, số hạng thứ Suy =  f (s, u ) −  f (u, s ) uV =  f (u, t ) −  f (t, u ) ) = (vì vS\{s}, ( u ,s )E  f (u, t ) − ( u ,t )E vS uV vS uV  f (t, u ) ( t ,u )E  f (v, u ) −  f (u, v ) =0) uV = • Giá trị luồng vS uT  f (u, v ) +  f (u, v ) ) −( vS uS = vS uT  f (v, u ) −  f (u, v ) vS uS  f (s, u ) −  f (u, s ) ( u ,s )E gọi giá trị luồng f +  f (v, u ) −  f (u, v ) vS uT  f (v, u ) −  f (u, v ) vS uT • Bài tốn luồng cực đại: Cho mạng hỗn hợp mở rộng G = (V, E, ce, cv, be, bv) với đỉnh nguồn s đỉnh đích t Nhiệm vụ tốn tìm luồng cạnh 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ý Cho mạng hỗn hợp mở rộng G = (V, E, ce, cv, be, bv) với đỉnh nguồn s đỉnh đích t Khi tồn luồng cực đại Luồng cực đại lát cắt cực tiểu Cho mạng hỗn hợp mở rộng G = (V, E, ce, cv, be, bv) với đỉnh nguồn s đỉnh đích t Với tập S, T  V, ký hiệu tập cạnh có hướngvà cạnh vơ hướng từ S vào T (S, T), tức Nếu S, T  V phân hoạch V, tức ST = V & ST = , s S, tT, tập (S, T) gọi lát cắt (nguồn−đỉnh) G Cho f = {f(x, y) | (x, y)E} luồng cạnh mạng G Ký hiệu  f ( x, y ) ( x , y )( S ,T ) • Định lý Cho mạng hỗn hợp mở rộng G = (V, E, ce, cv, be, bv) với đỉnh nguồn s đỉnh đích t Cho f = {f(x, y) | (x, y)E} luồng cạnh mạng G (S, T) lát cắt G Khi val(f) = f(S, T)−f(T, S) vS uT = f(S, T)−f(T, S)  Cho lát cắt (S, T) Ký hiệu S(T) = {uS| vT, (u, v)(S, T)} • Định lý Cho f = {f(x, y) | (x, y)E} luồng cạnh mạng G (S, T) lát cắt G Khi đó, với S’S(T) ta có f(S, T)  cE (x, y )  c (v ) + ( x, y )( S ,T )\( S ',T ) vS ' V Chứng minh Ta có  f ( x, y ) f(S, T) = ( x , y )( S ,T ) =  f (x, y ) + ( x , y )( S ',T ) =   f (x, y ) ( x , y )( S ,T )\( S ',T )   f (x, y ) + xS ' ( x , y )({ x},T ) (S, T) = {(x, y)  E x S &y T} f(S, T) = vS uS vS uT = uV  f (v, u ) +  f (v, u ) vS uS Biểu thức ( s ,u )E  f (v, u ) −  f (u, v ) ( t ,u )E  f (s, u ) −  f (u, s ) = ( s ,u )E val(f) = ( u ,s )E uV ( s ,u )E ( u ,t )E  ( s ,u )E  f (u, s ) −  f (s, u ) ) + ( u ,s )E (  f (s, u ) −  f (u, s ) = ( t ,u )E ( u ,t )E ( 33  f (x, y ) ( x , y )( S ,T )\( S ',T ) cE (x, y )  c (v ) + ( x, y )( S ,T )\( S ',T ) vS ' V  • Khả thơng qua lát cắt Cho (S, T) lát cắt mạng mở rộng G Giá trị cap(S, T) = min{ ce(x, y ) |S’S(T)}  cv(v ) + ( x, y )( S ,T )\( S ',T ) vS ' gọi khả thông qua lát cắt (S, T) Từ định lý định lý suy • Định lý Cho f = {f(x, y) | (x, y)E} luồng cạnh mạng G (S, T) lát cắt G Khi val(f) cap(S, T) Trần Quốc Chiến, Trần Ngọc Việt, Nguyễn Đình Lầu 34 Mạng thặng dư Cho luồng cạnh f = {f(x, y) | (x, y)E} mạng hỗn hợp mở rộng G = (V, E, ce, cv, be, bv) với đỉnh nguồn s đỉnh đích t Ta định nghĩa mạng thặng dư thông qua, ký hiệu Gf, mạng có tập đỉnh V tập cung Ef hàm khả thông qua cạnh cef hàm khả thông qua đỉnh cvf sau: Kết luận: Không tồn đường tăng luồng Kết thúc (3) Thêm cạnh: Gọi u đỉnh trước v ngăn xếp Tìm đỉnh wKe(v) thỏa wM (3a) Trường hợp tồn đỉnh w: Nếu cvf(v)>0, {Đẩy w vào ngăn xếp M đưa w vào S; Nếu cvf(w)>0, đặt Với cạnh cung (u, v)  E, f(u, v) > (v, u)  Ef với khả thông qua cef(v, u) = f(u, v) Với cạnh cung (u, v)  E, ce(u, v) −f(u, v) > (u, v)  Ef với khả thông qua cef(u, v) = ce(u, v) − f(u, v) (w):=min{cef(v, w), cvf(w),(v)} Nếu cvf(w)=0, đặt (w):=min{cef(v, w)), cv(w),(v)} Với đỉnh vV, khả thông qua cvf(v)= cv(v)−  f ( x, v ) } Nếu cvf(v)=0, ( x , v )E {Nếu (w, v)E, {Đẩy w vào ngăn xếp M đưa w vào S; • Đường tăng luồng Đường tăng luồng đường có hướng mạng thặng dư thông qua Gf từ đỉnh nguồn s đến đỉnh đích t, cho ta gửi luồng dương từ s đến t Để tìm đường tăng luồng ta sử dụng thuật tốn tìm kiếm chiều sâu cải tiến mạng thặng dư Đặt (w):=min{cef(v, w),(v)} } Nếu (v, w)E& (v, u)E, {Đẩy w vào ngăn xếp M đưa w vào S; • Thuật tốn tìm kiếm chiều sâu cải biên Đặt (w):=min{cef(v, w),(v)} }  Đầu vào: Mạng Gf, đỉnh nguồn s, đỉnh đích t  Đầu ra: (i) Trường hợp tồn đường tăng luồng: Đường tăng luồng p từ s đến t (ii) Trường hợp không tồn đường tăng luồng: Tập hợp S đỉnh duyệt, tS  Ký hiệu: M ngăn xếp đỉnh duyệt S tập hợp đỉnh duyệt, Ke(v) tập hợp đỉnh kề sau v,(v) nhãn đỉnh v  Các bước: (0) Khởi tạo: Khởi tạo ngăn xếp M:= [s], S:= {s} (1) Xét đỉnh: Xét đỉnh đầu vM Nếu v=s, sang bước (2); Nếu vs vt, sang bước (3); Nếu v=t, sang bước (4); (2) Thêm cạnh nguồn: Tìm đỉnh (theo thứ tự đó)wKe(s) thỏa w M (2a) Trường hợp tồn đỉnh w: Đẩy w vào ngăn xếp M Đưa w vào S Nếu cvf(w)>0, đặt (w):=min{cef(s, w), cvf(w)} Nếu cvf(w)=0, đặt (w):=min{cef(s, w), cv(w)} Quay lại bước (1) (2b) Trường hợp không tồn đỉnh w: } Quay lại bước (1) (3b) Trường hợp không tồn đỉnh w: Đẩy v khỏi ngăn xếp M; Quay lại bước (1) (4) Đường tăng luồng: Các đỉnh ngăn xếp M theo thứ tự từ đáy đến đỉnh tạo thành đường tăng luồng với luồng tăng (t)>0 Kết thúc • Định lý Cho f = {f(x, y) | (x, y)E} luồng cạnh mạng G Khi (i) Nếu tồn đường tăng luồng từ s đến t mạng thặng dư Gf, tồn luồng g = {g(x, y) | (x, y)E} có val(g) = val(f) + (t) (ii) Nếu không tồn đường tăng luồng từ s đến t mạng thặng dư Gf, luồng f luồng cực đại Chứng minh (i) Giả sử p đường tăng luồng từ s đến t, Ta xây dựng luồng g sau: Với cạnh (x, y)p g(x, y) = f(x, y)+(t), (x, y)E có hướng ((x, y)E vơ hướng f(x, y)0) Với cạnh (x, y)p ISSN 1859-1531 - TẠP CHÍ KHOA HỌC VÀ CƠNG NGHỆ ĐẠI HỌC ĐÀ NẴNG, SỐ 9(82).2014 g(x, y) = f(x, y) Hiển nhiên g luồng G val(g) = val(f) + (t) (ii) Ký hiệu S tập đỉnh duyệt T tập đỉnh không duyệt Theo bước (1b) thuật toán: (S, T) lát cắt G Theo thuật tốn, ta có f(e)=0, e(T, S), kéo theo f(T, S)=0 (1) Đặt S’:={uS(T)|vT:(u, v)(S, T)&f(u, v)

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

Hình ảnh liên quan

Cho sơ đồ mạng hỗn hợp mở rộng ở Hình 1. - Thuật toán đường đi tăng luồng tìm luồng cực đại trên mạng hỗn hợp mở rộng

ho.

sơ đồ mạng hỗn hợp mở rộng ở Hình 1 Xem tại trang 4 của tài liệu.
Hình 10. Luồng giá trị 16 - Thuật toán đường đi tăng luồng tìm luồng cực đại trên mạng hỗn hợp mở rộng

Hình 10..

Luồng giá trị 16 Xem tại trang 6 của tài liệu.

Tài liệu cùng người dùng

Tài liệu liên quan