TRƯỜNG ĐẠI HỌC KINH TẾ QUỐC DÂN VIỆN CÔNG NGHỆ THÔNG TIN KINH TẾ BÁO CÁO MÔN HỌC Phân tích và thiết kế thuật toán ĐỀ TÀI SONG SONG HÓA THUẬT TOÁN DIJKSTRA TÌM ĐƯỜNG ĐI NGẮN NHẤT TỪ MỘT ĐỈNH ĐẾN TẤT CẢ[.]
TRƯỜNG ĐẠI HỌC KINH TẾ QUỐC DÂN VIỆN CÔNG NGHỆ THÔNG TIN KINH TẾ BÁO CÁO MÔN HỌC Phân tích thiết kế thuật tốn ĐỀ TÀI: 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 Nhóm 2: Nguyễn Đình Nghĩa Nguyễn Thị Loan Đào Văn Nhâm Đồn Thị Linh Đào Mai Lê Đào Quang Huy Giảng viên: Phạm Minh Hoàn Hà Nội, tháng 11 năm 2016 MỤC LỤC Lời mở đầu Phương pháp nghiên cứu Một số khái niệm xử lý song song 2.1 Định nghĩa về xử lý song song .3 2.2 Phân biệt xử lý song song xử lý .3 2.3 Mục đích xử lý song song 2.4 Vấn đề xử lý song song 2.5 Độ phức tạp .4 2.6 Cài đặt giải thuật song song Thiết kế đánh giá thuật toán song song 3.1 Định nghĩa thuật toán song song 3.2 Các nguyên lý thiết kế thuật toán song song 3.3 Các cách tiếp cận thiết kế thuật toán song song .5 Thuật tốn Dijkstra tìm đường ngắn từ đỉnh đến tất đỉnh 5 Thuật toán song song Dijkstra tìm đường ngắn từ đỉnh đến tất đỉnh + Phương pháp: Kết luận .11 TÀI LIỆU THAM KHẢO 11 Lời mở đầu Với kiến thức thời gian có hạn, nhóm chúng em thực báo cáo chủ yếu dựa tài liệu thầy cung cấp Mong thầy thông cảm ạ! Phương pháp nghiên cứu Với tốn u cầu khả tính tốn lưu trữ lớn mơ hình kiến trúc cịn hạn chế Để tăng cường sức mạnh tính tốn giải tốn lớn có độ tính tốn cao, người ta đưa kiến trúc mới, với ý tưởng kết hợp nhiều xử lý vào máy tính, hay gọi xử lý song song kết hợp sức mạnh tính tốn nhiều máy tính dựa kết nối mạng (máy tính song song) Trong phạm vi báo cáo, nhóm chọn tốn tìm đường ngắn đồ thị có trọng số làm ứng dụng để xử lý song song Bài tốn tìm đường ngắn số tốn tối ưu đồ thị tìm ứng dụng rộng rãi thực tế ứng dụng thú vị lý thuyết tổ hợp Bài toán giải nhà khoa học máy tính người Hà Lan Edsger Dijkstra, thuật tốn Dijkstra( xây dựng vào năm 1956 xuất vào năm 1959) - thuật toán giải toán đường ngắn nguồn đơn đồ thị có hướng khơng có cạnh mang trọng số âm Hiện có thuật tốn tìm thấy internet.Trong q trình xây dựng thuật tốn, ý đến hai vấn đề, cài đặt nguyên thuật tốn Dijkstra, đồng thời, nghiên cứu tìm tiến trình cần xử lý song song Một số khái niệm xử lý song song 2.1 Định nghĩa về xử lý song song Tính tốn song song hay xử lý song song: trình xử lý thơng tin nhiều đơn vị liệu xử lý đồng thời hay nhiều xử lý để giải tốn Máy tính song song tập hợp xử lý kết nối với theo kiến trúc xác định để hợp tác hoạt động trao đổi liệu 2.2 Phân biệt xử lý song song xử lý Trong tính tốn với xử lý thời điểm thực phép tốn Trong tính tốn song song nhiều xử lý kết hợp với để giải toán giảm thời gian xử lý thời điểm thực đồng thời nhiều phép tốn 2.3 Mục đích xử lý song song Thực tính tốn nhanh sở sử dụng nhiều xử lý đồng thời Cùng với tốc độ xử lý nhanh, việc xử lý song song giải toán phức tạp u cầu khối lượng tính tốn lớn 2.4 Vấn đề xử lý song song Liên quan trực tiếp đến kiến trúc máy tính, phần mềm hệ thống (hệ điều hành), giải thuật ngơn ngữ lập trình, … 2.5 Độ phức tạp Độ phức tạp tính tốn song song khơng phụ thuộc vào kích cỡ liệu đầu vào mà phụ thuộc vào kiến trúc máy tính song song số lượng xử lý phép sử dụng hệ thống 2.6 Cài đặt giải thuật song song Để cài đặt giải thuật song song máy tính song song, phải sử dụng ngơn ngữ lập trình song song như: OpenMP với C/C++, MPI với C/C++, v.v… Thiết kế đánh giá thuật toán song song 3.1 Định nghĩa thuật toán song song Thuật toán song song tập hợp tiến trình (process) hay tác vụ (task) thực thi đồng thời trao đổi liệu với để kết hợp giải vấn đề đặt [6] Những thuật toán, có số thao tác thực đồng thời gọi thuật toán song song 3.2 Các nguyên lý thiết kế thuật toán song song Khi muốn thực việc xử lý song song ta phải xét kiến trúc máy tính thuật toán song song Để thiết kế thuật toán song song cần phải thực - Phân chia liệu cho tác vụ - Chỉ cách truy cập chia sẻ liệu - Phân tác vụ cho tiến trình (bộ xử lý) - Các tiến trình đồng Khi thiết kế thuật tốn song song sử dụng năm ngun lí thiết kế thuật tốn song song: + Nguyên lý lập lịch: Mục đích giảm tối thiểu xử lý dùng thuật toán cho thời gian tính tốn khơng tăng + Nguyên lý hình ống: Nguyên lý áp dụng toán xuất dãy thao tác {T1, T2, , Tn}, Ti+1 thực sau Ti kết thúc + Nguyên lý chia để trị: Chia toán thành phần nhỏ tương đối độc lập với giải chúng cách song song + Nguyên lý đồ thị phụ thuộc liệu: Phân tích mối quan hệ liệu tính tốn để xây dựng đồ thị phụ thuộc liệu dựa vào để xây dựng thuật tốn song song + Nguyên lý điều kiện tương tranh: Nếu hai tiến trình muốn truy cập vào mục liệu chia sẻ chúng phải tương tranh với Ngoài nguyên lý nêu trên, thiết kế thuật tốn song song ta cịn phải ý đến kiến trúc hệ thống tính tốn Khi chuyển thuật toán sang thuật toán song song chuyển thuật tốn song song thích hợp với kiến trúc có Cần xác định kiến trúc tính tốn phù hợp với tốn toán loại xử lý hiệu kiến trúc song song cho trước Trong phạm vi báo cáo, nhóm em sử dụng nguyên lý chia để trị toán nêu 3.3 Các cách tiếp cận thiết kế thuật tốn song song Có ba phương pháp tiếp cận để thiết kế thuật toán song song: - Song song hoá thuật toán tuần tự, biến đổi cấu trúc để tận dụng khả song song tự nhiên tất thành phần hệ thống xử lý - Thiết kế thuật toán song song sở thuật tốn song song có - Thiết kế thuật tốn song song hồn tồn thích ứng với cấu trúc song song Thuật tố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ừ đỉnh a đến tất đỉnh đồ thị + Phương pháp: Bước Gán L(a):=0 Với đỉnh x ≠ a gán L(x) = ∞ Đặt T:=V Bước Chọn v T, v chưa xét cho L(v) có giá trị nhỏ Đặt T:=T\{v}, đánh dấu đỉnh v xét Bước 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 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 Độ phức tạp thuật tốn Dijkstra O(n2) [3] Ví dụ: Cho đồ thị biểu diễn sau, sau thuật tốn thực xong kết ghi nhớ lên nhãn đỉnh tương ứng 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 (12) đến 3=5 (13) đến 4=13 (124) đến 5=15 (135) đến 6=15 (136) đến 7=17 (1367) đến 8=18 (1248) đến 9=38 (1248) đến 10=39 (13671110) đến 11= 24 (136711) đến 12=29 (13671112) Với thuật toán trên, giải thuật có độ phức tạp O(n 2) n tăng lên lớn (khoảng vài chục ngàn đỉnh) thời gian xử lý chậm đánh kể, điều không đáp ứng ứng dụng cho giải thuật Dijkstra đòi hỏi chạy với thời gian nhanh Hơn mô hình xử lý song song hệ thống xử lý song song phát triển mạnh mẽ giới Việt Nam Xử lý song song tốn thời gian thời gian khác tùy theo hệ thống có xử lý (BXL) tính tốn song song thời gian thực tốn phụ thuộc vào thời gian truyền liệu hệ thống cộng với thời gian thực tính tốn BXL [8] Vì chúng tơi xây dựng giải thuật theo hướng song song hóa Thuật tốn song song Dijkstra tìm đường ngắn từ đỉnh đến tất đỉnh Ý 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 ) ma trận trọng số n/m cột n dòng (nếu n chia hết cho m) Ngược lại trường hợp khơng chia hết ta thực theo công thức (*) bước thuật toán song song Với m BXL, xử lý thực tính L(x) với x đỉnh kề với đỉnh mà nhận để xét Sau BXL trung tâm (P0) tìm L(x) BXL để tiếp tục gửi đỉnh x lên BXL để thực Đầ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-1 xử lý phụ Đầu ra: Chiều dài đường ngắn đường ngắn từ đỉnh a đến tất đỉnh đồ thị + Phương pháp: Bước 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 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; kL(v)+w(v,x) { L(x) := L[v] + w(v,x) Truoc[x]=v // ghi nhớ đỉnh v vào x } quay lại bước Bước Bộ xử lý thực Nếu tất m-1 xử lý phụ kết thúc xử lý thực hiện: nhận kết từ xử lý phụ kết luận chiều dài đường ngắn từ a đến tất đỉnh đường ngắn qua đỉnh ghi nhớ Đỉnh có nhãn khơng thay đổi (bằng ∞) khơng tồn đường đi_(Not Path) Hệ thống kết thúc Chúng quy ước tỷ lệ thời gian tính tốn (T s) với thời gian tính tốn song song (T p) để đánh giá thời gian thực thuật toán song song so với thuật tốn [4], [5] Chúng tơi tạo ngẫu nhiên đồ thị gồm 1000 đỉnh cho thực xử lý (tuần tự), 2, 4, 6, xử lý hệ thống trường đại học Sư phạm Hà Nội kết cho bảng sau: Số xử lý 10 Ts/Tp 1.66 1.90 2.03 2.10 Bảng đánh giá thời gian thực thuật toán song song so với thuật tốn tuần tự, đó: Ts: Sequential time (Thời gian chạy tuần tự) Tp: Parallel time (thời gian chạy song song) Kết đánh giá biểu diễn biểu đồ sau: Nhận xét: Từ đồ thị bảng kết trên, nhận thấy tốc độ xử lý tăng lên đáng kể xử lý BXL thời gian giảm 1.6 lần so với xử lý Kết luận Với việc song song hóa thuật tốn Dijsktra tìm đường ngắn từ đỉnh đến tất đỉnh giúp ta giải vấn đề bế tắc mà thuật toán gặp phải thời gian, liệu đầu vào Tuy nhiên để cài đặt thuật tốn địi hỏi phải có cụm máy tính song song, cụ thể báo chúng tơi dùng cụm máy tính song song trường Đại học Sư phạm Hà Nội để chạy Demo Thuật toán cho kết với thời gian xử lý nhanh thuật toán liệu đầu vào lớn (chẳng hạn với số đỉnh đồ thị từ 1000 trở đi) TÀI LIỆU THAM KHẢO [1] Trần Quốc Chiến, Hồ Xn Bình, Thuật tốn song song tìm luồng cực đại, Tạp chí Khoa học & Cơng nghệ, Đại học Đà Nẵng, 5(22), (2007), 37-42 [2] Trần Quốc Chiến, Trần Thị Mỹ Dung, Ứng dụng thuật toán tìm đường ngắn Đa nguồn đích tìm luồng cực đại đa hàng hóa đồng thời, Kỷ yếu hội thảo khoa 11 học Công nghệ Thông tin, Trường Đại học Sư Phạm Đà Nẵng, 11/2011 [3] Tom Wilson, Nicholas Hofbauer, Dijkstra’s Algorithm in Parallel, team report 2008 (http://www.cs.rit.edu/~ark/winter2008/531/team/u8/TeamReport.pdf) [4] A Grama, A.Gupta, G.Karypis, V.Kumar, Introduction to Parallel Computing, 2003 [5] Seyed H Roosta, Parallel Processing and Parallel Algorithms, Theory and Computation, Springer 1999 [6] Joseph JáJá, An Introduction to Parallel Algrithms, Addison - Wesley, 1992 [7] Alistair K Phipps, Parallel algorithms for geometric shortest path problems, Master of Science Computer Science School of Informatics University of Edinburgh, 2004 [8] Behrooz Parhami, Introduction to Parallel Processing (Algorithms and Architectures), University of California at Santa Barbara Santa Barbara, California, 2002 12 ... tiếp cận thiết kế thuật toán song song .5 Thuật tốn Dijkstra tìm đường ngắn từ đỉnh đến tất đỉnh 5 Thuật toán song song Dijkstra tìm đường ngắn từ đỉnh đến tất đỉnh +... Cài đặt giải thuật song song Thiết kế đánh giá thuật toán song song 3.1 Định nghĩa thuật toán song song 3.2 Các nguyên lý thiết kế thuật toán song song 3.3 Các cách tiếp cận... thuật toán song song 3.2 Các nguyên lý thiết kế thuật toán song song Khi muốn thực việc xử lý song song ta phải xét kiến trúc máy tính thuật toán song song Để thiết kế thuật toán song song cần