Báo khoa học tập trung thảo luận một số vấn đề liên quan đến phép biến đổi ma tập và đề xuất một số cải tiến nhằm nâng

11 228 0
Báo khoa học  tập trung thảo luận một số vấn đề liên quan đến phép biến đổi ma tập và đề xuất một số cải tiến nhằm nâng

Đ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

SONG SONG HĨA THUẬT TỐN DIJKSTRA TÌM ĐƯỜNG ĐI NGẮN NHẤT TỪ MỘT ĐỈNH ĐẾN TẤT CẢ CÁC ĐỈNH PARALLELIZING ALGORITHM DIJKSTRA’S FINDING THE SHORTEST PATHS FROM A VERTEX TO ALL VERTICES PGS.TS Lê Mạnh Thạnh – Đại học Huế Nguyễn Đình Lầu - NCS Đại học Đà Nẵng Trần Ngọc Việt - NCS Đại học Đà Nẵng TÓM TẮT Kết báo tập trung xây dựng thuật tốn song song tìm đường ngắn từ đỉnh đến tất đỉnh dựa thuật toán Dijkstra Ý tưởng thuật toán sử dụng m xử lý tìm đường ngắn từ đỉnh đến tất đỉnh trên đồ thị Trong m xử lý chọn xử lý đóng vai trị trung tâm thực việc quản lý liệu, chia n đỉnh ma trận trọng số đồ thị cho m xử lý để tìm đường ngắn ABSTRACT The main result of this article is building parallel algorithm finding the shortest paths for a vertices to all vertices based on Dijkstra algorithm The idea of this algorithm is using m processors to find the shortest paths for a vertice to all vertices in a graph Among k processors, we choose one central processor playing a role in managing data, dividing n vertices and weight matrix into m processors to find the shortest paths Đặt vấn đề Cho đồ thị liên thơng G(V,E,w) có trọng số w(i,j) >0 với cạnh (i,j) Bài tốn tìm đường ngắn từ đỉnh đến tất đỉnh số toán tối ưu đồ thị tìm ứng dụng rộng rãi thực tế ứng dụng thú vị toán học rời rạc Bài toán đề xuất giải nhà khoa học máy tính người Hà Lan Edsger Dijkstra gọi thuật toán Dijkstra Hiện nay, mơ hình xử lý song song phát triển mạnh mẽ giải vấn đề bế tắc mà mơ hình xử lý gặp phải vấn đề thời gian thực chương trình, tốc độ xử lý, khả lưu trữ nhớ, xử lý liệu với quy mô lớn Trong bối cảnh chúng tơi xây dựng thuật tốn “song song thuật tốn Dijkstra tìm đường ngắn từ đỉnh đến tất đỉnh” đồ thị với m xử lý nhằm khắc phục vấn đề tồn nêu Thuật toán Dijkstra tìm đường ngắn từ đỉnh đến tất đỉnh Đầu vào: Đồ thị liên thông G(V,E,w), w(i,j) ≥ (i, j ) ∈ E , đỉnh nguồn a Đầu ra: Chiều dài đường ngắn đường ngắn từ a đến tất đỉnh đồ thị +Phương pháp: Bước 1: Gán L(a):=0 Với đỉnh x ≠ a gán L(x)= ∞ Đặt T:=V Bước 2: Chọn v ∈ T, v chưa xét cho L(v) có giá trị nhỏ nhất, Đặt T:=T\{v}, đánh dấu đỉnh v xét Bước 3: Nếu T= φ , Kết thúc, L(z), ∀ z ∈ V, z≠a chiều dài đường ngắn từ a đến z Từ z lần ngược theo đỉnh ghi nhớ ta có đường ngắn (L(z) khơng thay đổi (L(z)= ∞ khơng tồn đường đi_Not Path)) Ngược lại sang bước Bước 4: Với x ∈ T kề v gán L(x):=min{L(x), L(v)+w(v,x)} Nếu L(x) thay đổi ghi nhớ đỉnh v cạnh đỉnh x mảng truoc[] (với truoc[] đỉnh 1=0) để sau xây dựng đường ngắn Quay bước 2.[3] Ví dụ: Cho đồ thị biểu diễn sau đây, sau thuật tốn thực xong kết ghi nhớ lên nhãn đỉnh tương ứng (0) (7)1 7 (13)2 (5)1 11 10 (15)3 20 18 10 10 (18)4 15 (15)3 10 11 20 7 (38)8 (24)7 (39)11 15 (29) 11 (17)6 Hình Ghi nhớ kết tính đồ thị Mảng truoc[]=0 1 3 11 11 (Mảng ghi nhớ truoc [] dùng để tìm đường đi, với truoc[1]=0) Mảng độ dài L = 13 15 15 17 18 38 39 24 29 Vậy kết từ đỉnh đến tất đỉnh là: đến 2=7 (12) đến 3=5 (13) đến 4=13 (124) đến 5=15 (135) đến 6=15 (136) đến 7=17 (1367) đến 8=18 (1248) đến 9=38 (1248) đến 10=39 (13671110) đến 11= 24 (136711) đến 12=29 (13671112) Thuật toán song song Dijkstra Đầu vào: Đồ thị liên thông G(V,E,w), w(i,j) ≥ ∀ (i,j) ∈ E, đỉnh nguồn a, xử lý m xử lý phụ Đầu ra: Chiều dài đường ngắn đường ngắn từ a đến tất đỉnh đồ thị +Ý tưởng: Chia đồ thị ban đầu cho m xử lý(P0, P1,…,Pm-1), tính tốn đồng thời, BXL đảm nhận n/m đỉnh đồ thị (n số đỉnh đồ thị, m số BXL phụ) ma trận trọng số n/m cột n dòng (nếu n chia hết cho m) +Phương pháp: Bước 1: Bộ xử lý thực - Gán L(a):=0 Với đỉnh x ≠ a, x thuộc xử lý gán L(x)= ∞ - Chia số đỉnh ma trận trọng số để gửi cho m BXL Cách chia sau: giả sử ta có n đỉnh m xử lý P0,P2,…,Pm-1 Gọi ni số đỉnh xử lý Pi (i=0,…,m-1) - Nếu n chia hết cho m For i=0 to m-1 ni = n / m - Nếu n không chia hết cho m For i=0 to m-2 n ni =   m n  nm −1 =n −(m −1).  m  - Ta xây dựng Ti (i=0,…,m-1) tập đỉnh mà xử lý Pi nhận sau: BN=0; kt số phần tử mà xử lý nhận for (k=0; k

Ngày đăng: 19/12/2015, 22:51

Từ khóa liên quan

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

Tài liệu liên quan