1. Trang chủ
  2. » Luận Văn - Báo Cáo

Song song hóa các thuật toán trên mạng đồ thị (TT)

24 241 0

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

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 24
Dung lượng 737,91 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Tính cấp thiết của việc nghiên cứu Khi xây dựng thuật toán tuần tự cho các bài toán trên mạng đồ thị, bản thân các thuật toán là rất phức tạp, thời gian của thuật toán rất lớn.. Do đó,

Trang 1

MỞ ĐẦU

1 Tính cấp thiết của việc nghiên cứu

Khi xây dựng thuật toán tuần tự cho các bài toán trên mạng đồ thị, bản thân các thuật toán là rất phức tạp, thời gian của thuật toán rất lớn Điều này, đòi hỏi phải song song hóa các thuật toán tuần tự tương ứng

Do đó, xây dựng các thuật toán tìm đường đi và các thuật toán tìm luồng cực đại theo hướng song song hóa từ các thuật toán tuần tự

là đòi hỏi hết sức cần thiết Xuất phát từ đó tác giả chọn vấn đề

“Song song hóa các thuật toán trên mạng đồ thị” làm đề tài

nghiên cứu của luận án

2 Đối tƣợng và phạm vi nghiên cứu

Đối tượng nghiên cứu

- Luận án nghiên cứu lý thuyết xử lý song song, các mô hình tính toán song song

- Nghiên cứu lý thuyết đồ thị, chủ yếu là bài toán tìm đường đi ngắn nhất, các thuật toán tìm luồng cực đại

3 Điểm mới của luận án

Trang 2

- Đề xuất thuật toán song song tìm đường đi ngắn nhất trên đồ thị mở rộng Chúng tôi đề xuất thuật toán này để ứng dụng cho mạng giao thông phù hợp với thực tế

- Tối ưu thuật toán song song tìm luồng cực đại bằng phương pháp đẩy luồng trước từ thuật toán song song đã có Điểm mới ở đây

là phân tích dữ liệu, chia dữ liệu cụ thể cho các bộ xử lý Phần thực nghiệm được thực hiện rõ ràng,

- Đề xuất thuật toán song song tìm luồng cực đại bằng phương pháp hỗn hợp đẩy kéo luồng Chúng tôi kết hợp thuật toán đẩy luồng trước và thuật toán kéo luồng sau để xây dựng thuật toán song song

- Đề xuất thuật toán song song tìm luồng cực đại đồng thời chi phí giới hạn trên mạng giao thông mở rộng Để giảm thời gian tính toán của thuật toán, chúng tôi đã xây dựng thuật toán song song tìm luồng cực đại chi phí giới hạn

4 Kết quả nghiên cứu

- Luận án đã đề xuất được các thuật toán song song mới trên

cơ sở các yêu cầu thực tế đặt ra, chứng minh tính đúng đắn, phân tích

độ phức tạp thời gian của thuật toán Đồng thời, luận án cũng song song hóa thuật toán đã có, từ đó chỉ ra các ưu điểm so với thuật toán

5 Bố cục của luận án

Ngoài phần mở đầu, kết luận, tài liệu tham khảo, luận án được trình bày thành ba chương

Trang 3

Chương 1 Xử lý song song

Chương 2 Các thuật toán tuần tự và song song trên mạng đồ thị truyền thống

Chương 3 Một số thuật toán song song tìm đường đi ngắn nhất và tìm luồng cực đại trên mạng đồ thị mở rộng

Trang 4

CHƯƠNG 1 XỬ LÝ SONG SONG

1.1 Giới thiệu về xử lý song song

1.2 Kiến trúc máy tính song song

1.3 Thuật toán song song

1.4 Kết luận chương

Để giải những bài toán đặt ra một cách hiệu quả trên những máy tính mà chúng ta có, vấn đề chính làm thế nào để xây dựng được những thuật toán song song Cách làm khá thông dụng là biến đổi các thuật toán tuần tự về song song, hay chuyển từ một dạng song song

về dạng song song phù hợp hơn nhưng vẫn bảo toàn được tính tương đương trong tính toán

Để đánh giá được tính hiệu quả của thuật toán song song thường phải dựa vào độ phức tạp thời gian của thuật toán Độ phức tạp thời gian của thuật toán song song không chỉ phụ thuộc vào kích

cỡ của dữ liệu đầu vào mà còn phụ thuộc vào kiến trúc máy tính song song và số lượng các bộ xử lý được phép sử dụng trong hệ thống

Trang 5

CHƯƠNG 2 CÁC THUẬT TOÁN TUẦN TỰ VÀ SONG SONG TRÊN MẠNG ĐỒ THỊ TRUYỀN THỐNG 2.1 Mạng và luồng

2.2 Bài toán luồng cực đại

2.3 Thuật toán đẩy luồng trước tìm luồng cực đại

2.3.1 Thuật toán tuần tự

2.3.1.1 Giới thiệu

2.3.1.2 Các khái niệm cơ bản

Mạng thặng dư (residual network) G f

Cho luồng f trên mạng G=(V, E, c) Ta định nghĩa mạng thặng

dư, ứng với luồng f là G f (V, E f , c f ) tập cung E fvà khả năng thông qua

c f được xác định như sau:

- (u, v)E, nếu f(u, v) > 0 thì (v, u)E f với khả năng thông

qua:c f (v, u)=f(u, v)

- (u, v) E, nếu c(u, v)f(u, v)>0 thì (u, v)E fvới khả năng

thông qua:c f (u, v)=c(u, v) f(u, v)

Luồng trước (pre-flow)

Cho ma ̣ng G = (V, E, c) Luồng trước là tập hợp các luồng trên

cung

f ={f i, j | (i, j) E} thỏa:

(i) 0 f i, j c i, j(i, j)E

(ii) Vơ ́ i mo ̣i đỉnh k không phải nguồn hoă ̣c đích, luồng vào

không nhỏ hơn luồng ra, tức là:

j k E

k i

k

f

)()

(

Trang 6

G=(V, E, c) là tâ ̣p hơ ̣p các tro ̣ng số đỉnh không âm h(0), , h(|V|1) thỏa h(z) = 0 với đỉnh đích z và h(u)≤ h(v)+1 với mo ̣i cung (u, v)E f

Những cung (u, v) thỏa h(u) = h(v) + 1 gọi là các cung ưu tiên 2.3.1.3 Phương pháp đẩy luồng trước tổng quát

2.3.1.4 Thuâ ̣t toán đẩy luồng trước

- Đầu vào:Mạng G =(V, E,c) với nguồn a, đích z, khả năng thông qua

c={c i, j | (i, j) E}

- Đầu ra: Luồng cực đại

f={f i, j |(i, j) E}

- Các bước:

1 Khơ ̉i tạo: xây dựng luồng trước xuất phát với các cung đi từ đỉnh

nguồn có luồng bằng khả năng thông qua , còn các cung khác

có luồng bằng 0 Chọn hàm độ cao h(v) là độ dài đường đi ngắn nhất từ v đến đỉnh đích z

Đẩy các đỉnh lệch vào hàng đợi Q

2 Tiêu chuẩn dư ̀ ng: nếu Q = ∅, luồng trước f trở thành luồng cực đa ̣i Kết thúc Nếu Q ∅, sang bước 3

3 Xư ̉ lý đỉnh lê ̣ch: lấy đỉnh lê ̣ch u từ hàng đợi

- Duyệt các cung ưu tiên (u, v)E f Đẩy trên cung (u, v) một

luồng có giá tri ̣ min {delta,c f (u, v)}, trong đó delta là đô ̣ lê ̣ch

luồng của đỉnh u Cập nhật lại c f (u, v) theo khái niệm của mạng thặng dư, cập nhật lại độ lệch luồng của đỉnh u và v là e(u)=e(u)-c f (u, v), e(v)=e(v)+c f (u, v)

- Nếu đỉnh v là đỉnh lệch mới, thì đẩy đỉnh v vào Q

- Nếu u vẫn co ̀n lê ̣ch, thì tăng độ cao của u:

h(u)= 1 + min{h(v)|(u, v)E f }

Sau đó đẩy u vào hàng đợi Q Quay la ̣i bước 2

2.3.1.5 Ví dụ minh họa

Trang 7

2.3.2 Thuật toán song song

2.3.2.1 Giới thiệu

2.3.2.2 Ý tưởng của thuật toán song song

2.3.2.3 Xây dựng thuật toán song song

- Đầu vào:Mạng G =(V, E,c) với nguồn a, đích z, khả năng thông qua

(1.1) Khởi tạo: e: độ lệch luồng của các đỉnh trên mạng đồ thị G, h:

độ cao của các đỉnh trên mạng đồ thị G, f: luồng trên các cung của mạng đồ thị G, c: khả năng thông qua trong mạng G, c f:

khả năng thông qua trong mạng thặng dư G f , Q: tập các đỉnh hoạt động (không kể đỉnh a và z) là các đỉnh có độ lệch luồng

dương Việc khởi tạo giống như khởi tạo ở thuật toán tuần tự

(1.2) Chia tập đỉnh V thành m-1 tập con V i cho các bộ xử lý phụ

tương ứng P i (i=1, 2, …, m-1) sao cho:

Ngược lại sang bước 4

Bước 4: Bộ xử lý chính chuyển e, h, f, c, c f tương ứng với các

đỉnhđến các bộ xử lý phụ

Bước 5: m-1 bộ xử lý phụ thực hiện

Trang 8

(5.1) Nhận các tham số e, h, f, c, c ftương ứng cho các đỉnh trên các

Bước 6: Bộ xử lý chính thực hiện một số công việc khác

(6.1) Nhận e, h, f, c f , từ bộ xử lý phụ gửi về từ bước 5.3, Thay đổi

tham số của các cung, các đỉnh mà hai đỉnh của các cung đó không nằm trên cùng một bộ xử lý

(6.2) Đây là bước khác biệt so với thuật toán tuần tự để đồng bộ hóa

dữ liệu, sau khi nhận dữ liệu ở (6.1) thì bộ xử lý chính kiểm tra

nếu với mọi cung (u, v) E, nếu h(u)>h(v)+1 thì bộ xử lý chính sẽ đổi nhãn cho đỉnh u, v như sau:

f(u, v)= f(u, v)+min{delta, c f (u, v); //deltalà độ lệch luồng của

đỉnh u

e(u)= e(u)–c f (u, v); e(v)= e(v)+c f (u, v)

Đưa đỉnh lệch mới vào tập Q

(6.3) Nếu  uV mà e(u)=0 thì loại u ra khỏi tập Q

Quay lại bước 3

2.3.2.4 Ví dụ minh họa

2.3.2.5 Phân tích độ phức tạp thời gian

2.3.2.6 Kết quả thực nghiệm thuật toán

Trang 9

2.3.2.7 Kết luận

2.4 Thuật toán hỗn hợp đẩy kéo luồng

2.4.1 Thuật toán tuần tự kéo luồng sau

2.4.1.1 Giới thiệu

2.4.1.2 Các khái niệm cơ bản

Luồng sau (post-flow)

Cho ma ̣ng G =(V, E,c).Luồng sau là tập hợp các luồng trên

cung

f={f i, j |(i, j) E}

thỏa mãn

(i)0 f i, j c i, j(i, j)E

(ii) Vơ ́ i mo ̣i đỉnh k không phải nguồn hoă ̣c đích , luồng ra

không nhỏ hơn luồng vào, tức là:

j k E

k i

k

f

) ( )

(

Hình 2.13 Biểu diễn mức độ tăng tốc trên các bộ xử lý của

đồ thị 7000 đỉnh(nét liền) và 5000 đỉnh (nét đứt)

Trang 10

Hàm độ sâu (depth function) của luồng sau trong mạng G=(V,

E, c) là tâ ̣p hơ ̣p các tro ̣ng số đỉnh không âm d(0), , d(|V|1) thỏa

d(a)= 0 vơ ́ i đỉnh nguồn a và d(u) + 1 d(v) vơ ́ i mo ̣i cung (u, v) trong mạng thặng dư Những cung (u, v) thỏa d(u) + 1 = d(v) gọi là các cung ưu tiên

2.4.1.3 Phương pha ́ p kéo luồng sau tổng quát

2.4.1.4 Thuâ ̣t toán kéo luồng sau

1 Khơ ̉i tạo: Xây dựng luồng sau xuất phát với các cung đi đến đỉnh

đích có luồng bằng khả năng thông qua , còn các cung khác có

luồng bằng 0 Chọn hàm độ sâu h(v) là độ dài đường đi ngắn nhất từ đỉnh nguồn a đến đỉnh v Đẩy các đỉnh lệch vào hàng đợi Q

2 Tiêu chuẩn dư ̀ ng : Nếu Q = ∅, luồng trước f trở thành luồng cực

đa ̣i Kết thúc Nếu Q ∅, sang bước 3

3 Xư ̉ lý đỉnh lê ̣ch: Lấy đỉnh lê ̣ch v từ hàng đợi

- Duyệt các cung ưu tiên (u, v)E f Kéo trên cung (u, v) một luồng

có giá trị min {delta, c f (u, v)}, trong đó delta (< 0) là độ lệch

luồng của đỉnh v Nếu đỉnh u là đỉnh lệch mới, thì đẩy đỉnh u vào hàng đợi Q

- Nếu đỉnh v vẫn còn lê ̣ch, thì tăng độ sâu của đỉnh v như sau:

d(v)=1+min{d(u) | (u, v) E f} Sau đó đẩy v vào hàng đợi Q Quay la ̣i bước 2

2.4.1.5 Ví dụ minh họa

2.4.2 Thuật toán tuần tự hỗn hợp đẩy kéo luồng tìm luồng cực đại

2.4.2.1 Phương pháp hỗn hợp đẩy kéo luồng tổng qua ́ t

Đây là phương pháp mới tìm luồng cực đại Kết hợp phương pháp đẩy luồng trước và phương pháp kéo luồng sau ở trên để xây dựng phương pháp hỗn hợp đẩy kéo luồng tổng quát như sau:

Trang 11

2.4.2.2 Thuâ ̣t toán hỗn hợp đẩy kéo luồng

Đây là thuâ ̣t toán cu ̣ thể thuô ̣c phương pháp h ỗn hợp đẩy kéo

luồng Ở đây các đỉnh lệch dương được đẩy vào hàng đợi Q+ và các

đỉnh lê ̣ch âm được đẩy vào hàng đợi Q

Với mỗi đỉnh lê ̣ch dương lấy từ hàng đợi Q+, ta sẽ đẩy luồng vào các cung ưu tiên một cách tối đa cho tới khi đỉnh trở thành không

lê ̣ch hoă ̣c không còn cung ưu tiên nữa Nếu không còn cung ưu tiên

nữa và đỉnh còn lê ̣ch thì ta tăng đô ̣ cao và đẩy nó vào hàng đợi Q+

Với mỗi đỉnh lê ̣ch âm lấy từ hàng đợi Q, ta sẽ kéo luồng vào các cung ưu tiên một c ách tối đa cho tới khi đỉnh trở thành không

lê ̣ch hoă ̣c không còn cung ưu tiên nữa Nếu không còn cung ưu tiên

nữa và đỉnh còn lê ̣ch thì ta tăng đô ̣ sâu và đẩy nó vào hàng đợi Q

2.4.2.3 Ví dụ minh họa

2.4.3 Thuật toán song song hỗn hợp đẩy kéo luồng tìm luồng cực đại

2.4.3.1 Giới thiệu

Thuật toán đẩy luồng trước, kéo luồng sau và thuật toán hỗn

hợp đẩy kéo luồng đều có độ phức tạp là O(|V|2|E|) Để giảm độ phức

tạp thời gian tính toán, ta xây dựng thuật toán song song hỗn hợp đẩy kéo luồng tìm luồng cực đại

2.4.3.2 Ý tưởng của thuật toán song song

Thuật toán song sẽ dùng 3 bộ xử lý, 1 bộ xử lý P0 quản lý dữ

liệu, gửi và nhận dữ liệu từ 2 bộ xử lý phụ (P1, P2) Trong 2 bộ xử lý phụ, một bộ xử lý P1 sẽ đẩy luồng từ Q+ và bộ xử lý P2 sẽ kéo luồng

từ Q- các bộ xử lý phụ kết thúc khi các Q+ và Q- là rỗng

2.4.3.3 Xây dựng thuật toán song song

-Đầu vào: Đồ thị G(V, E,c) với nguồn a, đích z, khả năng thông qua:

c={c |(i, j) E}

Trang 12

- Bộ xử lý chính kiểm tra nếu Q + , Q - là rỗng và các bộ xử lý

P 1 và P 2 kết thúc, thì luồng f trở thành luồng cực đa ̣i, kết thúc

Ngược lại sang bước 3

Bước 3: Bộ xử lý chính thực hiện kiểm tra

- Bộ xử lý chính lấy đỉnh u từ Q + và y từ Q

Gửi h, e, f,u, Q + đến bộ xử lý P 1 Gửi d, e, f, đỉnh y, Q - đến bộ

xử lý P 2

- Bộ xử lý chính kiểm tra: Nếu với mọi cung ưu tiên (u, v)  E f

và với mọi cung ưu tiên (x, y) E f mà u trùng với x hoặc y trùng với v thì sang bước 5 Ngược lại sang bước 4

Bước 4: Bộ xử lý phụ P 1 và P 2 thực hiện song song các công việc sau đây

- Hai bộ xử lý phụ nhận dữ liệu mà bộ xử lý chính P 0gửi đến

Trang 13

Chuyển Q - , d, e, f về bộ xử lý chính

Quay lại bước 2

Bước 5: Hai bộ xử lý P 1 và P 2 thực hiện tuần tự

- Bộ xử lý phụ P 1 thực hiện

Nhận dữ liệu từ P 0 gửi đến ở bước 3

Đẩy luồng trước

đề và hệ quả liên quan đến các thuật toán đều được chứng minh rõ ràng Các thuật toán song song đều phân tích thời gian tính toán Đặc biệt, nội dung chính của chương này được chúng tôi công bố trong 3 bài báo chuyên ngành Công nghệ Thông tin và được liệt kê ở tài liệu [1], [3], [4] trong danh mục các công trình của tác giả

Trang 14

CHƯƠNG 3 MỘT SỐ THUẬT TOÁN SONG SONG TÌM ĐƯỜNG ĐI NGẮN NHẤT VÀ TÌM LUỒNG CỰC

ĐẠI TRÊN MẠNG ĐỒ THỊ MỞ RỘNG

3.1 Đồ thị mở rộng

Cho đồ thị hỗn hợp G(V, E) với tập đỉnh V và tập cạnh E, trong

đó các cạnh có thể có hướng hoặc vô hướng Mỗi cạnh eE được gán trọng số w E (e) Với mỗi đỉnh vV, ký hiệu E v là tập các cạnh liên

thuộc đỉnh v Mỗi đỉnh v  V và mỗi cạnh (e, e’)E vE v , e≠e’ được gán trọng số w V (v, e, e’)

Bộ (V, E, w E , w V) gọi là đồ thị mở rộng

3.2 Thuật toán tìm đường đi ngắn nhất trên đồ thị mở rộng

3.2.1 Thuật toán tuần tự

Thuật toán sử dụng các ký hiệu sau:

S là tập đỉnh đã tìm được đường đi ngắn nhất xuất phát từ s T=V-S;l(v) là độ dài đường đi ngắn nhất từ s đến v

VE={(v, e)|vV\{s}& eE v}{(s,∅)} là tập các đỉnh-cạnh

liên thuộc

SE là tập các đỉnh-cạnh bị loại khỏi VE

TE=VE-SE, L(v, e) là nhãn cặp đỉnh- cạnh (v, e)VE.P(v, e) là cặp đỉnh-cạnh trước (v, e)VE

Bước 1: (Khởi tạo)

Trang 15

Đặt S =∅; T=V; VE={(v, e)|vV\{s}& eE V}{(s,∅)} SE=∅; TE=VE

Gán L(v, e)=∞,(v, e) VE, L(s, ∅):=0

Gán P(v, e)=∅(v, e) VE

Bước 2:Tính m = min{L(v, e)| (v, e)TE}

Nếu m=+∞, kết luận không tồn tại đường đi từ s đến t Kết thúc

Ngược lại, nếu m<+∞, chọn (vmin, emin)TE sao cho L(vmin,

emin)=m, đặt TE=TE-{(vmin, emin)}, SE=SE{(vmin, emin)}, sang

bước 3

Bước 3:Nếu vminS,thì đặt le(vmin) = emin, S = S   vmin , l(vmin) = L(vmin, emin), T=T-{vmin}

Nếu t= vmin, sang bước 5, ngược lại sang bước 4

Bước 4:Với mỗi (v, e)TE kề (kề sau) (vmin, emin)

Đặt L ‟ (v, e) = L(vmin, emin) + w E(vmin, v)+ w V (vmin, emin, e) nếu

vmin s và L(v, e) = L(s,∅) + w E (vmin, v) nếu vmin = s

Nếu L(v, e)>L(v, e),thì gán L(v, e)=L ‟ (v, e) và P(v, e)= (vmin,

emin)

Quay về bước 2

Bước 5: (Tìm đường đi ngắn nhất)

Gán l(t)=L(t, le(t)) là chiều dài đường đi ngắn nhất từ s đến t

Từ t lần ngược theo đỉnh-cạnh trước ta nhận được đường đi

v

skk1  1 Kết thúc

Định lý 3.1: Thuật toán tìm đường đi ngắn nhất giữa hai đỉnh trong

Trang 16

3.2.2.2.Ý tưởng của thuật toán song song

Thuật toán song song được xây dựng trên k bộ xử lý (P0, P1,…,

P k-1 ) Trong k bộ xử lý đó có một bộ xử lý chính (P0) quản lý dữ liệu,

chia dữ liệu cho k-1 bộ xử lý phụ (P1 ,…, P k-1) Các bộ xử lý phụ

nhận dữ liệu và tìm L(v, e) nhỏ nhất trên các đỉnh mà mình nắm giữ

và gửi về bộ xử lý chính Bộ xử lý chính sẽ tìm L(vmin, emin)=min(L i (v, e)), i=0 ,…, k-1) của các bộ xử lý phụ gửi đến Sau đó bộ xử lý chính

sẽ gửi (vmin, emin ) đến các bộ xử lý phụ để các bộ xử lý tiếp tục tính toán

3.2.2.3 Xây dựng thuật toán song song

Ngày đăng: 31/12/2015, 13:17

HÌNH ẢNH LIÊN QUAN

Hình 2.13. Biểu diễn mức độ tăng tốc trên các bộ xử lý của - Song song hóa các thuật toán trên mạng đồ thị (TT)
Hình 2.13. Biểu diễn mức độ tăng tốc trên các bộ xử lý của (Trang 9)
Đồ thị mở rộng là đúng. - Song song hóa các thuật toán trên mạng đồ thị (TT)
th ị mở rộng là đúng (Trang 16)

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w