Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 212 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
212
Dung lượng
2,37 MB
Nội dung
1 1 Nâng caonănglựcNângcaonănglựcdạyhọc Thuật toándạyhọcThuậttoán Nguyễn Thế Dũng Nguyễn Thế Dũng Khoa Tin học – ĐHSP Huế. Khoa Tin học – ĐHSP Huế. http://sites.google.com/site/nguyenthedunghue/ http://sites.google.com/site/nguyenthedunghue/ 2 2 Nội dung Nội dung Chủ đề 1: Giới thiệu về thuậttoán Chủ đề 2: Phân tích tính hiệu quả của thuậttoán Chủ đề 3: Phương pháp “tham lam” Chủ đề 4: Phương pháp “chia để trị” Chủ đề 5: Phương pháp qui hoạch động Chủ đề 6: Thuậttoán trên đồ thị Chủ đề 7: Phương pháp xác suất Chủ đề 8: Về độ phức tạp tính toán 3 3 Tài liệu tham khảo Tài liệu tham khảo 1. Nâng caonănglựcdạyhọc thuật toán – Nguyễn Đức Nhuận – Nguyễn Thế Dũng. 2. Giải thuật và lập trình – Lê Minh Hoàng. 4 4 Tài liệu tham khảo Tài liệu tham khảo 3. ThuậtToán – Nguyễn Xuân Huy. 4. Một số vấn đề chọn lọc trong Tin học - Nguyễn Xuân My và một số tác giả. 5. Lý thuyết độ phức tạp tính toán - Phan Đình Diệu. 6. Trí tuệ nhân tạo – Hoàng Lan Giao – ĐHKH Huế. 7. Slide này có tham khảo slide Phân tích – thiết kế thuậttoán – Phan Hà Hạnh Dương – ĐHQG Hà Nội Một số khó khăn trong dạyhọc lập trình Một số khó khăn trong dạyhọc lập trình Học sinh khó hiểu. Chuyển sang lập trình rất khó khăn. • Sự khác nhau giữa lập trình và thuật toán. Cái nhìn về thuậttoán chưa khái quát. • Phân lớp, đánh giá thuật toán… • Nói chung dạy và họcthuậttoán là khó, đòi hỏi đam mê!!!. • Vì sao??? Làm sao??? Kinh nghiệm giảng dạy bồi dưỡng. Quan điểm nhận xét về chương trình, nội dung liên quan đến thuật toán. Trao đổi 1 bài dạy về lập trình cụ thể. 7 7 Chủ đề 1: Giới thiệu về thuậttoán Chủ đề 1: Giới thiệu về thuậttoán I. Khái niệm thuậttoán II. Một số ví dụ III. Đánh giá thuậttoán trong trường hợp xấu nhất và theo trung bình IV. Về thuậttoán hiệu quả V. Một số bài toán cụ thể VI. Cấu trúc dữ liệu 8 8 Khái niệm về thuậttoán Khái niệm về thuậttoánThuật toán: Dữ kiện vào K ế t q u ả r a Quá trình tính toán Một dãy các bước tính toán Một dãy số D ã y s ố đ ư ợ c s ắ p x ế p Thuậttoán sắp xếp Một định nghĩa bài bản về thuậttoán xin xem thêm trong các giáo trình “Automat và ngôn ngữ hình thức”. Có liên quan đến Máy tính điện tử logic – máy Turing, tính giải được của bài toán và lý thuyết hàm đệ qui. 10 10 Đánh giá thuậttoán Đánh giá thuậttoán Giải quyết một bài toán. Vấn đề: Có nhiều thuật toán. Chọn thuậttoán nào ? Mô hình hóa Lập chương trình Viết thuậttoán [...]... pháp thực nghiệm: Lập trình, và thử trên các ví dụ xem thuậttoán nào nhanh Phương pháp lý thuyết: Tính toán thời gian, bộ nhớ, … cần thiết của mỗi thuâttoán dựa theo độ lớn của dữ liệu vào Ưu điểm: - không phụ thuộc ngôn ngữ lập trình, loại máy tính - Biết được tính hiệu quả của thuậttoán đối với các dữ liệu có kích thước lớn 11 Đánh giá thuậttoán trong trường hợp xấu nhất và theo trung bình Ví dụ:... f(n) = O (g(n)) ≈ a≤b f(n) = Ω (g(n)) ≈ a≥b f(n) = θ (g(n)) ≈ a=b f(n) = o (g(n)) ≈ ab Tiểu luận: Độ phức tạp thuậttoán Lớp các bài toán với các độ phức tạp Đánh giá độ phức tạp của các thuậttoán đệ qui Đánh giá các thuậttoán cơ bản ở sách Tin học lớp 11 29 Sắp xếp các hàm sau theo quan hệ 0 và θ 30 Một số hàm cơ bản 1 n^b = o(a^n), với mọi a>1 và b 2 e^x = 1 + x + θ(x^2),... find(x){ } // tìm phần tử có giá trị x procedure merge(a,b) // tìm hợp của hai tập được sắp Đề tài tiểu luận: Xây dựng các thuậttoán mô tả các thao tác cơ bản trên: dãy, cây nhị phân 22 Chủ đề 2: Phân tích tính hiệu quả của thuậttoán I Các ký hiệu đánh giá tiệm cận II Phân tích thuậttoán III Giải các phương trình đệ qui IV Một số ví dụ 23 Ký hiệu O: O(g(n)) = {f(n): tồn tại hằng số c và N để: 0 ≤ f(n) 1 Tìm thuậttoán tính... nghĩa: F(0) = 0, F(1) = 1, và F(n) = F(n-1) + F(n-2) với n > 1 Tìm thuậttoán tính số Fibonacci thứ n 15 Thuậttoán thứ nhất và thứ hai function fib1(n){ if n < 2 then return n; else return fib1(n-1) + fib2(n-2); } function fib2(n){ a= 0; b = 1; for k = 1 to n do {c=b; b = a+b; a=c;} return b; } 16 Thuậttoán thứ ba fonction fib3(n){ i = 1; j = 0; k = 0; h = 1; while n>0 do { if (n lẻ) then { t = j*h; j . 1 1 Nâng cao năng lực Nâng cao năng lực dạy học Thuật toán dạy học Thuật toán Nguyễn Thế Dũng Nguyễn Thế Dũng Khoa Tin học – ĐHSP Huế. Khoa Tin học – ĐHSP Huế. http://sites.google.com/site/nguyenthedunghue/ http://sites.google.com/site/nguyenthedunghue/ 2 2 Nội. qui. 10 10 Đánh giá thuật toán Đánh giá thuật toán Giải quyết một bài toán. Vấn đề: Có nhiều thuật toán. Chọn thuật toán nào ? Mô hình hóa Lập chương trình Viết thuật toán 11 11 Phương pháp. khăn. • Sự khác nhau giữa lập trình và thuật toán. Cái nhìn về thuật toán chưa khái quát. • Phân lớp, đánh giá thuật toán • Nói chung dạy và học thuật toán là khó, đòi hỏi đam mê!!!. • Vì sao???