Trong các công trình 2,3,4,5 của chúng tôi và công trình 13 của Naveen Garg, Jochen Könemann đã xây dựng các bài toán tìm luồng cực đại đa hàng hóa, tìm luồng cực đại đa hàng hóa đồng thời và tìm luồng cực đại đa hàng hóa đồng thời chi phí cực tiểu. Các công trình này chỉ xét trên mạng giao thông bình thường, nghĩa là mạng giao thông chỉ xét đến khả năng thông hành của cạnh và chi phí cạnh mà chưa xét đến khả năng thông hành của đỉnh và chi phí tại mỗi đỉnh.
Các cơng trình nghiên cứu, phát triển ứng dụng CNTT-TT Tập V-1, Số 11 (31), tháng 6/2014 Thuật toán song song phân luồng tuyến tính tối ưu mạng giao thông mở rộng Parallel Algorithm to Divide Optimal Linear Flow on Extended Traffic Networks Nguyễn Đình Lầu, Trần Quốc Chiến Lê Mạnh Thạnh Abstract: Sequential algorithm to divide optimal linear flow on extended traffic network has been used in the project of Da Nang city, namely "Dividing traffic flow in Da Nang city" Furthermore, when sequential algorithms are applied to divide flow, a problem arises as there are a great number of roads and a growing number of the new routes built that leads to a huge number of variables (up to thousands of variables) on extended traffic network So to process faster as well as take advantage of multicore architecture, to process data with large scale with good results that requires the construction of parallel algorithm [6,7,8,9,10,11,12] In this paper we build parallel algorithm to divide optimal linear flow on extended traffic network The results in this paper are basically systematized and proven Keywords: processor, algorithm, maximun flow, optimal, parallel I GIỚI THIỆU Trong cơng trình [2,3,4,5] chúng tơi cơng trình [13] Naveen Garg, Jochen Kưnemann xây dựng tốn tìm luồng cực đại đa hàng hóa, tìm luồng cực đại đa hàng hóa đồng thời tìm luồng cực đại đa hàng hóa đồng thời chi phí cực tiểu Các cơng trình xét mạng giao thơng bình thường, nghĩa mạng giao thông xét đến khả thơng hành cạnh chi phí cạnh mà chưa xét đến khả thông hành đỉnh chi phí đỉnh Trong cơng trình [1,10] định nghĩa đồ thị mở rộng, tức đồ thị có thêm chi phí đỉnh từ xây dựng thuật tốn song song tìm đường ngắn đồ thị mở rộng Dựa vào đồ thị mở rộng định nghĩa mạng giao thơng mở rộng tìm đường ngắn mạng giao thông mở rộng Trong thực tế 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 Thuật tốn phân luồng tuyến tính tối ưu mạng giao thông mở rộng giải cải tiến so với [2,3,4,5,13], [2,3,4,5,13] giải cho mạng giao thơng bình thường (khơng có khả thơng hành đỉnh chi phí đỉnh) Hơn tốn phân luồng tuyến tính tối ưu phát triển từ thuật tốn tìm luồng cực đại tuyến tính đồng thời chi phí cực tiểu, cịn [2,3,4,5,13] tốn nghiên cứu mức cao tìm luồng cực đại tuyến tính đồng thời chi phí cực tiểu mạng giao thơng bình thường Tuy nhiên chúng tơi thực nghiệm thuật tốn phân luồng tuyến tính tối ưu mạng giao thông mở rộng áp dụng cho tuyến đường thành phố Đà nẵng (khảo sát hai Quận) thời gian cho kết gần 100 phút, điều nẩy sinh vấn đề khảo sát thêm Quận khác, tuyến đường ngày bổ sung, áp dụng cho thành phố lớn thành phố Đà Nẵng chắn thời gian xử lý lớn, chí thuật tốn khơng xử lý - 15 - Các cơng trình nghiên cứu, phát triển ứng dụng CNTT-TT Vấn đề đòi hỏi chúng tơi phải xây dựng thuật tốn song song nhằm giảm thời gian tính tốn so với thuật tốn Bài báo gồm phần chính, thứ xây dựng thuật toán tuần tự, thứ hai xây dựng thuật toán song song tương ứng, cuối kết luận Các kết báo hệ thống chứng minh II THUẬT TỐN TÌM LUỒNG CỰC ĐẠI ĐỒNG THỜI CHI PHÍ GIỚI HẠN Trong phần định nghĩa mạng giao thông mở rộng xây dựng thuật tốn tìm luồng cực đại đồng thời chi phí cực tiểu II.1 Mạng giao thô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 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 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ới tuyến hai chiều chi phí hai hướng khác Với nút v∈V, ký hiệu Ev tập tất cạnh vào nút v từ nút v Tập V-1, Số 11 (31), tháng 6/2014 h +1 b(p) = ∑ bE (ei ) + i =1 h ∑b i =1 V (ui , ei , ei +1 ) (1) II.2 Phát biểu tốn luồng cực đại tuyến tính đồng thời chi phí cực tiểu Cho mạng giao thông mở rộng G = (V, E, cE, cV, bE, bV) Giả thiết G có k cặp nút nguồn-đích (sj, tj), cặp gán loại phương tiện j, j=1, …, k Ký hiệu Πj tập hợp đường từ sj đến tj k G, j = 1, …, k, đặt Π = ∪Π j Với đường p j =1 ∈ Πj, j=1, …, k, ký hiệu biến x(p) luồng phương tiện loại j lưu hành dọc theo đường p Ký hiệu Πe tập hợp đường Π qua cạnh e, ∀e ∈ E Ký hiệu Πv tập hợp đường Π qua nút v, ∀v ∈ V Mỗi loại phương tiện j có yêu cầu lưu hành d(j) đơn vị phương tiện từ nút nguồn sj đến nút đích tj, ∀j = 1, , k Cho giới hạn chi phí B Nhiệm vụ tốn tìm số λ lớn cho tồn luồng chuyển λ.d(j) đơn vị phương tiện j qua luồng, ∀j = 1, , k Đồng thời, tổng chi phí luồng khơng vượt q B Bài tốn biểu diễn mơ hình qui hoạch tuyến tính sau: { } Tìm hệ x ( p ) | p ∈ ∏ j , j = 1, , k thỏa λ →max ∑ x( p ) ≤ cE(e), ∀e ∈ E ∑ x( p ) ≤ cV(v), ∀v ∈ V ∑ x( p ) 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’ ≥ λ.d(j), ∀j = 1, …, k p∈Π e p∈Π v Bộ (V, E, cE, cV, bE, bV) gọi mạng giao thô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 p∈Π j ∑ b( p).x( p ) p = [u, e1, u1, e2, u2, …, eh, uh, eh+1, v] p∈Π Định nghĩa chi phí lưu hành đơn vị phương tiện qua đường p, ký hiệu b(p), theo công thức sau: ≤ B x ≥ 0, λ ≥ - 16 - (P) Các cơng trình nghiên cứu, phát triển ứng dụng CNTT-TT Bài toán qui hoạch tuyến tính đối ngẫu với (P), gọi (D), xây dựng sau: cạnh e∈E gán biến đối ngẫu le(e), nút v∈V gán biến đối ngẫu lv(v), phương tiện j=1, , k gán biến đối ngẫu z(j) biến đối ngẫu ϕ gán với ràng buộc chi phí Bài toán (D) phát biểu sau: D(le, lv, ϕ)= Việc chứng minh bổ đề lập luận tương tự [2, 3, 4, 5, 13] II.3 Thuật toán tìm luồng cực đại tuyến tính đồng thời chi phí cực tiểu Ký hiệu fej(a) luồng phương tiện j qua cạnh a, j = 1, ,k, a∈E 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, ∑ c (e ).le(e ) + ∑ c (v ).lv(v ) +B.ϕ e∈E E v∈V V u∈V, a,a‘∈Eu →min ∑ le(e) + ∑ lv(v) +b(p).ϕ≥z(j),∀j=1 k,∀p∈ Π e∈p Tập V-1, Số 11 (31), tháng 6/2014 Thuật tốn tìm luồng (D) F = {fej(a), fvj(u,e,e‘)| ∀a∈E, v∈ p k ∑ d ( j ).z ( j ) ∀(e,u,e‘)∈Bảng bV, j=1, ,k} ≥1 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 E phần II báo này, từ luồng F ta nhận luồng tối ưu sau chia cho số Khởi tạo: fej(a)=0 ∀a∈E, fvj(u,e,e‘)=0 ∀(e,u,e‘)∈Bảng bV, j=1, ,k j =1 le, lv, z,ϕ ≥ Bây giờ, 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 Chọn ε > δ > (giá trị ε δ xác định phần phân tích sau) p = [u, e1, u1, e2, u2, …, eh, uh, eh+1, v] Ta định nghĩa độ dài đường p, ký hiệu length(p), phụ thuộc biến le, lv ϕ theo công thức sau: h +1 h i =1 i =1 length(p) = ∑ le(ei ) + ∑ lv (ui ) + b(p) φ h +1 h = ∑ [ϕ bE (ei ) + le (ei )] + ∑ [ϕ bV (u i , ei , ei +1 ) + lv (u i ) ] i =1 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 i =1 Vòng lặp thứ j giai đoạn i kết thúc sau q(i,j) (2) Ký hiệu distj(le,lv,ϕ) độ dài đường ngắn từ sj đến tj tính theo hàm độ dài length(p), ∀j = 1, , k Đặt α(le,lv,ϕ) = k ∑ d ( j).dist (le, lv,ϕ ) j =1 j bước, mà 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 l tính sau: Xét tốn: D(le, lv, ϕ ) β = le : E → R* , lv : V → R* , ϕ ≥ 0 (Dα) α (le, lv, ϕ ) Bổ đề Bài toán (D) tương đương với toán (Dα) theo nghĩa trị tối ưu chúng từ nghiệm tối ưu toán suy nghiệm tối ưu toán ngược lại d iq, (ji , j ) = Tổng luồng gửi qua mạng Hàm đối ngẫu ban đầu: le10, = δ/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 (i−1) lei0, - 17 - = leiq−(1i,−1, k ) , lvi0, k = lviq−(1i,−1, k ) k Các cơng trình nghiên cứu, phát triển ứng dụng CNTT-TT 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 (j−1) giai đoạn i: i, j le q ( i , j −1) i , j −1 le = Tương tự, i, j lv , q ( i , j −1) i , j −1 lv =δ/B, ϕ 1, = ϕ i,0 ϕ = q ( i −1,k ) i −1,k , ϕ i, j = ϕ iq, (ji−,1j −1) // Khởi tạo giá trị ban đầu Đặt ε = − m + n +1 ;δ= 1+ ω 1− ε − ε ; le(e) = δ /cE(e), ∀e ∈ E; lv(v) = δ /cV(v), ∀v ∈ V; ϕ = δ / B; D = (m+n+1)δ; fej(a) = 0; ∀a∈E, Suy ( Tập V-1, Số 11 (31), tháng 6/2014 D le , lv , ϕ 1, 0 1, 0 1, ∑lv v∈ V =∑ e∈E 1,0 δ c E (e) fvj(u,e,e‘) = 0; ∀u∈V,∀(e,u,e‘)∈Bảng bv, j=1, ,k ) = ∑ le e∈E 1, (e).cE (e) + Bex = 0;// Chi phí tạm tính (v).cV (v) + B ϕ c E (e) + t = 1;//biến đếm giai đoạn 1, ∑c v∈V δ V (v ) while (D < 1) // mức giai đoạn { cV (v) + B.δ/B for j = to k // mức vòng lặp ứng với j { = m.δ + n.δ + δ = (m+n+1)δ d’ = dj // lượng phương tiện cần chuyển từ sj đến tj với m số cạnh, n số nút mạng 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) ≥ while d’ > // mức bước giai đoạn { II.4 Thuật tốn tìm luồng cực đại tuyến tính đồng thời chi phí cực tiểu tựa ngơn ngữ C Gọi thủ tục tìm đường ngắn tìm đường ngắn p từ sj đến tj theo hàm length cơng thức Thuật tốn trình bày mục II.3 chúng tơi trình bày lại tựa theo ngơn ngữ lập trình C sau: h +1 h i =1 • Đầu vào: i =1 length(p) = ∑ le(ei ) + ∑ lv(ui ) Mạng mở rộng G = (V, E, cE, cV, bE, bV) Nhu cầu (sj, tj, dj), j=1, …, k + b(p).ϕ = Chi phí giới hạn B Hệ số xấp xỉ ω > h +1 ∑ [ϕ b i =1 • Đầu ra: E (ei ) + le(ei )] h + ∑ [ϕ bV (u i , ei , ei+1 ) + lv (u i )] 1) Hệ số λ cực đại: λmax i =1 Tính f’=min{d’,cE(e),cV(v)|e∈p, v∈p}; 2) Luồng thực tế {fej(a), fvj(u,e,e‘)| a∈E, B’ = b(p)*f’; (e,u,e‘)∈Bảng bv, j=1, ,k} // b(p) tính theo cơng thức (1) 3) Chi phí thực tế Bf ≤ B if B’ > B {f’ = f’*B/B’; B’ = B}; • Các bước: - 18 - Các cơng trình nghiên cứu, phát triển ứng dụng CNTT-TT Tập V-1, Số 11 (31), tháng 6/2014 fej(v,u) = fej(v,u) − fej(u,v); // hiệu chỉnh luồng fej(a) = fej(a) +f’; ∀a∈p Bf = Bf – (bE(u,v) + bE(v,u))* fej(u,v); fvj(u,e,e‘) = fvj(u,e,e‘) +f’; ∀(e,u,e‘)∈p fej(u,v) = 0; } // hiệu chỉnh tham số khác d’ = d’ − f’; ϕ =ϕ*(1+ε*B’/B), le(e) = le(e)*(1+ε*f’/cE(e)); ∀e ∈p lv(v) = lv(v)*(1+ε*f’/cV(v));∀v ∈p D = D + ε*f’*length(p); Bex = Bex + B’; } //End while d’ > } //End for • Nhận xét: Trong (t−1) giai đoạn thực thuật toán trên, ∀j = 1, , k, ta chuyển (t−1).d(j) đơn vị phương tiện qua luồng Tuy nhiên, luồng chuyển vượt khả thông qua cạnh nút Bổ đề sau giải vấn đề • Bổ đề λ > t −1 log1+ε (1 / δ ) • Bổ đề Cho ω > Khi tồn ε δ cho t = t + 1; luồng tìm thuật tốn, sau chia cho } //End D < log1+ε (1 / δ ) , luồng cực đại đồng thời chi phí cực // hiệu chỉnh luồng thực tế c’ = max{ ϕ le (e) lv (v ) , , |e∈E, v∈V}; δ / c E (e) δ / cV (v ) δ / B cex = log1+ε c’ ; fej(a) = fej(a)/cex; ∀a∈E, j=1, ,k fvj(u,e,e‘) = fvj(u,e,e‘)/cex; ∀u∈V,∀(e,u,e‘)∈Bảng bv, j=1, ,k Bf = Bex /cex;// chi phí thực tế λmax = t ;// Tỉ lệ lớn cex // Hiệu chỉnh luồng đoạn tuyến hai chiều có luồng nguồn đích ngược chiều for e ∈ E, e= (u, v) hai chiều for j = to k if (fej(u,v)> fej(v,u)) and (fej(v,u)>0) { fej(u,v) = fej(u,v) − fej(v,u); Bf = Bf – (bE(u,v) + bE(v,u))* fej(v,u); fej(v,u) = 0; } if (fej(v,u)>= fej(u,v)) and (fej(u,v)>0) { tiểu với tỉ lệ xấp xỉ (1+ω) Việc chứng minh bổ đề 2, bổ đề lập luận tương tự [2, 3, 4, 5, 13] • Bổ đề Tổng chi phí luồng (t−1) vịng lặp khơng vượt q B log1+ε (1 / δ ) Nghĩa là, tổng chi phí luồng sau chia cho log1+ε (1 / δ ) khơng vượt q B Chứng minh: Ta có ϕ1,0 = δ/B Sau (t−1) giai đoạn thực hiện, ta có D(t−1) < 1, tức ∑le e∈E t −1 (e).cE (e) + ∑lv v∈ V t −1 (v).cV (v) + B.ϕt-1 < Suy ϕt−1 < 1/B Hơn nữa, chuyển luồng qua mạng mà tổng chi phí tăng lên B, ϕ tăng lên thừa số khơng nhỏ (1+ε) Vì vậy, gọi x số lần thuật tốn làm tăng chi phí lên B đơn vị, ta có ϕ1,0.(1+ε)x ≤ ϕt−1 ≤ 1/B ⇒ x ≤ log1+ε (1 / δ ) Vậy tổng chi phí q trình thực B log1+ε (1 / δ ) Khi chia luồng đạt cho log1+ε (1 / δ ) ta đồng thời có tổng chi phí giảm thừa số log1+ε (1 / δ ) , thỏa mãn yêu cầu đặt tốn • Định lí Thuật tốn tính luồng xấp xỉ cực đại với tỉ lệ (1+ω) có độ phức tạp - 19 - Các cơng trình nghiên cứu, phát triển ứng dụng CNTT-TT Tập V-1, Số 11 (31), tháng 6/2014 Ta thấy thực T giai đoạn β giảm O(ω−2.(2k.log2k+m).log2m.n3) k số phương tiện, m số cạnh đồ thị, n số nút đồ thị nửa Nếu x số lần thực T giai đoạn, β giảm thừa số 2x Ta có Chứng minh : Trước tiên, tìm số giai đoạn mà thuật toán thực Theo bổ đề ≤ β/2x ⇒ 2x ≤ β ≤ k ⇒ x ≤ log2k β = λ, ta có ≤ γ = β t −1 ⇒ t ≤ + β log1+ ε δ log1+ε Vậy t = T.x = 2.log2k log1+ ε δ m Thay δ = 1− ε 1 ⇒ t = β log1+ ε , δ đó, ε δ phụ thuộc vào ω Ngồi ra, t cịn phụ thuộc vào β D(l ) Nhìn lại, β = minl = α (l ) ∑ c(e).l (e) e∈E k ∑ d ( j ).dist (l ) j =1 j Ta tăng giảm β thừa số r cách nhân c(e) d(j) lên thừa số r tương ứng (mà việc nhân khơng ảnh hưởng đến kết tốn, sau ta giảm tăng λ thừa số r) Gọi zi luồng cực đại phương tiện i, i = 1, …, k Đặt z = minizi/d(i) Khi z phân số yêu cầu cần vận chuyển phương tiện cách độc lập Từ β = λ, suy z/k ≤ β ≤ z Ta chia c(e) d(j) cho số cho z/k = 1, để thỏa mãn giả thuyết đưa ban đầu β ≥ Lúc ta có β ≤ k Đặt T = log1+ ε 1 tương ứng với β ≥ δ Nếu thuật tốn khơng dừng lại T giai đoạn thực hiện, nhân đơi tất d(j), (tương đương với chia đôi β, thỏa β ≥ 1), thực thuật toán tiếp T giai đoạn Nếu thuật toán chưa dừng, ta tiếp tục giải pháp đến thuật toán dừng lưu ý lúc thỏa β ≥ − 1 δ ε vào ta 1 ε t = 2.logk log1+ ε m 1− ε Mặt khác, giai đoạn ta thực k vòng lặp, nên số vòng lặp k.t Hơn thế, vòng lặp, ta thực số bước Tiếp theo, ta tìm tổng số bước thực thuật toán Ở bước, trừ bước sau vòng lặp, ta tăng độ dài cạnh lên (1+ε) lần Xét cạnh e bất kì, ta có l0(e)=δ/c(e) lt(e) • Đầu ra: Tập V-1, Số 11 (31), tháng 6/2014 Thực chương trình tìm luồng cực đại đồng thời chi phí cực tiểu với tham số đầu vào B ω, cho hệ số cực đại λmax; if (λmax < λinf){ B = B / λmax } } while (λmax < λinf) //Hiệu chỉnh luồng tối ưu chi phí cực tiểu if (λmax > 1) { fej(a) = fej(a) / λmax; ∀a∈E, j=1, ,k fvj(u,e,e‘) = fvj(u,e,e‘) / λmax; ∀u∈V,∀(e,u,e‘)∈Bảng bv, j=1, ,k Bmin = Bf / λmax;// chi phí thực tế } Sau ví dụ nhỏ minh họa thuật tốn Cho mạng giao thơng mở rộng Hình Mạng có nút, cạnh có hướng cạnh vơ hướng Chi phí cạnh wE cho Bảng chi phí nút wV cho Bảng Khả thông qua cạnh 10, khả thông qua nút 20 Có cặp nút nguồn đích (1, 5), (1, 4) (3, 6) với lượng phương tiện tương ứng d(1) = 15, d(2) = d(3) = 25 Chọn hệ số xấp xỉ ω = 0.1 Chương trình cho kết phân luồng tối ưu cho phương tiện từ nguồn đến đích 5, nguồn đến đích nguồn đến đích cho tương ứng Hình 2, Hình Hình 1) Luồng tối ưu {fej(a), fvj(u,e,e‘)| a∈E, (e,u,e‘)∈Bảng bv, j=1, ,k} Tổng chi phí tối ưu 692 2) Chi phí cực tiểu Bmin • Các bước: - 21 - Các cơng trình nghiên cứu, phát triển ứng dụng CNTT-TT Bảng Chi phí đỉnh Nút Cạnh Cạnh wV Bảng Chi phí cạnh Cạnh wE Tập V-1, Số 11 (31), tháng 6/2014 5.07 (3,2) (5,3) (3,2) 1 (5,3) (3,4) 4.93 (2,3) (3,4) (2,3) (3,5) (3,4) (4,6) (3,4) (4,5) (5,4) (4,6) (2,5) (5,3) (2,5) (5,4) (2,5) (5,6) (3,5) (5,4) (3,5) (5,6) (4,5) (5,3) (4,5) (5,6) 5.07 (1,3) 10 (5,6) (3,5) 10 (1,3) (4,5) 10 (3,4) (4,6) (1,3) 11 (3,5) (2,5) 15 (3,2) (3,4) 10 (2,5) (2,5) (1,2) 10 (2,3) (2,3) (1,2) (1,3) 10 5.07 4.93 (1,2) 4.93 Hình Phân luồng nguồn đến đích 5.07 5.07 4.93 Hình Phân luồng nguồn đến đích 5.07 5.07 4.93 4.93 Hình Phân luồng nguồn đến đích • Định lý Giả thiết tồn phương án phân luồng đáp ứng nhu cầu lại tất cặp nguồn đích với chi phí Bmax Giả thiết hệ số cực đại đồng thời giới hạn λinf < hệ số xấp xỉ ω > thỏa λinf ≤ 1/(1+ω) Khi thuật tốn kết thúc sau số hữu hạn vịng lặp thực chương trình tìm luồng cực đại đồng thời chi phí cực tiểu Độ phức tạp thuật tốn O(r.ω−2.(2k.log2k+m).log2m.n3) k số cặp nguồn đích, m số cạnh đồ thị, n Hình Mạng giao thơng mở rộng số nút đồ thị, r= logλinf B1 +1 B1 chi phí Bmax giới hạn đầu vào vòng lặp Chứng minh Theo chứng minh bổ đề 2, với ε ≤ 1− - 22 - ta có β/λ β/(1+ω) Ký hiệu Bmax chi phí phương án phân luồng đáp ứng nhu cầu lại tất cặp nguồn đích theo giả thiết Ký hiệu λ(B,ω) hệ số cực đại phụ thuộc tham số đầu vào B ω Như tốn luồng cực đại đồng thời chi phí cực tiểu với chi phí B ≥ Bmax cho hệ số cực đại đồng thời λ(B,ω)≥1/(1+ω) Suy λ(B,ω) ≥ λinf ∀ B ≥ Bmax (*) Ký hiệu Bi chi phí đầu vào vịng lặp thứ i, i=1,2, … Giả sử đến vòng lặp thứ q ta có Bq < Bmax λ(Bq ,ω) < λinf Theo cách tính thuật tốn, ta có Bq = Bq-1/λ(Bq-1 ,ω) ≥ Bq-1/λinf ≥ Bq-2/ (λinf)2 ≥ … ≥ B1/ (λinf)q−1 Suy B1/ (λinf)q−1 < Bmax, kéo theo q < logλinf B1 +1= r Vậy, kết hợp với (*) suy Bmax với q ≥ r λ(Bq ,ω) ≥ λinf thuật toán dừng Theo định lý độ phức tạp vòng lặp O(ω−2.(2k.log2k+m).log2m.n3) Số vịng lặp khơng q r, từ suy độ phức tạp thuật toán Với thời gian địi hỏi chúng tơi phải xây dựng thuật tốn song song để giảm bớt thời gian tính tốn thực ứng dụng mà liệu đầu vào lớn mà thuật tốn khơng thể thực IV.1 Ý tưởng thuật toán song song Ta xây dựng thuật toán c xử lý P1,…,Pc Trong c xử lý ta chọn xử lý P1 đóng vai trị trung tâm, thực quản lý liệu, phân chia công việc, gửi liệu đến c-1 xử lý phụ P2,…,Pc Bộ xử lý đồng thời thực cơng việc giống xử lý phụ Bộ xử lý P1 chia k nhu cầu (sj,tj,dj), j=1,…,k cho c xử lý Tuy nhiên để tận dụng hết khả xử lý ta chia nhu cầu cho c xử lý cho dj (lượng phương tiện qua (sj,tj)) gần xử lý c-1 xử lý phụ nhận nhu cầu mà xử lý gửi đến thực nhân gấp c lần nhu cầu dj thực tính tốn độc lập nhu cầu Kết tính c-1 xử lý phụ gửi xử lý chính, xử lý cộng kết lại chia cho c λmax = min{λmax , λmax , , λmax m } O(r.ω−2.(2k.log2k+m).log2m.n3) IV THUẬT TOÁN SONG SONG PHÂN LUỒNG ĐA PHƯƠNG TIỆN TUYẾN TÍNH TỐI ƯU TRÊN MẠNG GIAO THƠNG MỞ RỘNG Độ phức tạp thuật toán là: O(r.ω−2.(2k.log2k+m).log2m.n3) Với độ phức tạp thời gian chạy cho ứng dụng cụ thể lớn (dù ứng dụng nhỏ) Điều chứng minh thực tế cho chạy thực nghiệm Chương trình sử dụng để phân luồng giao thông tối ưu cho mạng giao thông trung tâm thành phố Đà Nẵng – Việt Nam Dữ liệu mạng giao thông bao gồm 120 nút giao thơng chính, 211 tuyến giao thơng 999 cặp nút nguồn đích với lưu lượng gần 50000 xe quy đổi Thời gian chạy gần 100 phút Tập V-1, Số 11 (31), tháng 6/2014 Các tiến trình xử lý phụ P2,…, Pc bắt đầu thực bước nhận yêu cầu từ P1 Tiến trình P1 thực bước nhận đủ λmaxi từ xử lý Pi (i=1,…, c) Trong phần B sau thiết kế thuật toán song song c xử lý P1, P2,… Pc IV.2 Các bước thực thuật tốn song song • Đầu vào: Mạng mở rộng G = (V, E, cE, cV, bE, bV) Nhu cầu (sj, tj, dj), j =1,…,k Hệ số cực đại đồng thời giới hạn λinf ≈ Hệ số xấp xỉ ω > 0, c xử lý • Đầu ra: - 23 - Các cơng trình nghiên cứu, phát triển ứng dụng CNTT-TT Tập V-1, Số 11 (31), tháng 6/2014 1) Luồng tối ưu {fej(a), fvj(u,e,e‘)| a∈E, (e,u,e‘)∈Bảng bv, j=1, ,k} Bước 2: c xử lý P1, P2,…,Pc thực đồng thời công việc sau đây: 2) Chi phí cực tiểu Bmin Thực chương trình tìm luồng cực đại đồng thời chi phí cực tiểu với tham số đầu vào B ω, cho hệ số cực đại λmaxi, Biex Bước 1: Bộ xử lý P1 thực cơng việc sau: - Nhận liệu đầu vào - // Khởi tạo giá trị ban đầu Chọn hệ số xấp xỉ ω > 0; Chọn hệ số cực đại đồng thời giới hạn λinf ≈ - //Khởi tạo chi phí giới hạn B B = 0; for j = to k { tìm đường ngắn p từ sj đến tj theo hàm chi phí b(p); Chú ý việc thực tìm luồng cực đại đồng thời chi phí cực tiểu thực số nhu cầu mà Pi nhận bước (sji,tji,dji), ji=1,…,ki, đồng thời nhu cầu phương tiện dji phải nhân lên gấp c lần (sji,tji,c*dji), ji=1,…,ki c-1 xử lý phụ gửi λmaxi (i=2, ,c) lên xử lý P1 Bước 3: Bộ xử lý P1 thực hiện: λmax=min{λmax1, λmax2, , λmaxc); Bex = (B1ex+B2ex, +,….+ Bcex,)/c; B = B + dj*b(p); } - Chuyển mạng G, B, ω, λinf đến c-1 xử lý phụ - P1 chia k nhu cầu (sj,tj,dj), j=1,…,k cho c xử lý P1, P2, …, Pc Cách chia sau: Đầu tiên ta chia (s1, t1, d1) cho xử lý P1, (s2, t2, d2) cho P2,…,(sc, tc, dc) cho Pc sumpt1=d1 (biến chứa tổng số phương tiện d1 P1) sumpt2=d2 (biến chứa tổng số phương tiện d2 P2) sumptc=dc(biến chứa tổng số phương tiện dc Pc) For t:=c+1 to k { h:=1; min:=sumpth; for i:= to c If min> sumpti then min:=sumpti; h:=i; Đánh dấu để chia nhu cầu (st, tt, dt) cho Ph sumpth:=sumpth+dt; } Bước 4: Bộ xử lý P1 kiểm tra, λmax < λinf gán B=B/λmax, gửi B đến xử lý phụ, quay lại bước Ngược lại, sang bước Bước 5: Bộ xử lý thực hiệu chỉnh luồng tối ưu chi phí cực tiểu thuật toán tuần tự, tất giá trị phải chia cho c: if (λmax > 1) { fej(a) = fej(a) / c*λmax; ∀a∈E, j=1, ,k fvj(u,e,e‘) = fvj(u,e,e‘) / c*λmax; ∀u∈V,∀(e,u,e‘)∈Bảng bv, j=1, ,k Bf=Bex/c*cex; Bin = Bf / c*λmax;// chi phí thực tế } Kết thúc Trong phần sau chúng tơi diễn giải thuật tốn mà c xử lý thực song song bước thuật toán song song mục IV.2 IV.3 Các bước thực thuật toán bước mục IV.2 Pi xử lý (i=1,…,c) để tìm λmax1, , λmaxc Ti=1; Biex =0; While Di0 do//mức bước giai đoạn { Gọi thủ tục tìm đường ngắn pi từ sji đến tji theo hàm length công thức: length(pi) theo công thức { Tính f ' = d ' , c E (e), cV (v ) | e ∈ p i , v ∈ p i ’ i Chứng minh: Việc chứng minh dựa thuật toán Thuật toán song song thực qua bước Bước 1, xử lý khởi tạo biến giống thuật toán tuần tự, chia số nhu cầu cho c xử lý gửi đến xử lý phụ Bước 2, c xử lý thực song song để tìm λmaxi (i=1, ,c), sau gửi xử lý Bước 3, xử lý tìm λmax=min{λmax1, λmax2, , λmaxc); } Bex = (B1ex+B2ex, +,….+ Bcex,)/c; ’ B =b(p )*f ;//b(p)tính theo cơng thức (1) If B’>B {f’=f’ *B/B’; B’=B}; // Hiệu chỉnh luồng fe ji ( a ) = fe ji ( a ) + f ' ; ∀ a ∈ p i ; fv ji (u , e , e ) = fv ji (u , e , e ) + ' ' f ' ; ∀ (e, u , e ' ) ∈ p i //Hiệu chỉnh tham số khác d’=d’-f’; ϕ = ϕ * (1 + ε * B ' / B ); lv (v ) = lv (v ) * (1 + ε * f ' / cV (v )); ∀v ∈ p i le(e) = le(e) * (1 + ε * f ' / cE (e)); ∀e ∈ p i D i = D i + ε * f ' * length( p i ); Biex= Biex +B’; } //end while d’>0 }// End for ti=ti+1; } //End Di