1 ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN BÙI THANH TUYỀN NÂNG CAO HIỆU QUẢ BÀI TOÁN SẮP XẾP VỚI GIẢI THUẬT SONG SONG LUẬN VĂN THẠC SĨ KHOA HỌC Hà Nội – Năm 2014 2 ĐẠI HỌC QUỐC GIA HÀ[.]
ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN - BÙI THANH TUYỀN NÂNG CAO HIỆU QUẢ BÀI TOÁN SẮP XẾP VỚI GIẢI THUẬT SONG SONG LUẬN VĂN THẠC SĨ KHOA HỌC Hà Nội – Năm 2014 ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN - BÙI THANH TUYỀN NÂNG CAO HIỆU QUẢ BÀI TOÁN SẮP XẾP VỚI GIẢI THUẬT SONG SONG Chuyên ngành: Cơ sở toán cho tin học Mã số: 60460110 LUẬN VĂN THẠC SĨ KHOA HỌC NGƯỜI HƯỚNG DẪN KHOA HỌC: TS Nguyễn Thị Hồng Minh Hà Nội – Năm 2014 LỜI CẢM ƠN Trên thực tế, thành cơng mà khơng gắn liền với hỗ trợ, giúp đỡ Trong suốt thời gian từ bắt đầu học tập trường đến nay, em nhận nhiều quan tâm, giúp đỡ q Thầy Cơ Khoa Tốn-Cơ-Tin học, Trường Đại học Khoa học Tự nhiên - ĐHQGHN với tri thức tâm huyết để truyền đạt vốn kiến thức quý báu cho chúng em, luôn tạo điều kiện tốt cho chúng em suốt trình theo học trường Em xin chân thành cảm ơn quý Thầy Cô Ban lãnh đạo nhà trường! Với lòng biết ơn sâu sắc nhất, em xin gửi lời cảm ơn tới TS Nguyễn Thị Hồng Minh, Phó chủ nhiệm Khoa Sau đại học - ĐHQGHN, cán trực tiếp hướng dẫn định hướng khoa học cho em Cô dành nhiều thời gian cho việc hướng dẫn em cách nghiên cứu, đọc tài liệu, cài đặt thuật toán giúp đỡ em việc xây dựng chương trình, em xin chân thành cảm ơn cô! Em xin chân thành gửi lời cảm ơn đến quý thầy cô, anh chị em Trung tâm Tính tốn Hiệu Năng Cao Trường Ðại học Khoa học Tự nhiên quan tâm giúp đỡ, tạo điều kiện nhiều mặt, bảo tận tình trình em thực thực nghiệm trung tâm Và cuối em xin bày tỏ lòng chân thành biết ơn tới lãnh đạo khoa Công nghệ Thông tin,Trường Đại học Kinh doanh Công nghệ Hà Nội bạn bè đồng nghiệp, ba mẹ anh chị em bên cạnh lúc em khó khăn tạo điều kiện thuận lợi giúp em hoàn thành luận văn Hà Nội, ngày 26 tháng năm 2014 Học viên: Bùi Thanh Tuyền Mục lục LỜI CẢM ƠN Danh mục viết tắt Danh mục hình Danh mục bảng MỞ ĐẦU CHƯƠNG TỔNG QUAN VỀ XỬ LÝ SONG SONG 1.1 Tổng quan xử lí song song 1.1.1 Tính tốn tính tốn song song 1.1.2 Kiến trúc máy tính song song 10 1.1.3 Một số mạng kết nối hệ thống song song 11 1.1.3.1 Mạng liên kết tuyến tính liên kết vòng 11 1.1.3.2 Mạng liên kết lưới hai chiều 12 1.1.3.3 Mạng liên kết hình khối 12 1.1.4 Cơ sở đánh giá giải thuật song song 13 1.1.4.1 Thời gian thực 13 1.1.4.2 Hệ số tăng tốc độ hiệu giải thuật 14 1.2 Tổng quan toán xếp 15 1.2.1 Bài toán xếp 15 1.2.2 Các cấu trúc liệu cho toán xếp 18 1.2.3 Phân lớp thuật toán xếp dựa độ phức tạp 19 1.2.3.1 Lớp thuật tốn có độ phức tạp O(n2) 19 1.2.3.2 Lớp thuật tốn có độ phức tạp O(nlogn) 23 1.2.3.3 Thuật tốn xếp có độ phức tạp thấp với liệu đặc biệt 26 1.3 Kết luận chương 28 CHƯƠNG MỘT SỐ THUẬT TOÁN SONG SONG CHO BÀI TOÁN SẮP XẾP 29 2.1 Chiến lược song song cho toán xếp 29 2.2 Thuật toán xếp song song phát triển dựa thuật toán 30 2.2.1 Thuật toán xếp hoán vị chẵn lẻ 30 2.2.2 Thuật toán Shellsort 32 2.2.3 Thuật toán Parallel QuickSort 36 2.2.4 Thuật toán HyperQuicksort 41 2.3 Thuật toán xếp song song dựa mẫu chuẩn PSRS 47 2.3.1 Tư tưởng thuật toán 47 2.3.2 Đánh giá độ phức tạp 50 2.3.3 Ví dụ 50 2.4 Kết luận chương 52 CHƯƠNG ỨNG DỤNG LẬP TRÌNH SONG SONG CÀI ĐẶT THUẬT TOÁN SẮP XẾP PSRS VÀ PARALLELQUICKSORT 53 3.1 Môi trường phương pháp thực nghiệm 53 3.1.1 Môi trường thực nghiệm 53 3.1.2 Phương pháp thực nghiệm 54 3.2 Các kết thực nghiệm 54 3.2.1 Kết thực nghiệm chạy thuật toán PSRS 54 3.2.2 So sánh kết thuật toán PSRS ParallelQuicksort 56 3.3 Kết luận chương 57 KẾT LUẬN 588 TÀI LIỆU THAM KHẢO 59 Danh mục viết tắt Viết đầy đủ Ý nghĩa ADN Acid Deoxyribo Nucleic Phân tử di truyền CPU Central Processing Unit Đơn vị xử lí trung tâm Multiple Instruction Multiple Đa lệnh Đa liệu Viết tắt MIMD Data MISD PQ Multiple Instruction Single Data Đa lệnh Đơn liệu Parallel QuickSort Sắp xếp nhanh song song PSRS Parallel Sorting by Regular Sắp xếp song song dựa Sampling mẫu SIMD Single Instruction Multiple Data Đơn lệnh Đa liệu SISD Single Instruction Single Data Đơn lệnh Đơn liệu Danh mục hình Hình 1.1 Minh họa trình xử lí Hình 1.2 Minh họa q trình xử lí song song Hình 1.3 Phân loại Flynn kiến trúc song song 10 Hình 1.4 Mạng liên kết tuyến tính mạng vịng 11 Hình 1.5 Mạng liên kết lưới hai chiều 12 Hình 1.6 Mạng liên kết khối chiều với 16 xử lí 13 Hình 2.1 Ví dụ thuật toán ShellSort 35 Hình 2.2 Minh họa thuật tốn ParallelQuickSort 38 Hình 2.3 Ví dụ minh họa thuật tốn ParallelQuickSort 40 Hình 2.4 Minh họa thuật toán HyperQuickSort 43 Hình 2.5 Ví dụ minh họa thuật tốn HyperQuickSort 45 Hình 2.6 Minh họa thuật tốn PSRS 49 Hình 3.1 Biểu đồ so sánh thời gian chạy thuật tốn PSRS 57 Hình 3.2 Biểu đồ so sánh thời gian chạy BXL chạy với N=106 57 Hình 3.3 Biểu đồ so sánh thời gian chạy thuật toán PSRS PQ 58 Danh mục bảng Bảng So sánh kết chạy thuật toán PSRS 55 Bảng So sánh thời gian chạy PSRS Parallel Quicksort 58 MỞ ĐẦU Từ thủa sơ khai lịch sử máy tính khoa học tính tốn, việc xây dựng chương trình tính tốn máy tính điều kỳ diệu tất người Từ máy tính khổng lồ, cồng kềnh thao tác tác vụ đơn giản đến máy nhỉnh lịng bàn tay tính tốn hàng nghìn tỷ phép tính giây, từ chương trình nhỏ có vài ba câu lệnh ngày xa xưa, đến chương trình vơ lớn có sức ảnh hưởng đến tồn cầu ngày nay… tất điều nói lên phát triển mạnh mẽ ngành công nghệ thông tin Sự phát triển phần cứng lẫn phần mềm tạo nhiều đổi thay cơng nghệ tính tốn ngành khoa học máy tính ảnh hưởng đến tất lĩnh vực khác xã hội Càng ngày yêu cầu tốc độ tính tốn xử lí lớn, địi hỏi máy tính, phần mềm chương trình phải thực thi cực nhanh Chính vậy, việc sử dụng hệ thống tính tốn truyền thống khơng thể đáp ứng kịp nhu cầu người ngành khoa học liên quan Việc xây dựng chương trình tính tốn hệ thống song song để hỗ trợ cho hệ thống trở thành điều tất yếu Nhìn lại thấy rằng, hầu hết chương trình địi hỏi tốc độ tính tốn lớn áp dụng lĩnh vực quan trọng ảnh hưởng lớn đến xã hội Khơng đâu xa, ứng dụng dự báo thời tiết, thiên tai, ứng dụng ngành thiết kế máy bay, kĩ thuật quân sự, ứng dụng thương mại điện tử, y sinh học v.v… tất xử lí song song với mục tiêu nâng cao hiệu xử lí tính tốn Nhận thấy hướng nghiên cứu phát triển ứng dụng nhiều thực tế, em lựa chọn đề tài vào việc nghiên cứu tìm hiểu hệ thống xử lí song song áp dụng vào giải tốn cụ thể tốn xếp Khái niệm xếp dường gắn liền với xã hội loài người từ thuở ban đầu văn minh Nó đơn giản thể việc hàng, việc phân công công việc,… Ngày nay, giới mà khoa học công nghệ thay đổi ngày nhu cầu khai thác, tìm kiếm thơng tin người ngày cao việc nâng cao tính hiệu giải thuật xếp ngày trở nên quan trọng Từ vấn đề trên, đề tài “Nâng cao hiệu toán xếp với giải thuật song song” tập trung vào nghiên cứu việc song song hóa thuật toán xếp nhằm giảm thiểu thời gian xếp liệu để đưa vào áp dụng ứng dụng thực tế Luận văn gồm có chương: Chương Tổng quan xử lí song song toán xếp Nội dung chủ yếu chương nhằm giới thiệu tổng quan xử lí song song, mơ hình hệ thống song song đồng thời đưa nhìn nhận tổng quan tốn xếp, đơi với việc hệ thống hóa lại hầu hết thuật tốn xếp theo hướng tính tốn Chương Một số thuật toán song song cho toán xếp Nội dung chương tập trung vào vấn đề phát triển thuật toán song song cho toán xếp Đây nội dung luận văn, thuật tốn xếp song song hóa dựa chiến lược cụ thể Chương Ứng dụng lập trình song song cài đặt thuật tốn PSRS ParallelQuickSort Nội dung chương trình bày kết thực nghiệm thuật toán PSRS so sánh hai thuật toán PSRS ParallelQuicksort thời gian xử lí chạy hệ thống tính tốn song song với nhiều xử lí CHƯƠNG TỔNG QUAN VỀ XỬ LÝ SONG SONG VÀ BÀI TOÁN SẮP XẾP 1.1 Tổng quan xử lí song song 1.1.1 Tính tốn tính tốn song song Trong thập niên 60, tảng để thiết kế máy tính dựa mơ hình John Von Neumann, với xử lí đơn nối với vùng lưu trữ làm nhớ thời điểm có lệnh thực thi Đó hình thức tính tốn [1] Tuy nhiên, khoa học kỹ thuật ngày phát triển, từ đặt nhiều tốn với khối lượng tính tốn lớn, có tốn mà kết có ý nghĩa hồn thành thời gian cho phép Từ hình thành nên hệ thống xử lí song song Xử lí song song q trình xử lí gồm nhiều tiến trình kích hoạt đồng thời, thực nhiều xử lí tham gia vào giải tốn Hình 1.1 1.2 phần cho thấy nhìn khái quát khác xử lí xử lí song song Hình 1.1 Minh họa q trình xử lí Trong xử lí (hình 1.1), CPU thực lệnh Si để giải tốn Với xử lí song song (hình 1.2) lệnh để giải toán chia thành cụm độc lập, gọi tiến trình tiến trình thực CPU khác Hình 1.2 Minh họa q trình xử lí song song Mục đích xây dựng hệ thống xử lí song song để thực tính tốn nhanh sở sử dụng đồng thời nhiều xử lí để giải tốn phức tạp với u cầu khối lượng tính tốn lớn Ví dụ tốn tính tốn lớn mô hoạt động mức lượng tử, tính tốn quỹ đạo chuyển động vật thể khơng gian, dự báo thời tiết, tốn nghiên cứu ADN… Trong tính tốn song song nay, sử dụng hai mơ hình chính: Thứ sử dụng siêu máy tính với nhiều xử lí tích hợp bên thiết kế đồng phần cứng lẫn phần mềm Các công nghệ áp dụng siêu máy tính thường cơng nghệ tiên tiến làm cho giá thành hệ thống siêu máy tính thường cao Cách thứ hai kết nối đơn máy tính đồng lại với thực toán, hệ thống máy tính kết nối hệ thống tính tốn song song phân cụm Hệ thống có ưu điểm giá thành rẻ sử dụng thiết bị thơng thường tính linh hoạt hệ thống (số nút, số xử lí, nhớ, thiết bị mạng… mang tính tùy biến cao) Sự phát triển mạnh mẽ mạng máy tính, cơng nghệ mạng lấp hạn chế truyền thơng hệ thống máy tính song song phân cụm làm cho phát triển rộng rãi Các lĩnh vực sử dụng hệ thống tính tốn song song phân cụm thường u cầu tính tốn khơng q lớn xử lí ảnh, nhận dạng vân tay, tính tốn kết cấu cơng trình, mơ thí nghiệm… Phần trình bày mơ hình máy tính song song theo phân loại Flynn giúp có nhìn tổng qt hệ thống song song 1.1.2 Kiến trúc máy tính song song Một hệ thống máy tính song song máy tính với nhiều xử lí cho phép thực đồng thời nhiều tiến trình Định nghĩa bao quát tất siêu máy tính với hàng trăm xử lí, mạng máy tính trạm hay hệ thống nhúng Dựa vào phân biệt cách kết nối xử lí (hay thành phần xử lí), xử lí nhớ mà có nhiều loại kiến trúc máy tính song song khác Nhưng theo phân loại Flynn dựa cấu trúc luồng lệnh luồng liệu có bốn kiến trúc điển hình [1] là: Hình 1.3 Phân loại Flynn kiến trúc song song SIMD- Single Instruction Multiple Data: Đơn lệnh đa liệu Đây kiểu máy tính song song mà xử lí thực lệnh với liệu khác Mơ hình có ưu điểm đơn giản thiết kế phần cứng phân mềm phù hợp để giải toán tương đối đặc thù có tính cân đối cao xử lí xử lí ảnh, tốn với liệu dạng vecto ma trận Các thuật giải cho đa máy tính thường chạy khơng hiệu máy SIMD MIMD- Multiple Instruction Multiple Data: Đa lệnh đa liệu Đây mơ hình kiến trúc máy tính song song thơng dụng Với mơ hình 10 tất xử lí thực lệnh khác với liệu riêng khác Sự thực thi lệnh theo chế đồng khơng đồng bộ, điều giúp cho MIMD linh hoạt việc xử lí song song Tuy nhiên, với tính linh hoạt mình, mơ hình MIMD mang theo phức tạp định Việc lập trình tốn song song theo mơ hình địi hỏi có nhiều cơng sức nghiên cứu, phân tích tốn để tìm cách phân rã tối ưu Ngồi cịn có hai loại mơ hình khác theo phân loại Flynn nhiên thơng dụng: SISD-Single Instruction Single Data: Đơn lệnh đơn liệu MISDMultiple Instruction Single Data: Đa lệnh đơn liệu Với đa dạng mơ hình kiến trúc máy tính song song, việc tổ chức kết nối xử lí mơ hình quan tâm nghiên cứu Hầu hết máy tính với đa xử lí phải đưa cách để xử lí tương tác với Trong số hệ thống, xử lí sử dụng kết nối mạng để truy cập vào nhớ chia sẻ, có số hệ thống khác lại sử dụng phương thức gửi nhận tin nhắn để truyền thông với Dưới số mạng kết nối sử dụng hệ thống máy tính song song 1.1.3 Một số mạng kết nối hệ thống song song 1.1.3.1 Mạng liên kết tuyến tính liên kết vịng Với mạng liên kết tuyến tính, xử lí liên kết với theo dãy đánh số theo thứ tự tăng dần Trong mạng liên kết này, trừ hai phần tử đầu cuối mạng, tất xử lí có hai láng giềng xử lí trước sau Đây dạng liên kết đơn giản, liệu cần phải chuyển qua nhiều xử lí, truyền thơng liệu xử lí đặc biệt xử lí đầu cuối bị chậm lại số xử lí lớn Hình 1.4 Mạng liên kết tuyến tính mạng vịng 11 Mạng liên kết vịng tổ chức tương tự mạng liên kết tuyến tính, nhiên, với mạng liên kết vịng, xử lí cuối kết nối với để tạo thành vòng Trong mạng liên kết vịng, trao đổi xử lí thực theo chiều gọi mạng đơn, theo hai chiều gọi mạng kép Sự truyền thơng mạng liên kết vịng, xử lí xa bị trễ 1.1.3.2 Mạng liên kết lưới hai chiều (Two-Dimentional mesh) Với mạng liên kết lưới hai chiều, xử lí liên kết với láng giềng: Trên, dưới, trái phải Mạng liên kết lưới hai chiều có hai dạng lưới quay vịng lưới khơng quay vịng Hình 1.5 Mạng liên kết lưới hai chiều 1.1.3.3 Mạng liên kết hình khối (Hypercube Network) Giả sử có 𝑛 xử lí, 𝑛 lũy thừa 2, 𝑛 = 2𝐷 (𝐷 ≥ 0) Trong mạng này, xử lí liên kết với 𝐷 xử lí lân cận Trong đó, số xử lí đánh dạng chuỗi nhị phân, hai xử lí kết nối với chúng sai khác bit 12 Hình 1.6 Mạng liên kết khối Trên số kiểu liên kết xử lí điển hình sử dụng mơ hình song song Việc sử dụng kiến trúc song song thức liên kết xử lí song song yếu tố quan trọng ảnh hưởng đến khả xử lí tốn 1.1.4 Cơ sở đánh giá giải thuật song song Việc sử dụng mơ hình song song phù hợp với toán vấn đề quan trọng xử lí song song lẽ thuật tốn phù hợp với mơ hình chưa tốt với mơ hình Để đánh giá giải thuật song song, thông thường dựa vào ba tiêu chí: Thời gian thực hiện, khả tăng tốc, độ hiệu thuật toán [4] 1.1.4.1 Thời gian thực Khi tốc độ tính tốn coi mục tiêu chủ yếu xây dựng máy tính song song, thời gian thực độ đo quan trọng việc đánh giá giải thuật Nó xác định thời gian giải thuật yêu cầu để giải vấn đề máy tính song song, khoảng thời gian kể từ thời điểm ban đầu đến thời điểm kết thúc Nếu xử lí khác nhau, tất khơng bắt đầu kết thúc đồng thời, thời gian thực thời gian kéo dài thời điểm xử lí bắt đầu tính tốn đến thời điểm cuối xử lí kết thúc tính tốn Trước thực cài đặt giải thuật song song hay có phân tích lý thuyết, giải thuật cần thời gian để giải vấn đề tính tốn 13 cho Điều thường thực cách tính tốn thao tác bước mà giải thuật thực trường hợp xấu Số bước hàm kích thước đầu vào (input size) Các thao tác phép cộng, so sánh đổi chỗ, truyền liệu Mỗi thao tác yêu cầu số cố định đơn vị thời gian máy tính đơn xử lí truyền thống 1.1.4.2 Hệ số tăng tốc độ hiệu giải thuật Thời gian thực không thước đo thuận tiện để đánh giá độ hiệu thuật giải Khi thời gian thực có xu hướng biến đổi theo kích thước tốn, thời gian thực phải tiêu chuẩn hóa so sánh hiệu giải thuật với kích thước toán khác Hiệu giải thuật định nghĩa phần thời gian mà xử lí dùng để thực cơng việc có ích, mức độ hiệu giải thuật sử dụng tài ngun tính tốn máy tính song song theo hướng độc lập với kích thước tốn Được xác định cơng thức sau: 𝐸𝑝 = 𝑇𝑠 𝑝𝑇𝑝 Trong đó: 𝑇𝑠 thời gian thực thuật tốn xử lí 𝑇𝑝 thời gian thực thuật toán song song 𝑝 xử lí 𝐸𝑝 hệ số hiệu giải thuật 𝑝 số xử lí Một độ đo khác đánh giá hiệu giải thuật khả tăng tốc, hệ số mà thời gian thực giảm thực tốn với 𝑝 xử lí Được xác định theo công thức sau: 14 𝑆𝑝 = 𝑇𝑠 𝑇𝑝 Trong đó: 𝑇𝑠 thời gian thực thuật tốn xử lí 𝑇𝑝 thời gian thực thuật toán song song 𝑝 xử lí 𝑆𝑝 hệ số tăng tốc 𝑆𝑝 lớn thuật tốn song song tốt Năm 1967 Amdahl đưa luật giới hạn khả tăng tốc: Luật Amdahl [4]: Giả sử 𝑓 tỉ lệ cần phải thực tính tốn tuần tự, đó, 0≤ 𝑓 ≤1 Khả tăng tốc tối đa 𝑆𝑝 đạt máy tính song song có p xử lí thực tính tốn là: 𝑆𝑝 ≤ 𝑓+ = 1−𝑓 𝑝 + (𝑝 − 1)𝑓 𝑝 1.2 Tổng quan toán xếp Sắp xếp toán quan trọng phổ biến lĩnh vực tin học Đó tốn sử dụng hầu hết chương trình ứng dụng máy tính [5] Thực tế có phần dễ hiểu việc xử lí liệu xếp trở nên dễ dàng nhiều so với liệu ngẫu nhiên khơng có thứ tự Hơn nữa, có nhiều giải thuật thao tác liệu yêu cầu liệu phải xếp trước xử lí Vì vậy, có nhiều thuật toán xếp nghiên cứu phát triển 1.2.1 Bài toán xếp Sắp xếp trình xử lí danh sách phần tử để đặt chúng theo thứ tự (tăng dần, giảm dần) dựa nội dung lưu trữ phần tử Với liệu kiểu số, toán xếp đơn giản phát biểu sau: Cho 15 mảng S có 𝑛 phần tử thuộc kiểu số, S={a1, a2,…, an} chưa có thứ tự theo giá trị phần tử Yêu cầu chuyển mảng S cho thành mảng S’ S’={a1’, a2’,…, an’| ai’∈S, ai’ ≤ aj’ (hoặc ai’ ≥aj’) với 1≤ 𝑖 ≤ 𝑗 ≤ 𝑛} Ta có mảng S’ xếp từ mảng S Có nhiều giải thuật thực việc xếp mảng, phân loại giải thuật xếp theo tiêu chí đây: Xét không gian xếp, giải thuật xếp phân thành xếp xếp [3][4] Với xếp trong, số lượng phần tử xếp đủ nhỏ để vừa với nhớ chính, xếp sử dụng để nhớ bổ trợ ổ đĩa lưu trữ, thường sử dụng để xếp trường hợp số phần tử lớn Xét cách thức thực xếp, phân thành hai loại xếp dựa so sánh xếp không dựa so sánh [3] Thuật toán xếp dựa so sánh xếp chuỗi phần tử cách lặp lại phép so sánh cặp phần tử, chúng khơng theo thứ tự đổi chỗ chúng cho Các phép tính xếp dựa so sánh gọi “so sánh- đổi chỗ” Khi xây dựng thuật toán xếp kiểu này, phải đặt mục tiêu giảm thiểu tối đa số phép “so sánh đổi chỗ” để tăng hiệu thuật toán xếp Với tư tưởng khác, thuật tốn xếp khơng dựa so sánh thực việc xếp cách sử dụng hiểu biết cụ thể thuộc tính phần tử (chẳng hạn biểu diễn phần tử dạng nhị phân…) Phổ biến thường sử dụng phân loại thuật toán xếp dựa phân tích độ phức tạp thuật toán Dựa vào độ phức tạp thuật toán xếp chia thành ba lớp sau: Lớp thuật tốn có độ phức tạp 𝑂(𝑛2 ) bao gồm thuật toán xếp chọn (SelectSort), thuật toán xếp chèn (InsertSort), thuật toán xếp bọt (BubbleSort), thuật toán xếp Gnome, thuật toán ShellSort Thứ hai lớp thuật tốn có độ phức tạp 16 𝑂(𝑛𝑙𝑜𝑔𝑛) bao gồm thuật toán xếp nhanh (QuickSort), thuật toán xếp trộn (MergeSort), thuật toán xếp vun đống (HeapSort), thuật toán xếp chẵn lẻ (OddEvenSort)… cuối lớp thuật tốn có độ phức tạp thấp, xếp liệu đặc biệt thuật toán xếp CountingSort 𝑂(𝑛 ∗ 𝑚), RadixSort 𝑂(𝑛 + 𝑚) Cùng với mục đích xếp nhau, có nhiều phương pháp giải khác Do đó, dựa vào độ phức tạp thuật toán để đánh giá thuật toán tốt thuật tốn mặt khơng nên Việc chọn thuật tốn xếp thích hợp cho phù hợp với yêu cầu, điều kiện cụ thể kỹ người lập trình Những thuật tốn có độ phức tạp 𝑂(𝑛2 ) nên áp dụng chương trình có lần xếp với kích thước nhỏ Về tốc độ, nói BubbleSort ln tồi nhất, mã lệnh lại đơn giản dễ cài đặt Trong thuật tốn có độ phức tạp O(n2), InsertionSort tỏ nhanh phương pháp lại mã lệnh tương đối đơn giản Với n nhỏ, việc chọn m khóa nhỏ SelectionSort thực dễ dàng khơng cần phải xếp lại tồn InsertionSort Các thuật toán CountingSort RadixSort nên tận dụng trường hợp khóa xếp số tự nhiên (hay kiểu liệu quy thành số tự nhiên) thuật tốn có tốc độ cao QuickSort, HeapSort, MergeSort ShellSort thuật toán xếp tổng quát, dãy khóa thuộc kiểu liệu có thứ tự áp dụng khơng thiết phải số QuickSort gặp nhược điểm trường hợp suy biến xác suất sảy trường hợp thường nhỏ HeapSort mã lệnh phức tạp khó cài đặt hơn, cần chọn m khóa lớn dãy khóa HeapSort khơng phải lại tồn dãy MergeSort phải địi hỏi thêm khơng gian nhớ phụ, nên áp dụng trường hợp xếp file Cịn Shellsort khó việc đánh giá thời gian thực thi, sửa đổi thuật tốn xếp chèn lại có tốc độ tốt, mã lệnh đơn giản lượng 17 nhớ cần huy động Tuy nhiên, nhược điểm bốn phương pháp nhỏ so với ưu điểm chung chúng nhanh hiệu cao Hơn nữa, chúng đánh giá cao khơng tính tổng qt tốc độ nhanh, mà cịn kết tiếp cận khoa học toán xếp [2] 1.2.2 Các cấu trúc liệu cho toán xếp Việc tổ chức liệu cho toán xếp vấn đề quan trọng cần quan tâm để hỗ trợ nâng cao hiệu thuật toán thực Thông thường, tập đối tượng cần xếp tập ghi, ghi bao gồm số trường khác Nhưng toàn trường liệu ghi xem xét đến trình xếp mà trường (hay vài trường đó) ý tới Trường gọi trường khóa Việc xếp tiến hành dựa vào giá trị khóa Khi xếp, ghi bảng đặt lại vào vị trí cho giá trị khóa tương ứng với chúng có thứ tự ấn định Vì kích thước tồn ghi lớn, nên việc xếp thực trực tiếp ghi đòi hỏi chuyển đổi vị trí ghi, kéo theo việc thường xuyên phải di chuyển, copy vùng nhớ lớn, gây tổn phí nhiều thời gian Để khắc phục tình trạng này, ta xây dựng bảng khoá, ghi bảng ban đầu tương ứng với ghi bảng khóa Bảng khóa gồm ghi ghi gồm có hai trường: trường khóa trường chứa liên kết tới ghi ban đầu, tức chứa thông tin đủ để biết ghi tương ứng với bảng ban đầu ghi Sau việc xếp thực trực tiếp bảng khóa, q trình xếp, bảng khơng bị ảnh hưởng gì, việc truy cập vào bảng ghi bảng thực cách dựa vào trường liên kết ghi tương ứng thuộc bảng khóa [2] Do khóa có vai trị đặc biệt nên sau này, trình bày giải thuật, ta coi khóa đại diện cho ghi đơn giản, ta nói tới giá trị khóa mà thơi 18 ...ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN - BÙI THANH TUYỀN NÂNG CAO HIỆU QUẢ BÀI TOÁN SẮP XẾP VỚI GIẢI THUẬT SONG SONG Chuyên ngành: Cơ sở toán cho tin học Mã số:... GIẢI THUẬT SONG SONG Chuyên ngành: Cơ sở toán cho tin học Mã số: 60460110 LUẬN VĂN THẠC SĨ KHOA HỌC NGƯỜI HƯỚNG DẪN KHOA HỌC: TS Nguyễn Thị Hồng Minh Hà Nội – Năm 2014 LỜI CẢM ƠN Trên thực tế,... theo hướng tính tốn Chương Một số thuật toán song song cho toán xếp Nội dung chương tập trung vào vấn đề phát triển thuật toán song song cho toán xếp Đây nội dung luận văn, thuật tốn xếp song song