Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 125 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
125
Dung lượng
3,08 MB
Nội dung
1 PHÂN TÍCH VÀ THIẾT KẾ GIẢI THUẬT ANALYS AND DESIGN ALGORITHMS 1 2 Mục tiêu môn học Cung c p ki n th c và k năng trong ấ ế ứ ỹ vi c phân tích đ ph c t p tính toán ệ ộ ứ ạ c a gi i thu t.ủ ả ậ Tìm hi u các chi n thu t thi t k gi i ể ế ậ ế ế ả thu tậ 2 3 Nội dung môn học 3 TT Nội dung Số tiết Phân bổ thời gian Ghi chú Lý thuyết Bài Tập Tự học 1 Các khái niệm căn bản về phân tích độ phức tạp giải thuật 6 6 0 10 2 Phân tích độ phức tạp của một số giải thuật sắp thứ tự và tìm kiếm 8 8 3 20 3 Phân tích độ phức tạp của một số giải thuật trên cấu trúc dữ liệu 9 9 3 20 4 Phân tích độ phức tạp của một số giải thuật đồ thị 5 5 3 20 5 Các chiến lược thiết kế giải thuật 8 8 3 15 6 Vấn đề NP-đầy đủ 9 9 3 20 TỔNG 60 60 0 105 4 Đánh giá kết quả 1. Kiểm tra giữa kỳ: Tự luận Điểm Kiểm tra giữa kỳ < 4 không được thi kết thúc môn học lại 2. Kiểm tra cuối kỳ: Tự luận 3. Bài tập lớn: làm các bài tập 4. Điểm Đề tài < 4 không được thi kết thúc môn học lại 5. Thi kết thúc môn: Tự luận 6. Kiểm tra thường kỳ 4 5 Tài liệu học tập Giáo trình: [1] Cormen, T. H., Leiserson, C. E, and Rivest, Introduction to Algorithms, The MIT Press, 1997. Tham khảo: [2] Sedgewick, Algorithms in C++, Addison- Wesley, 1998 [3] Weiss, M.A, Data Structures and Algorithm Analysis in C , The Benjamin/Cummings Publishing, 1993 5 6 Nhắc nhở một số quy định Đi học đúng giờ Đeo thẻ SV Không để chuông điện thoại reo trong giờ học Không nghe điện thoại, nhắn tin trong giờ học Không nói chuyện riêng, làm ồn khi nghe giảng Mang đầy đủ tài liệu học tập của môn học (khi học LT và TH): giáo trình, bài tập, tập chép bài (hoặc slide bài giảng), usb để lưu bài tập Phải làm bài tập ở nhà Nếu vi phạm: Nhắc nhở chung Bị mời ra khỏi lớp Xóa tên khỏi môn học 6 7 Trao đổi thông tin Địa chỉ mail: • Kimchi_12041972@yahoo.com Địa chỉ download tài liệu: • http://my.opera.com/LinhChi10/blog/ 8 CÁC KHÁI NIỆM CĂN BẢN VỀ PHÂN TÍCH ĐỘ PHỨC TẠP GIẢI THUẬT Chương 1: 8 9 Nội dung Thuật ngữ và Khái Niệm Các định nghĩa về độ phức tạp Kỹ thuật chia-để-trị và giải thuật đệ quy Phương trình truy hồi và cách giải phương trình truy hồi Vài thí dụ minh hoạ về phân tích độ phức tạp giải thuật 9 10 Thuật ngữ và khái niệm Cấu trúc dữ liệu Thuật toán Độ phức tạp của thuật toán 10 [...]... false Thuật ngữ và khái niệm 18 Cấu trúc dữ liệu Thuật toán Độ phức tạp của thuật toán (algorithm complexity) Độ phức tạp của thuật toán 19 Độ phức tạp của giải thuật là chi phí về tài nguyên của hệ thống (chủ yếu là thời gian, bộ nhớ, CPU, đường truyền) cần thiết để thực hiện giải thuật Phân tích giải thuật (Analyzing of Algorithm) là quá trình tìm ra những đánh giá về tài nguyên cần thiết. .. nhất(best-case)của giải thuật Thời gian nhiều nhất để thực hiện giải thuật với mọi kích thước đầu vào n được gọi là thời gian chạy xấu nhất (worst-case) của giải thuật Thời gian trung bình để thực hiện giải thuật với mọi kích thước đầu vào n được gọi là thời gian chạy trung bình (average case) của giải thuật Độ phức tạp thời gian của thuật toán 22 Ví dụ Đánh giá độ phức tạp về thời gian của giải thuật. .. trong giải thuật sắp thứ tự Tổng số thao tác trừu tượng thường tùy thuộc vào một vài đại lượng ♦ Bước 3: thực hiện phân tích toán học để tìm ra các giá trị trung bình và giá trị xấu nhất của các đại lượng quan trọng Hai trường hợp phân tích 26 • Thường thì không khó để tìm ra cận trên của thời gian tính toán của một giải thuật • Nhưng phân tích trường hợp trung bình thường đòi hỏi một sự phân tích. .. thực hiện giải thuật Thời gian thực hiện thuật toán 20 Độ phức tạp về thời gian của giải thuật: Được qui về đếm số lệnh cần thực thi của giải thuật Đó là một hàm T(n) phụ thuộc vào kích thước n của input Coi như có một máy trừu tượng (abstract machine) để thực hiện giải thuật Độ phức tạp thời gian của thuật toán 21 Thời gian tối thiểu để thực hiện giải thuật với mọi kích thước đầu vào n gọi... Mảng (Array) Danh sách liên kết (Linked List) Ngăn xếp (Stack) Hàng đợi (Queue) Cây (Tree) … (1) the logical arrangement of data elements, combined with (2) the set of operations we need to access the elements Thuật ngữ và khái niệm 12 Cấu trúc dữ liệu Thuật toán Độ phức tạp của thuật toán Thuật toán 13 Giải thuật hay thuật toán là dãy các thao tác xác định nhằm giải một bài toán nào đó... n} Khung thức của sự phân tích 25 ♦ Bước 1: Đặc trưng hóa dữ liệu nhập và quyết định kiểu phân tích thích hợp Thông thường, ta tập trung vào việc Chứng minh rằng thời gian tính toán luôn nhỏ hơn một “cận trên” (upper bound), hay Dẫn xuất ra thời gian chạy trung bình đối với một dữ liệu nhập ngẫu nhiên ♦ Bước 2: nhận dạng thao tác trừu tượng (abstract operation) mà giải thuật dựa vào đó làm việc Thí... S Các đặc trưng của Thuật toán 14 INPUT: Có các bộ dữ liệu đầu vào thuộc một tập hợp dữ liệu nào đó OUTPUT: Xuất dữ liệu đầu ra theo yêu cầu của bài toán Tính xác định: Mỗi bước của thuật toán hoàn toàn xác định, được mô tả chính xác và cho kết quả xác định Tính dừng: Thuật toán phải kết thúc sau hữu hạn bước Tính phổ dụng: Thuật toán áp dụng được cho mọi bộ dữ liệu đầu vào thuộc tập hợp dữ... phân tích toán học cầu kỳ, phức tạp • Về nguyên tắc, một giải thuật có thể được phân tích đến một mức độ chính xác rất chi li Nhưng trong thực tế, chúng ta thường chỉ tính ước lượng (estimating) mà thôi • Tóm lại, chúng ta tìm kiếm một ước lượng thô về thời gian tính toán của một giải thuật (nhằm mục Phân lớp độ phức tạp 27 Hầu hết các giải thuật thường có một thông số chính, N, số mẫu dữ liệu nhập... ai= x 3 then return true 4 return false Độ phức tạp thời gian của thuật toán 23 Giải: Gọi α, β và γ là thời gian thực hiện của phép gán, phép so sánh và trả về của giải thuật Trường hợp tốt nhất: Nếu a1= x, thìT(n) = α+β+ γ Trường hợp xấu nhất : Nếu x ∉{a1, a2, , an} thì T(n) = (n+1)α+ nβ+ γ Độ phức tạp thời gian của thuật toán 24 Giải: Trường hợp trung bình: Tồn tại i, ai = x, thìT(n) = f(i)... hệ của CTDL và thuật toán 15 CTDL + Thuật toán = Chương trình Các phương pháp biểu diễn giải thuật 16 Diễn đạt bằng ngôn ngữ tự nhiên Biểu diễn bằng sơ đồ khối Biểu diễn bằng Giả mã, thông thường dùng ngôn ngữ tựa PASCAL; Ngôn ngữ lập trình cấp cao (High programming languages) như Pascal, C/C++ vv Các phương pháp biểu diễn giải thuật 17 Ví dụ: Tìm x trong dãy a1, a2, , an Đầu vào: Số x, dãy . kiếm 8 8 3 20 3 Phân tích độ phức tạp của một số giải thuật trên cấu trúc dữ liệu 9 9 3 20 4 Phân tích độ phức tạp của một số giải thuật đồ thị 5 5 3 20 5 Các chiến lược thiết kế giải thuật 8 8 3. VỀ PHÂN TÍCH ĐỘ PHỨC TẠP GIẢI THUẬT Chương 1: 8 9 Nội dung Thuật ngữ và Khái Niệm Các định nghĩa về độ phức tạp Kỹ thuật chia-để-trị và giải thuật đệ quy Phương trình truy hồi và. elements. 11 12 Cấu trúc dữ liệu Thuật toán Độ phức tạp của thuật toán 12 Thuật ngữ và khái niệm 13 Thuật toán Giải thuật hay thuật toán là dãy các thao tác xác Giải thuật hay thuật toán là dãy các