GIỚI THIỆU PHÂN TÍCH THUẬT TOÁN Bùi Tiến Lên 01/01/2017 Phân tích thuật toán Mục tiêu I Hiểu được sự cần thiết về phân tích thuật toán I Nắm được các tiêu chuẩn để đánh giá một giải thuật I Hiểu được[.]
GIỚI THIỆU PHÂN TÍCH THUẬT TỐN Bùi Tiến Lên 01/01/2017 Phân tích thuật tốn Mục tiêu I Hiểu cần thiết phân tích thuật tốn I Nắm tiêu chuẩn để đánh giá giải thuật I Hiểu khái niệm độ phức tạp thuật tốn Spring 2017 Data structure & Algorithm Phân tích thuật tốn (cont.) Để làm gì? I I I Cùng vấn đề, giải nhiều giải thuật khác Lựa chọn giải thuật tốt ”nhất” giải thuật cho toán Cải tiến giải thuật để có giải thuật tốt Spring 2017 Data structure & Algorithm Phân tích thuật tốn (cont.) Các tiêu chí đánh giá thuật tốn I I Một thuật tốn xem I Tính đắn: Thuật tốn phải chạy I Tính hữu hạn: Thuật toán phải dừng sau số bước hữu hạn Một thuật toán xem tốt I Bộ nhớ: Sử dụng nhớ (liên quan đến cấu trúc liệu) I Thời gian: Thực nhanh Spring 2017 Data structure & Algorithm Thời gian thực chương trình I Các yếu tố ảnh hưởng đến thời gian thực chương trình I Cấu hình máy tính: tốc độ CPU, kích thước nhớ I Ngơn ngữ lập trình I Cấu trúc liệu I Cài đặt chi tiết I Spring 2017 Data structure & Algorithm Thời gian thực chương trình (cont.) Định nghĩa I Thời gian thực hay chi phí thực hay độ phức tạp chương trình hàm kích thước liệu vào, ký hiệu T (n) n kích thước hay độ lớn liệu vào Spring 2017 Data structure & Algorithm Thời gian thực chương trình (cont.) Lưu ý I Thời gian thực chương trình hàm không âm, T (n) ≥ 0, ∀n ≥ I I Đơn vị T (n) đơn vị thời gian vật lý giờ, phút, giây, mà đo số lệnh (basic operations) thực máy tính lý tưởng Các lệnh I phép toán so sánh I phép toán gán I phép toán số học Spring 2017 Data structure & Algorithm Thời gian thực chương trình (cont.) Khi xác định T (n) cố gắng đơn giản hóa lệnh Chương trình 1: Tính tổng n số tự nhiên sum = 0; for (i = 0; i < n; i++) sum = sum + i; I số phép gán: T1 I số phép so sánh: T2 I số phép cộng tăng: T3 I Thời gian thực thuật toán T (n) = T1 + T2 + T3 Spring 2017 Data structure & Algorithm Phương pháp xác định thời gian thực chương trình Các phương pháp tiếp cận để xác định I I Phương pháp thực nghiệm Phương pháp toán học I Phương pháp đếm I Phương pháp truy hồi I Phương pháp hàm sinh Spring 2017 Data structure & Algorithm Phương pháp xác định thời gian thực chương trình (cont.) Do hàm T (n) khơng phụ thuộc vào n mà phụ thuộc vào cấu trúc liệu Do đó, phương pháp tốn học, phân tích thuật tốn người ta thường phân tích dựa tình huống: I I I Trường hợp tốt (best case): Không phản ánh ”tốt” thật chương trình Trường hợp trung bình (average case): Rất khó xác định xác Trường hợp xấu (worst case): Cho ”bảo đảm” Lưu ý Trong thực tế, người lập trình nên đánh giá T (n) cho trường hợp xấu trung bình Spring 2017 Data structure & Algorithm 10 .. .Phân tích thuật tốn Mục tiêu I Hiểu cần thiết phân tích thuật tốn I Nắm tiêu chuẩn để đánh giá giải thuật I Hiểu khái niệm độ phức tạp thuật tốn Spring 2017 Data structure & Algorithm Phân tích. .. Algorithm Phân tích thuật tốn (cont.) Các tiêu chí đánh giá thuật tốn I I Một thuật tốn xem I Tính đắn: Thuật tốn phải chạy I Tính hữu hạn: Thuật toán phải dừng sau số bước hữu hạn Một thuật toán. .. Algorithm Phân tích thuật tốn (cont.) Để làm gì? I I I Cùng vấn đề, giải nhiều giải thuật khác Lựa chọn giải thuật tốt ”nhất” giải thuật cho toán Cải tiến giải thuật để có giải thuật tốt Spring