Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 48 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
48
Dung lượng
459,7 KB
Nội dung
Nghiên cứu khoa học Mô phỏng thuật toán sắp xếp Sinh viên thực hiện:Nguyễn Hải Nam 1 NGHIÊN CỨU KHOA HỌC Đề tài : Tìm hiểu về Thuật Toán Sắp Xếp Nghiên cứu khoa học Mô phỏng thuật toán sắp xếp Sinh viên thực hiện:Nguyễn Hải Nam 2 Mục lục NGHIÊN CỨU KHOA HỌC 1 Đề tài : Tìm hiểu về Thuật Toán Sắp Xếp 1 Mục lục 2 PHẦN MỞ ĐẦU 4 1. Lý do chọn đề tài 4 2. Mục tiêu và nhiệm vụ 5 Chương 1. MỘT SỐ KIẾN THỨC CƠ SỞ 6 1.1. Thuật toán 6 1.1.1. Khái niệm thuật toán 6 1.1.2. Các đặc trưng của thuật toán 7 Chương 2. MÔ PHỎNG THUẬT TOÁN 10 2.1. Tổng quan về mô phỏng thuật toán 10 2.1.1. Khái niệm mô phỏng thuật toán 10 2.1.2. Lịch sử mô phỏng thuật toán 11 2.1.3. Tác dụng của mô phỏng thuật toán 14 2.1.4. Kiến trúc của hệ thống mô phỏng thuật toán 18 2.1.5. Lựa chọn công cụ mô phỏng thuật toán 20 2.2. Một số yêu cầu đối với mô phỏng thuật toán 21 2.2.1. Mô tả đúng theo thuật toán 21 2.2.2. Hệ thống mô phỏng phải được thực hiện theo từng bước 21 2.2.3. Mô phỏng thuật toán phải có tính động 21 2.2.4. Phải tạo ra sự phân cấp cho người học 22 2.2.5. Cấu trúc của mô phỏng thuật toán 22 2.3. Quy trình thiết kế nhiệm vụ mô phỏng thuật toán 23 2.3.1. Nghiên cứu và phân tích giải thuật 23 2.3.2. Phân tích giải thuật thành nhiều bước, sau đó lần lượt mô phỏng từng bước đó 26 2.3.3. Phân tích khả năng tổng hợp các bước đã phân tích thành giải thuật 27 2.3.4. Phân tích những khó khăn và thuận lợi với những người lần đầu tiên biết đến giải thuật 27 2.4. Kết luận 28 Chương3 : CHƯƠNG TRÌNH ỨNG DỤNG THUẬT TOÁN SẮP XẾP 29 3.1 CÁC THUẬT TOÁN SẮP XẾP ĐƠN GIẢN 30 3.1.1 Sắp xếp lựa chọn 30 3.1.2 Sắp xếp xen vào 32 3.1.3 Sắp xếp nổi bọt 33 3.2 Sắp xếp hòa nhập 35 Nghiên cứu khoa học Mô phỏng thuật toán sắp xếp Sinh viên thực hiện:Nguyễn Hải Nam 3 3.3 Sắp xếp nhanh 38 3.4 Sắp xếp sử dụng cây thứ tự bộ phận 45 Nghiên cứu khoa học Mô phỏng thuật toán sắp xếp Sinh viên thực hiện:Nguyễn Hải Nam 4 PHẦN MỞ ĐẦU 1. Lý do chọn đề tài Trong hai thập kỷ qua, mô phỏng thuật toán đã được các nhà sư phạm của ngành công nghệ thông tin sử dụng như một công cụ có tính chất giúp đỡ trong việc dạy các thuật toán đồ thị, các thuật toán sắp xếp, … khác nhau bằng máy tính. Nguyên nhân của việc mô phỏng thuật toán được sử dụng như một công cụ trợ giúp cho việc giảng dạy là do nó có thể cung cấp các mô phỏng động bằng đồ họa của một thuật toán và các thay đổi trong cấu trúc dữ liệu của nó trong suốt quá trình thực thi. Như một phần của quá trình học thuật toán, những sinh viên ngành công nghệ thông tin sẽ học về cấu trúc của một trình biên dịch (compiler) trong một ngôn ngữ lập trình cho quá trình đó. Điều này sẽ chỉ ra cho chúng ta từng nhiệm vụ của các giai đoạn khác nhau trong trình biên dịch. Hiện nay, một số hệ thống mô phỏng thuật toán được phát triển sau hai thập kỷ. Hầu hết các thuật toán được đề cập đến trong giai đoạn này đều là các hệ thống phổ biến hơn và tinh vi hơn các hệ thống mà thực tế đang sử dụng. Mô phỏng thuật toán ngày càng trở nên hữu ích và trở thành một giáo cụ trực quan rất quan trọng trong hầu hết các lĩnh vực, nhất là trong môi trường giáo dục. Với các nhà sư phạm của ngành công nghệ thông tin thì mô phỏng thuật toán có tác dụng như một tài liệu hướng dẫn trong việc dạy các thuật toán bằng máy tính. Đặc biệt, nó giúp học sinh và sinh viên hiểu cấu trúc dữ liệu và thuật toán nhanh hơn. Như vậy, mô phỏng thuật toán góp phần to lớn vào việc ứng dụng CNTT trong giảng dạy và góp phần vào sự phát triển nhanh chóng của hệ thống elearning. Nghiên cứu khoa học Mô phỏng thuật toán sắp xếp Sinh viên thực hiện:Nguyễn Hải Nam 5 Thuật toán về sắp xếp rất đa dạng và phong phú. Vì vậy vấn đề “ Mô phỏng thuật toán sắp xếp ” được chọn để nghiên cứu trong khóa luận này. 2. Mục tiêu và nhiệm vụ Nghiên cứu tổng quan về mô phỏng thuật toán. Hướng đến các kỹ thuật lập trình với mã nguồn mở và ngôn ngữ lập trình C# Áp dụng kết quả nghiên cứu làm một demo mô phỏng thuật toán sắp xếp 3. Cấu trúc khóa luận Chương 1: Một số kiến thức cơ sở Trình bày khái niệm thuật toán, các đặc trưng của thuật toán Độ phức tạp của thuật toán Chương 2: Mô phỏng thuật toán Tổng quan về mô phỏng thuật toán Một số yêu cầu đối với mô phỏng thuật toán Quy trình thiết kế nhiệm vụ mô phỏng thuật toán Chương 3: Chương trình ứng dụng thuật toán sắp xếp Phân tích và thiết kế hệ thống mô phỏng thuật toán sắp xếp Phân tích một số thuật toán hiện tại Nghiên cứu khoa học Mô phỏng thuật toán sắp xếp Sinh viên thực hiện:Nguyễn Hải Nam 6 Chương 1. MỘT SỐ KIẾN THỨC CƠ SỞ 1.1. Thuật toán 1.1.1. Khái niệm thuật toán Thuật ngữ “algorithm” (thuật toán hoặc còn gọi là giải thuật) được gọi theo tên nhà toán học Ả rập thế kỷ IX al-Khowarizmi, người đã viết cuốn sách về các chữ số Hindu – cơ sở của kí hiệu số thập phân hiện đại (xem [4], trang 118). Xuất xứ ban đầu là từ algorism, được dùng để chỉ các quy tắc thực hiện các phép tính số học trên các số thập phân. Sau đó, vào thế kỷ XVIII algorism biến thành algorithm. Với sự quan tâm ngày càng tăng đối với máy tính, khái niệm thuật toán đã được cho một ý nghĩa chung hơn, bao hàm cả các thủ tục xác định để giải các bài toán, chứ không phải chỉ là thủ tục để thực hiện các phép tính số học. Thuật toán là một dãy hữu hạn các thao tác được sắp xếp theo một trình tự xác định sao cho sau khi thực hiện dãy các thao tác ấy, từ Input của bài toán ta nhận được Output cần tìm. Cũng có thế xem thuật toán như một công cụ để giải quyết một bài toán cụ thể. Phát biểu bài toán sẽ chỉ định tổng quát mối quan hệ Input/Output cần thiết. Thuật toán mô tả một thủ tục tính toán cụ thể để đạt được mối quan hệ Input/Output đó. Vào khoảng những năm 1930 - 1936, lần lượt các nhà toán học K.Gödel, S. Kleene, A. Church, A. Turing đã đề ra một số định nghĩa khác nhau cho Nghiên cứu khoa học Mô phỏng thuật toán sắp xếp Sinh viên thực hiện:Nguyễn Hải Nam 7 khái niệm thuật toán. Trong số các định nghĩa toán học khác nhau (nhưng tương đương) về thuật toán, các khái niệm Máy Turing (1937) và Hàm đệ quy (1931-1936) được sử dụng rộng rãi hơn vì có nhiều thuận tiện cho các nghiên cứu cả về lí thuyết lẫn thực hành. 1.1.2. Các đặc trưng của thuật toán Các thuật toán có một số tính chất chung, đó là: Đầu vào (Input): Một thuật toán có các giá trị đầu vào từ một tập xác định. Đầu ra (Output): Từ mỗi tập giá trị đầu vào, thuật toán sẽ tạo ra các giá trị đầu ra. Các giá trị đầu ra chính là nghiệm của bài toán. Tính xác định: Các bước của thuật toán phải được xác định một cách chính xác. Tính đúng đắn: Một thuật toán phải cho các giá trị đầu ra đúng đối với mỗi tập giá trị đầu vào. Tính hữu hạn: Một thuật toán phải tạo ra các giá trị đầu ra sau một số hữu hạn (có thể rất lớn) các bước thực hiện đối với mỗi tập đầu vào. Tính hiệu quả: Mỗi bước của thuật toán phải thực hiện được một cách chính xác và trong một khoảng thời gian chấp nhận được. Nghiên cứu khoa học Mô phỏng thuật toán sắp xếp Sinh viên thực hiện:Nguyễn Hải Nam 8 Tính tổng quát: Thuật toán cần phải áp dụng được cho mọi tập dữ liệu đầu vào của bài toán, chứ không phải chỉ cho một tập đặc biệt các giá trị đầu vào. 1.2.Độ phức tạp của thuật toán Cần chú ý rằng mỗi thuật toán chỉ giải một lớp bài toán nào đó, nhưng có thể có nhiều thuật toán khác nhau giải cùng một bài toán. Một vấn đề đặt ra là ta cần chọn một thuật toán tốt để giải bài toán đã cho. Nhưng thế nào là thuật toán tốt? Thước đo hiệu quả là thời gian máy tính sử dụng để giải bài toán theo thuật toán đang xét khi các giá trị đầu vào có kích thước xác định, và dung lượng bộ nhớ đòi hỏi để thực hiện thuật toán đó. Như vậy khi xem xét đến độ phức tạp tính toán của thuật toán ta phải xem xét đến độ phức tạp thời gian và độ phức tạp không gian. Độ phức tạp không gian gắn liền với cấu trúc dữ liệu cụ thể được dùng để thực hiện thuật toán. Độ phức tạp thời gian: Độ phức tạp thời gian của một thuật toán có thể biểu diễn qua số phép toán thực hiện thuật toán đó khi các giá trị đầu vào có kích thước xác định. Độ phức tạp trong trường hợp xấu nhất là trường hợp phải dùng tối đa các phép toán để giải bài toán theo thuật toán đang xét. Độ phức tạp trong trường hợp trung bình, trong trường hợp này ta phải đi tìm số trung bình các phép toán để giải bài toán trên toàn bộ các giá trị đầu vào có kích thước đã cho. Các thuật ngữ thường dùng cho độ phức tạp của thuật toán: O(1): Độ phức tạp hằng số Nghiên cứu khoa học Mô phỏng thuật toán sắp xếp Sinh viên thực hiện:Nguyễn Hải Nam 9 O(logn): Độ phức tạp lôgarit O(n): Độ phức tạp tuyến tính O(nlogn): Độ phức tạp nlogn O(n b ): Độ phức tạp đa thức O(b n ), b > 1: Độ phức tạp hàm mũ O(n!): Độ phức tạp giai thừa Nghiên cứu khoa học Mô phỏng thuật toán sắp xếp Sinh viên thực hiện:Nguyễn Hải Nam 10 Chương 2. MÔ PHỎNG THUẬT TOÁN 2.1. Tổng quan về mô phỏng thuật toán 2.1.1. Khái niệm mô phỏng thuật toán Mô phỏng thuật toán là quá trình tách dữ liệu, thao tác, ngữ nghĩa và tạo mô phỏng đồ họa cho quá trình trên [Stasko 1990] (xem [23]). Mô phỏng thuật toán được thiết kế để giúp người dùng có thể hiểu thuật toán, đánh giá chương trình và sửa lỗi chương trình. Một chương trình máy tính chứa các cấu trúc dữ liệu của thuật toán mà nó thực thi. Trong quá trình thực thi chương trình, các giá trị trong cơ sở dữ liệu được thay đổi. Mô phỏng thuật toán sử dụng biểu diễn đồ họa để biểu diễn cấu trúc dữ liệu và chỉ ra sự thay đổi giá trị trong cơ sở dữ liệu trong mỗi trạng thái. Thông qua đó, người sử dụng có thể xem được từng bước thực thi chương trình và nhờ vậy có thể hiểu chi tiết được thuật toán. Mô phỏng thuật toán cũng được dùng để đánh giá một chương trình đã có bằng cách cung cấp các mô phỏng cho các thành phần của hệ thống, nhờ đó có thể kiểm tra được hiệu năng của hệ thống. Bên cạnh việc giúp người sử dụng hiểu hơn về hệ thống, mô phỏng thuật toán còn được dùng để giúp thực hiện quá trình dò lỗi dễ dàng hơn. Để sử dụng mô phỏng thuật toán trong quá trình dò lỗi của một chương trình, người sử dụng chú thích vào các trạng thái của chương trình để tạo ra các lệnh mô phỏng, sau đó chúng sẽ được đưa vào hệ thống mô phỏng thuật toán để tạo mô phỏng. Người sử dụng có thể xem chương trình của họ đã thực hiện như thế nào, các giá trị dữ liệu ở mỗi bước và một bước sẽ ảnh hưởng [...]... cần sắp xếp lại các thành phần của mảng A sao cho: A[0].key . CÁC THUẬT TOÁN SẮP XẾP ĐƠN GIẢN 30 3.1.1 Sắp xếp lựa chọn 30 3.1.2 Sắp xếp xen vào 32 3.1.3 Sắp xếp nổi bọt 33 3.2 Sắp xếp hòa nhập 35 Nghiên cứu khoa học Mô phỏng thuật toán sắp xếp Sinh. Nghiên cứu khoa học Mô phỏng thuật toán sắp xếp Sinh viên thực hiện:Nguyễn Hải Nam 2 Mục lục NGHIÊN CỨU KHOA HỌC 1 Đề tài : Tìm hiểu về Thuật Toán Sắp Xếp 1 Mục lục 2 PHẦN. Nghiên cứu khoa học Mô phỏng thuật toán sắp xếp Sinh viên thực hiện:Nguyễn Hải Nam 1 NGHIÊN CỨU KHOA HỌC Đề tài : Tìm hiểu về Thuật Toán Sắp Xếp