PHÂN TÍCH THIẾT KẾ THUẬT TOÁN

34 861 0
PHÂN TÍCH THIẾT KẾ 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

PHÂN TÍCH THIẾT KẾ THUẬT TOÁN 1 GIỚI THIỆU MÔN HỌC  Tên học phần: Phân tích thiết kế thuật toán  Tên tiếng Anh: Design and Analysis of Algorithms  Số tín chỉ: 3LT + 1TH  Hình thức đánh giá:  Thực hành (30%): Bài tập  Lý thuyết(70%): Thi viết 2 MỤC TIÊU MÔN HỌC  Trang bị cho sinh viên  Hiểu đƣợc về thuật toán: Khái niệm, tính chất, cách biểu diễn, độ phức tap.  Biết các kiến thức toán học cơ sở cho việc đánh giá độ phức tạp của tuật toán  Áp dụng đƣợc các phƣơng pháp thiết kế để xây dựng các thuật toán, đồng thời biết cách đánh giá độ phức tạp của thuật toán. 3 NỘI DUNG  Chƣơng 1: Giới thiệu thuật toán  Chƣơng 2: Kỹ thuật đánh giá thuật toán  Chƣơng 3: Kỹ thuật thiết kế thuật toán  Chƣơng 4 (option): Một số vấn đề mở rộng và nâng cao 4 TÀI LIỆU THAM KHẢO  Cẩm nang thuật toán – cuốn 1, Robert Sedgewich – Trần Đan Thƣ  Cấu trúc dữ liệu và thuật toán, Đại học Công nghệ thông tin.  Lê Minh Hoàng, Giải thuật và Lập trình, Đại học Sƣ phạm Hà Nội, 2002  Samir Khuller, Design and Analysis Algorithms: Lecture note, 2012 5 CHƢƠNG 1 GiỚI THIỆU VỀ THUẬT TOÁN 6 NỘI DUNG  1. Khái niệm về thuật toán  2. Độ phức tạp của thuật toán  2.1. Ký hiệu tiệm cận: Big-O  2.2. Lớp các hàm thông dụng  3. Phân loại sơ bộ các đoạn mã thuật toán.  3.1 Không tính toán lặp  3.2 Có tính toán lặp 7 NỘI DUNG  1. Khái niệm về thuật toán  2. Độ phức tạp của thuật toán  2.1. Ký hiệu tiệm cận: Big-O  2.2. Lớp các hàm thông dụng 8 1. KHÁI NIỆM VỀ THUẬT TOÁN  Thuật toán là gì?  Tập hợp hữu hạn các hƣớng dẫn rõ ràng để giải quyết một bài toán (vấnđề).  Mở rộng (máy tính): một dãy hữu hạn các bƣớc không mập mờ và có thể thực thi đƣợc, quá trình hành động theo các bƣớc này phải dừng và cho đƣợc kết quả nhƣ mong muốn.  Tính chất cơ bản của thuật toán:  Xác định = không mập mờ+thực thi đƣợc  Hữu hạn  Đúng 9 1. KHÁI NIỆM VỀ THUẬT TOÁN  Các dạng diễn đạt thuật toán  Ngôn ngữ tự nhiên  Lƣu đồ (Sơ đồ khối)  Mã giả  Ngôn ngữ lập trình 10 [...]... tính toán, không gian, thời gian Giải quyết một bài toán Mô hình hóa Viết thuật toán Lập chƣơng trình Có nhiều thuật toán Chọn thuật toán nào ? 14 PHÂN TÍCH THUẬT TOÁN  Sự cần thiết của phân tích và đánh giá thuật toán    Lựa chọn một thuật toán tốt nhất trong các thuật toán để cài đặt chƣơng trình giải quyết bài toán đặt ra Cải tiến thuật toán hiện có để có đƣợc thuật toán tốt hơn Một thuật toán. .. trƣng hết  3 Khó so sánh hai thuật giải 21 HƢỚNG TIẾP CẬN LÝ THUYẾT Tính toán thời gian, bộ nhớ, … cần thiết của mỗi thuật toán dựa theo độ lớn của dữ liệu đầu vào  Ƣu điểm:  Không phụ thuộc vào ngôn ngữ lập trình, loại máy tính  Biết đƣợc tính hiệu quả của thuật toán đối với các dữ liệu có kích thƣớc lớn  22 NỘI DUNG 1 Khái niệm về thuật toán  2 Độ phức tạp của thuật toán  2.1 Ký hiệu tiệm cận:... chỉ quan tâm đến tiêu chuẩn thực hiện nhanh 15 PHÂN TÍCH THUẬT TOÁN  Thời gian thực hiện chương trình: là một hàm của kích thƣớc dữ liệu vào   Ký hiệu: T(n) với n là kích thƣớc dữ liệu vào Ví dụ: Chƣơng trình tính tổng của n số có thời gian thực hiện là T(n) = Cn với C là hằng số  Thời gian thực hiện chƣơng trình là một hàm không âm 16 PHÂN TÍCH THUẬT TOÁN  Đơn vị đo T(n) không phải là đơn vị đo... trong máy tính  Ví dụ: Khi ta nói thời gian thực hiện chƣơng trình là T(n) = Cn có nghĩa là chƣơng trình ấy cần có Cn chỉ thị 17 PHÂN TÍCH THUẬT TOÁN  Ví dụ: Xem xét đoạn mã giả sau: sum = 0; for(i= 0; i < n; i++) sum = sum + i; return sum T(n) = ? 18 PHÂN TÍCH THUẬT TOÁN  Thời gian thực hiện trong trƣờng hợp xấu nhất   Thời gian thực hiện chƣơng trình không chỉ phụ thuộc và kích thƣớc dữ liệu... Một dãy số Quá trình tính toán Một dãy các bước tính toán Thuật toán sắp xếp 11 1 KHÁI NIỆM VỀ THUẬT TOÁN  Ví dụ: Một lớp học cần chọn lớp trƣởng theo các bƣớc:  1 Lập danh sách sinh viên  2 Sắp thứ tự  3 Chọn ngƣời đứng đầu làm lớp trƣởng  Danh sách cần gì?  Sắp theo thứ tự nào? (tăng giảm, tiêu chí nào)  Nếu trùng tiêu chí thì giải quyết ra sao? 12 1 KHÁI NIỆM THUẬT TOÁN  Sửa lại: a) Lập danh... hợp xấu nhất, tức là T(n) là thời gian lớn nhất để thực hiện chƣơng trình đối với mọi dữ liệu có cùng kích thƣớc n 19 PHÂN TÍCH THUẬT TOÁN  Làm sao xác định “thời gian thực hiện chƣơng trình T(n)” ?  1 Hƣớng tiệm cận    Thực nghiệm Lý thuyết 2 Công cụ toán học (Chƣơng 2)  Kỹ thuật sơ cấp  Hàm sinh  Hoán vị và nghịch thế 20 HƢỚNG TIẾP CẬN THỰC NGHIỆM  Các bƣớc thực hiện   2 Thực thi chƣơng... ngƣợc lại chọn ngƣời có điểm toán cao nhất, nếu không chọn đƣợc thì bốcthăm  Phân biệt mập mờ và lựa chọn có quyết định:  Mập mờ là thiếu thông tin hoặc có nhiều lựa chọn nhƣng không đủ điều kiện quyết định, ví dụ:bƣớc 1, 2  Lựa chọn có quyết định là hoàn toàn xác định duy nhất trong điều kiện cụ thể của vấn đề,ví dụ bƣớc c 13 1 KHÁI NIỆM VỀ THUẬT TOÁN  Đặc trƣng của thuật toán   Xác định đầu vào/... CỦA THUẬT TOÁN 2.1 KÝ HIỆU TIỆM CẬN: BIG-O  Cho một hàm T(n), T(n) được gọi là có độ phức tạp f(n) nếu tồn tại các hằng số C, n0 sao cho: T(n) ≤ Cf(n) với  n  n0 Ký hiệu: T(n) = O(f(n)) ( Ý nghĩa: T(n)  O(f(n)) ) (Hàm f(n) là chặn trên của hàm T(n)) Chú ý: O(Cf(n)) = O(f(n)) với C là hắng số O(C) = O(1) 24 2 ĐỘ PHỨC TẠP CỦA THUẬT TOÁN 2.1 KÝ HIỆU TIỆM CẬN: BIG-O 25 2 ĐỘ PHỨC TẠP CỦA THUẬT TOÁN... CỦA THUẬT TOÁN 2.1 KÝ HIỆU TIỆM CẬN: BIG-O  Ta thấy: Với T(n) = n    T(n) = O(n2) T(n) = O(n3) Ví dụ 3: Xét T(n) = 3n2 + 5n + 4 Tìm f(n) để T(n) = O(f(n)) ? Ta có: T(n) = 3n2 + 5n + 4 ≤ 3n2 + 5n2 + 4n2 ,  n  1 T(n) = 12n2  T(n) = O(12n2) = O(n2) 27 2 ĐỘ PHỨC TẠP CỦA THUẬT TOÁN 2.1 KÝ HIỆU TIỆM CẬN: BIG-O  ???   1 2 2 2 n  O n  n 1 2 1 2 2  n  n  1 ??? 2 28 2 ĐỘ PHỨC TẠP CỦA THUẬT TOÁN... O(max(f(n), g(n)))  Qui tắc nhân: Thời gian thực hiện của hai đoạn chương trình P1 , P2 lồng nhau là T(n) = O(f(n)*g(n))  29 2 ĐỘ PHỨC TẠP CỦA THUẬT TOÁN 2.2 CÁC LỚP HÀM THÔNG DỤNG  30 2 ĐỘ PHỨC TẠP CỦA THUẬT TOÁN 2.2 CÁC LỚP HÀM THÔNG DỤNG 31 2 ĐỘ PHỨC TẠP CỦA THUẬT TOÁN 2.1 KÝ HIỆU TIỆM CẬN: BIG-O  Định lý:  g(n) = O(f(n))  a.g(n) = O(f(n))  a> 0  d(n) = O(f(n)), e(n) = O(g(n))  d(n)+e(n) = O(f(n)+g(n)) . trình Viết thuật toán 14 PHÂN TÍCH THUẬT TOÁN  Sự cần thiết của phân tích và đánh giá thuật toán  Lựa chọn một thuật toán tốt nhất trong các thuật toán để cài đặt chƣơng trình giải quyết bài toán. các thuật toán, đồng thời biết cách đánh giá độ phức tạp của thuật toán. 3 NỘI DUNG  Chƣơng 1: Giới thiệu thuật toán  Chƣơng 2: Kỹ thuật đánh giá thuật toán  Chƣơng 3: Kỹ thuật thiết kế thuật. PHÂN TÍCH THIẾT KẾ THUẬT TOÁN 1 GIỚI THIỆU MÔN HỌC  Tên học phần: Phân tích thiết kế thuật toán  Tên tiếng Anh: Design and Analysis of Algorithms 

Ngày đăng: 12/04/2015, 14:07

Từ khóa liên quan

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

Tài liệu liên quan