ĐỒ ÁN NHẬP MÔN PHÂN TÍCH ĐỘ PHỨC TẠP CỦA THUẬT TOÁN

31 3.8K 56
ĐỒ ÁN NHẬP MÔN PHÂN TÍCH ĐỘ PHỨC TẠP CỦA THUẬT TOÁN

Đ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

Toán Rời Rạc

BỘ MÔN KHOA HỌC MÁY TÍNH ………………………………………………………… Đồ án Nhập Môn Phân Tích Độ Phức Tạp Thuật Toán Đề tài: Đánh giá các thuật toán Sort Giảng viên hướng dẫn lý thuyết TS. Trần Đan Thư Giảng viên hướng dẫn thực hành Dương Chí Nhân Nhóm thực hiện 0712002 – Nguyễn Thanh Đồng 0712228 – Trần Trung Kiên 0712394 – Bành Trí Thành 0712474 – Nguyễn Trọng Nhật Trung 0712476 – Phan Thanh Trí TP.HCM, tháng 05 năm 2010 MỞ ĐẦU Đề tài nhóm chúng tôi là đánh giá độ phức tạp của các giải thuật sắp xếp. Nói đến các giải thuật sắp xếp thì có lẽ đây là một chủ đề đã quá quen thuộc và kinh điển. Tuy nhiên, vì chúng ta xem nó quá quen thuộc nên chúng ta thường hay quên nó đi. Mục tiêu của đề tài này là để chúng ta cùng nhau nắm lại tư tưởng của các thuật toán sắp xếp, độ phức tạp về mặt lý thuyết, và hơn nữa, bằng thực nghiệm đánh giá, kiểm chứng lại các độ phức tạp này. Nội dung của phần báo cáo được chia làm 2 phần lớn:  Nền tảng lý thuyết: Giới thiệu tổng quan về tư tưởng, độ phức tạp của các thuật toán sắp xếp.  Thực nghiệm: Nêu lên cách tiến hành thực nghiệm, kết quả và nhận xét. Các thuật toán Sort Page 2 MỤC LỤC MỞ ĐẦU 2 MỤC LỤC 3 Chương 1 NỀN TẢNG LÝ THUYẾT 4 1.1 SELECTION SORT 5 1.1.1 Ý tưởng thuật toán 5 1.1.2 Ví dụ minh họa 5 1.1.3 Độ phức tạp 6 1.2 INTERCHANGE SORT 7 1.2.1 Ý tưởng thuật toán 7 1.2.2 Ví dụ minh họa 8 1.2.3 Độ phức tạp 11 1.3 BUBBLE SORT 12 1.3.1 Ý tưởng thuật toán 12 1.3.2 Ví dụ minh họa 12 Cho dãy số như trên thuật toán SELECTION SORT 12 1.3.3 Độ phức tạp 13 1.4 SHAKER SORT 14 1.4.1 Ý tưởng thuật toán 14 1.4.2 Ví dụ minh họa 14 1.4.3 Độ phức tạp 14 1.5 INSERTION SORT 14 1.5.1 Ý tưởng thuật toán 14 1.5.2 Ví dụ minh họa 15 1.5.3 Độ phức tạp 16 1.6 BINARY INSERTION SORT 17 1.6.1 Ý tưởng thuật toán 17 1.6.2 Ví dụ minh họa 17 1.6.3 Độ phức tạp 17 1.7 HEAP SORT 18 1.7.1 Ý tưởng thuật toán 18 Các thuật toán Sort Page 3 1.7.2 Ví dụ minh họa 18 1.7.3 Độ phức tạp 20 1.8 MERGE SORT 21 1.8.1 Ý tưởng thuật toán 21 1.8.2 Ví dụ minh họa 21 1.8.3 Độ phức tạp 22 1.9 BINARY TREE 23 1.9.1 Ý tưởng thuật toán 23 1.9.2 Ví dụ minh họa 23 1.9.3 Độ phức tạp 26 1.10 QUICK SORT 27 1.10.1 Ý tưởng thuật toán 27 1.10.2 Ví dụ minh họa 27 1.10.3 Độ phức tạp 28 1.11 SHELL SORT 29 1.11.1 Ý tưởng thuật toán 29 1.11.2 Ví dụ minh họa 29 1.11.3 Độ phức tạp 30 Chương 2 THỰC NGHIỆM 31 2.1 PHÂN TÍCH VÀ THIẾT KẾ CHƯƠNG TRÌNH THỰC NGHIỆM 31 2.2 KẾT QUẢ THỰC NGHIỆM 31 Chương 3 ĐÁNH GIÁ ĐỀ TÀI 31 TÀI LIỆU THAM KHẢO 31 Chương 1 NỀN TẢNG LÝ THUYẾT Các thuật toán Sort Page 4 1.1 SELECTION SORT 1.1.1 Ý tưởng thuật toán  Ta chọn phần tử nhỏ nhất trong N phần tử ban đầu, đưa phần tử này về đầu dãy hiện hành. Sau đó, ta không quan tâm đến nó nữa, ta xem dãy hiện hành chỉ còn N-1 phần tử của dãy ban đầu tính từ vị trí thứ 2. Cứ vậy, cho đến khi dãy hiện hành chỉ còn 1 phần tử, ta được 1 dãy sắp tăng.  Các bước tiến hành như sau: o Bước 1: Khởi động i = 1 o Bước 2: Tìm phần tử nhỏ nhất a[min] trong dãy hiện hành từ a[i] đến a[N] o Bước 3: Hoán vị a[min] và a[i] o Bước 4: i = i+1  Nếu i < =N-1: quay trở lại bước 2  Ngược lại: STOP! 1.1.2 Ví dụ minh họa Cho dãy số 1 2 8 5 12 6 4 15 Hình minh họa cho quá trình sắp xếp của dãy số trên: Các thuật toán Sort Page 5 1.1.3 Độ phức tạp Để chọn được phần tử nhỏ nhất, ta cần duyệt qua n phần tử (tốn n-1 phép so sánh) và sau đó hoán vị nó với phần tử đầu tiên của dãy hiện hành. Để tìm phần tử nhỏ nhất tiếp theo, ta cần duyệt qua n-1 phần tử (tốn n-2 phép so sánh). Cứ như vậy, ta thấy ngay thuật toán sẽ tốn (n-1) + (n-2) + … + 1 = n(n-1)/2 = O(n 2 ) phép so sánh. Các thuật toán Sort Page 6 D Dãy được sắp xếp tăng Mỗi lần duyệt, ta luôn phải hoán vị 1 lần (1 hoán vị tương đương với 3 phép gán), nghĩa là thuật toán sẽ tốn 3(n-1) + 3(n-2) + … + 3 = 3n(n-1)/2 = O(n 2 ) phép gán. Tổng kết lại, ta luôn có độ phức tạp của thuật toán Selection Sort thuộc O(n 2 ) trong mọi trường hợp. 1.2 INTERCHANGE SORT 1.2.1 Ý tưởng thuật toán  Ý tưởng chính của thuật toán này là ta tìm các cặp nghịch thế và triệt tiêu chúng. Ta xuất phát từ phần tử đầu tiên của dãy, tìm tất các các cặp nghịch thế chứa phần tử này, triệt tiêu chúng bằng các hoán vị phần tử này với phần tử tương ứng trong cặp nghịch thế. Ta dễ nhận thấy sau lần duyệt đầu tiên, phần tử đầu tiên chính là phần tử nhỏ nhất của dãy. Ta tiếp tục xử lý với phần tử thứ hai, ta có được phần tử thứ hai chính là phần tử nhỏ thứ hai của dãy. Cứ như vậy, sau khi xử lý với phần tử thứ N -1 của dãy, ta được một dãy sắp tăng.  Các bước tiến hành như sau: o Bước 1: Khởi động i = 1 o Bước 2: j = i+1 o Bước 3: Trong khi j <= N thực hiện:  Nếu a[i]>a[j]: Hoán vị a[i] và a[j]  j = j+1 o Bước 4: i = i+1  Nếu i <= N-1: quay trở lại bước 2  Ngược lại: STOP! Các thuật toán Sort Page 7 1.2.2 Ví dụ minh họa Cho dãy số : 12 2 8 5 1 6 4 15 Hình minh họa cho quá trình sắp xếp của dãy số trên: Các thuật toán Sort Page 8 Các thuật toán Sort Page 9 Các thuật toán Sort Page 10 [...]... O(nlogn) Các thuật toán Sort Page 17  Thuật toán xấu nhất khi phần tử tìm được nằm ở đầu dãy, chi phí chèn lúc này là n (tìm kiếm là log2n, nhưng chi phí chèn mạnh hơn), mà có n phần tử nên là O(n2)  Ta thấy dường như độ phức tạp thuật toán phụ thuộc mạnh vào chi phí chèn hơn là tìm kiếm, cho nên cách tốt hơn ta sẽ cài đặt bằng danh sách liên kết để việc chèn được tốt hơn  Độ phức tạp thuật toán như sau:... thuộc O(n2) Tổng kết lại, ta có độ phức tạp của Quick Sort như sau: Các thuật toán Sort Page 28  Trường hợp tốt nhất: O(nlog2(n))  Trường hợp xấu nhất: O(n2)  Trường hợp trung bình: O(nlog2(n)) 1.11 SHELL SORT 1.11.1 Ý tưởng thuật toán  Là giải thuật cải tiến từ Insertion sort Ý tưởng chính của thuật toánphân chia dãy ban đầu thành nhưng dãy con mà mỗi phần tử của dãy cách nhau 1 vị trí là h... nhiều càng tốt  Việc đánh giá giải thuật Shell sort hiện nay rất phức tạp, thậm chí 1 số chưa được chứng minh Nhưng có 1 điều chắc chắn là hiệu quả của thuật toán phụ thuộc vào dãy các độ dài được chọn Trong trường hợp chọn dãy độ dài theo công thức hi = (hi – 1 - 1)/2 và hk = 1, k = log2 - 1 thì giải thuậtđộ phức tạp tương đương n1,2 i thực hiện:  Nếu a[j]

Ngày đăng: 28/03/2014, 21:37

Từ khóa liên quan

Mục lục

  • MỞ ĐẦU

  • MỤC LỤC

  • Chương 1 NỀN TẢNG LÝ THUYẾT

    • 1.1 SELECTION SORT

      • 1.1.1 Ý tưởng thuật toán

      • 1.1.2 Ví dụ minh họa

      • 1.1.3 Độ phức tạp

      • 1.2 INTERCHANGE SORT

        • 1.2.1 Ý tưởng thuật toán

        • 1.2.2 Ví dụ minh họa

        • 1.2.3 Độ phức tạp

        • 1.3 BUBBLE SORT

          • 1.3.1 Ý tưởng thuật toán

          • 1.3.2 Ví dụ minh họa

          • Cho dãy số như trên thuật toán SELECTION SORT

          • 1.3.3 Độ phức tạp

          • 1.4 SHAKER SORT

            • 1.4.1 Ý tưởng thuật toán

            • 1.4.2 Ví dụ minh họa

            • 1.4.3 Độ phức tạp

            • 1.5 INSERTION SORT

              • 1.5.1 Ý tưởng thuật toán

              • 1.5.2 Ví dụ minh họa

              • 1.5.3 Độ phức tạp

              • 1.6 BINARY INSERTION SORT

                • 1.6.1 Ý tưởng thuật toán

                • 1.6.2 Ví dụ minh họa

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

  • Đang cập nhật ...

Tài liệu liên quan