TẠP CHÍ KHOA HỌC VÀ CƠNG NGHỆ, ĐẠI HỌC ĐÀ NẴNG - SỐ 10(71).2013 ỨNG DỤNG THUẬT TỐN TÌM ĐƯỜNG ĐI NHANH NHẤT TÌM LUỒNG CỰC ĐẠI ĐA PHƯƠNG TIỆN TUYẾN TÍNH ĐỒNG THỜI CHI PHÍ CỰC TIỂU TRÊN MẠNG GIAO THÔNG MỞ RỘNG APPLICATION OF THE FASTEST PATH ALGORITHM TO FINDING MAXIMUM CONCURENT MULTICOMMODITY LINEAR FLOW WITH MINIMAL COST ON EXTENDED TRAFFIC NETWORK Trần Quốc Chiến Trường Đại học Sư phạm, Đại học Đà Nẵng Email: tqchien@dce.udn.vn TÓM TẮT Đồ thị mạng mở rộ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ế, … [7] Kết báo nghiên cứu thuật tốn tìm luồng cực đại đa phương tiện tuyến tính đồng thời chi phí cực tiểu mạng giao thơng mở rộng, sử dụng thuật tốn tìm đường nhanh mạng giao thông mở rộng [6] Trên sơ sở toán đối ngẫu [7], tác giả xây dựng thuật toán đưa tỉ lệ hàm mục tiêu hai toán đối ngẫu tiến đến 1, từ suy luồng cực đại đồng thời chi phí cực tiểu Đây thuật tốn tính gần với tỉ lệ xấp xỉ (1+) với dương nhỏ tùy ý Bài báo phân tích, chứng minh kết đánh giá độ phức tạp thuật tốn Chương trình thuật tốn viết ngơn ngữ Java với sở liệu mạng mở rộng cài đặt hệ quản trị sở liệu MySQL cho kết xác Từ khóa: đồ thị; mạng; luồng đa phương tiện; tối ưu; xấp xỉ ABSTRACT Extended graph and network is a powerful mathematical tool applied in many fields such as transportation, communication, informatics, economy, … [7] The main result of this paper is to design a Maximum Concurent Multicommodity Flow with Minimal Cost algorithm on extended traffic networks using the algorithm to find shortest paths on extended networks [6] On the basis of the dual linear programming problem studied in [7], the author designs the algorithm to reduce the ratio of objective values of the dual and the primal problems down to Then, it follows the concurent maximal flow with minimal cost of the origin problem This algorithm is an approximate algorithm with a (1+)-approximation ratio, where is an arbitrary positive The paper analyses, proves obtained results, as well as evaluates the running time The algorithm is coded in the programming language Java with extended network database in the database management system MySQL and gives exact result Key words: Graph; Network; Multicommodity Flow; Optimization; Approximation Đặt vấn đề Bài tốn tìm luồng cực đại đa phương tiện tuyến tính đồng thời chi phí cực tiểu mạng giao thơng mở rộng dạng tốn quy hoạch tuyến tính xây dựng cơng trình [7] Tuy nhiên, sử dụng phương pháp truyền thống quy hoạch tuyến tính gặp nhiều khó khăn tốn có nhiều loại phương tiện, nhiều ràng buộc chi phí, khả thơng hành, … Lý thuyết đồ thị mơ hình hóa tốn thành tốn tìm luồng mạng Ứng dụng làm cho việc giải toán trở nên đơn giản hiệu Vấn đề đặt cần xây dựng thuật toán tổng quát tìm luồng cực đại đa phương tiện đồng thời chi phí cực tiểu mạng giao thơng mở rộng, để áp dụng tốn cho toán thực tế phức tạp Bài viết sử dụng khái niệm, ký hiệu, mơ hình kết cơng trình [7] Thuật tốn Ký hiệu fej(a) luồng phương tiện j qua cạnh a, j = 1, ,k, aE, fvj(u,a,a‘) luồng phương tiện j cạnh a vào nút u cạnh a‘, j = 1, , k, uV, a,a‘Eu Thuật tốn tìm luồng F ={fej(a), fvj(u,e,e‘)| aE, (e,u,e‘)Bảng bV, j=1, ,k} 85 TẠP CHÍ KHOA HỌC VÀ CƠNG NGHỆ, ĐẠI HỌC ĐÀ NẴNG - SỐ 10(71).2013 Luồng F vi phạm ràng buộc khả thông qua ràng buộc chi phí Tuy nhiên, theo mục 3, từ luồng F ta nhận luồng tối ưu sau chia cho số lv Khởi tạo: fej(a)=0 aE, fvj(u,e,e‘)=0 (e,u,e‘)Bảng bV, j=1, ,k le Chọn > > (giá trị xác định phần phân tích sau) Thuật toán thực số giai đoạn, giai đoạn gồm k vòng lặp (k số phương tiện) Ở vòng lặp thứ j, j = 1, , k, giai đoạn thứ i ta chuyển d(j) đơn vị phương tiện thứ j qua luồng Việc thực số bước Xét bước thứ s Ký hiệu length s 1 i, j hàm độ dài đầu bước thứ s (định nghĩa theo biểu thức (2)) p s i, j đường ngắn từ sj đến tj theo hàm Nghĩa s 1 i, j length = b( p Đặt s i, j pis, j ) f i ,sj , f s i, j p s i, j có độ dài = min{c, d s 1 i , j }, B c khả thông pis, j , qua nhỏ cạnh nút d is, j s i, j lượng phương tiện thứ j lại cần D leis, j , lvis, j , is, j s i , j (v).cV f = f s i, j s i, j B/ B s i, j B = B Chuyển đơn vị phương tiện thứ j dọc theo p s i, j f s i, j Luồng phương tiện j thay đổi sau: fej(a) = fej(a) + fvj(u,e,e‘) = fvj(u,e,e‘) + f i ,sj f i ,sj a pis, j (e,u,e‘) & pis, j f i ,sj , i,s j = is, j1 (1+ Bis, j /B), leis, j (e) = leis,j1 (e) (1+ f i ,s j /cE(e)),e pis, j , lvis, j (v) = lvis,j1 (v) (1+ f i ,sj /cV(v)),v pis, j , 86 (v) +B i, j s s 1 s i , j (e) f i , j + e pis, j + = le s 1 i , j (e).c E (e) + eE lv s 1 i , j (v).cV (v) + vV lv s 1 i, j (v) f i ,sj vpis, j +B i , j + i , j b( s 1 s 1 D leis,j1, lvis,j1, is, j + lv s 1 i , j (v) + v pis, j s 1 pis, j ) f i ,sj f i ,sj le = s 1 i , j ( e) e pis, j + f i ,sj f i ,sj b( pis, j ) is, j = D lei , j , lvi , j , i , j + s 1 s 1 dist j leis,j1, lvis,j1,is, j f i ,sj (1) Vòng lặp thứ j giai đoạn i kết thúc sau q(i,j) bước, mà d iq, (ji , j ) = Tổng luồng gửi qua mạng vịng lặp khơng vượt q d(j) chi phí bước khơng vượt q B Giai đoạn i kết thúc, vòng lặp thứ k giai đoạn i kết thúc Hàm đối ngẫu le lv tính sau: - Hàm đối ngẫu ban đầu: le10,0 = /cE(e),e E, lv10, = /cV(v), v V - Hàm đối ngẫu đầu vòng lặp giai đoạn i hàm đối ngẫu cuối giai đoạn trước (i1) : lei0, = leiq(1i,k1, k ) , lv i0, = lviq(1i,k1, k ) - Hàm đối ngẫu đầu vòng lặp j giai đoạn i có giá trị hàm đối ngẫu cuối vịng lặp trước (j1) giai đoạn i: Sau ta hiệu chỉnh lại đại lượng khác sau: d is, j = d is, j s i , j (e).c E (e) vV s s i, j le = eE chuyển qua (trong số d(j) đơn vị cần chuyển qua vòng lặp này) Nếu Bi , j > B, ta gán lại lei0, j = leiq, (ji,1j 1) , lv i0, j = lviq, (ji,1j 1) Tương tự, 10, = /B, i0,0 Suy = iq(1i,k1, k ) , i0, j = iq, (ji,1j 1) TẠP CHÍ KHOA HỌC VÀ CÔNG NGHỆ, ĐẠI HỌC ĐÀ NẴNG - SỐ 10(71).2013 D le10,0 , lv10,0 , 10,0 lv10,0 (v).cV (v) = c eE E ( e) 1,0 (e).c E (e) + + B c vV V (v ) D(i) D (i ) (i) (i) cV (v) + B./B Thế vào (2) ta nhận với m số cạnh, n số nút mạng D(i 2) Ký hiệu lei, lvi, i, D(i), (i) hàm giá trị đại lượng cuối giai đoạn i Thuật toán dừng sau giai đoạn t, mà D(t) Phân tích thuật tốn Để đơn giản, ký hiệu lei,j thay cho leiq, (ji , j ) lviq, (ji , j ) , i,j thay cho iq, (ji , j ) Do biến le, lv ln tăng sau bước vịng lặp nên bước thứ s (s > 0) vịng lặp ta có (sử dụng (1)) = Dle s 1 i, j , lvis,j1 , is, j1 + 1 / + f s i, j D lei, j , lvi , j , i, j 0 D lei, j , lvi , j , i, j + .d(j).distj(lei,j, lvi,j, i,j) = +.d(j).dist (le D lei, j 1 , lvi, j 1 ,i, j 1 +.d(j).distj(lei,j,lvi,j,i,j) D lei, j 1 , lvi, j 1 ,i, j 1 j i,k,lvi,k, i,k) Xét tổng truy hồi k vòng lặp giai đoạn thứ i, ta có D lei, k , lvi, k , i, k k d ( j).dist (le i,k j j 1 D lei,0 , lvi,0 , i,0 + k d ( j).dist (le j i ,k , lvi ,k , i ,k ) 1 / i (i 1) i 1 (i 1) m n 1. e m n 1. e 1 / 1 Kết hợp điều kiện dừng thuật toán D(t) 1, ta có (t 1) m n 1. e D(t) 1 Suy t 1 1 ln 1 m n 1 (3) Nhận xét: Trong (t1) giai đoạn thực thuật toán trên, j = 1, , k, ta chuyển (t1).d(j) đơn vị phương tiện qua luồng Tuy nhiên, luồng chuyển vượt q khả thơng qua cạnh nút Bổ đề sau giải vấn đề Bổ đề > t 1 log1 (1 / ) Chứng minh Ban đầu, le0 = /cE(e), e E, lv = /cV(v), v V Sau (t1) giai đoạn thực hiện, ta có D(t1) < 1, tức , lvi , k ,i , k ) D lei 1, k , lvi 1, k , i 1, k + = D(0) m n 1. = m n 1. 1 D(i) 1 / 1 / i distj(lei,j,lvi,j, i,j) Mặt khác, tổng luồng q(i,j) bước thực vòng lặp j d(j), truy hồi suy Thế D(0) = (m+n+1). giả thiết 1, với i ta có f i ,sj dist j leis,j1, lvis,j1,is, j1 D leis,j1 , lvis,j1 , is, j1 D(i 1) 1 / D(i) D(i1)+ D(i)/ D(i) = m. + n. + = (m+n+1) D leis, j , lvis, j , is, j (2) Tiếp theo, ta có 1, c E ( e) + , lvi,j thay cho D(i) D(i1) + .(i) eE vV = le le t 1 (e).c E (e) + eE lv t 1 (v).cV (v) + B.t-1 < vV Suy let1(e) < 1/cE(e) e E lvt-1(v) < 1/cV(v) vV j 1 87 TẠP CHÍ KHOA HỌC VÀ CƠNG NGHỆ, ĐẠI HỌC ĐÀ NẴNG - SỐ 10(71).2013 Gọi fe(e) tổng phương tiện qua cạnh eE fv(v) tổng phương tiện qua nút vV (t1) giai đoạn thực Xét cạnh eE Giả sử trình xây dựng luồng fe(e) có cE(e) đơn vị luồng chuyển qua e qua r bước, bước chuyển gs phương tiện, g s = cE(e) Qua bước le(e) s tăng lên thừa số (1+.gs/cE(e)) Vậy qua r bước le(e) tăng lên thừa số 1 g s / c E (e) > (1+ s g s Ở ta phân tích thấy sau (t1) giai đoạn thực hiện, j = 1, , k, ta chuyển (t1).d(j) đơn vị phương tiện qua luồng Tuy nhiên để luồng chấp nhận, ta phải chia luồng chuyển qua mạng cho lượng log1 s Ta thấy, với cạnh eE, cE(e) đơn vị luồng chuyển qua e, le(e) tăng lên thừa số (1+) Tương tự, với nút vV, cV(v) đơn vị luồng chuyển qua v, lv(v) tăng lên thừa số (1+ ) Mặt khác, số lần để gửi cE(e) đơn vị luồng qua cạnh eE fe(e)/cE(e) số lần để gửi cV(v) đơn vị luồng qua nút vV fv(v)/cV(v) 1(v) lv0(v) 1 fe ( e ) / c E ( e ) fv ( v ) / cV ( v ) t 1 log1 (1 / ) Bổ đề Cho > Khi tồn cho luồng tìm thuật toán, sau chia cho log1 (1 / ) , luồng cực đại đồng thời chi phí cực tiểu với tỉ lệ xấp xỉ (1+) log1 t 1 Theo bổ đề ta có > / Thay từ (3) vào t 1 Chứng minh: Đặt = biểu thức ta < e E lvt- cE(e) log1 let 1 (e) < le0 (e) Chọn = 1 / c E ( e) = cE(e) log1 e E / c E (e ) fv(v) cV(v) log1 lvt 1 (v) < lv0 (v) 1 / cV (v) = cV(v) log1 v V / cV (v) Chia fe(e) cho lượng log1 (1 / ) e E, chia fv(v) cho lượng log1 (1 / ) v V ta nhận luồng chấp nhận 88 (1 ) ln ln ln = 1 m n 1. m n 1 1 , tỉ số 1 ln m n 1. < 1 m n 1. (1 ) ln(1 ) ln cV(v) log1 log1 v V Suy fe(e) cE(e) log1 Vậy, j = 1, , k, ta chuyển không lớn cE(e) luồng qua nút vV không lớn cV(v) Vậy,theo toán đặt ban Lúc này, hàm cạnh le hàm nút lv thỏa bất đẳng thức sau: let-1(e) le0(e) 1 t 1 d(j), luồng qua cạnh eE log1 (1 / ) đầu, ta có > / cE(e)) = (1+) = (1)1, suy (1 ) ln(1 ) (1 ) ( / 2) (1)3 Mặt khác theo định lý đối ngẫu yếu, ta có Để /