Mục tiêu của bài giảng lầ giúp sinh viên hiểu được sự cần thiết về phân tích thuật toán, nắm được các tiêu chuẩn để đánh giá một giải thuật, hiểu được các khái niệm về độ phức tạp thuật toán. Mời các bạn cùng tham khảo nội dung chi tiết.
GIỚI THIỆU PHÂN TÍCH THUẬT TỐN CuuDuongThanCong.com Bùi Tiến Lên 01/01/2017 https://fb.com/tailieudientucntt Phân tích thuật tốn Mục tiêu Hiểu cần thiết phân tích thuật tốn Nắm tiêu chuẩn để đánh giá giải thuật Hiểu khái niệm độ phức tạp thuật toán CuuDuongThanCong.com Spring 2017 https://fb.com/tailieudientucntt Data structure & Algorithm Phân tích thuật tốn (cont.) Để làm gì? 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 CuuDuongThanCong.com Spring 2017 https://fb.com/tailieudientucntt Data structure & Algorithm Phân tích thuật tốn (cont.) Các tiêu chí đánh giá thuật tốn Một thuật tốn xem Tính đắn: Thuật tốn phải chạy Tính hữu hạn: Thuật tốn phải dừng sau số bước hữu hạn Một thuật toán xem tốt Bộ nhớ: Sử dụng nhớ (liên quan đến cấu trúc liệu) Thời gian: Thực nhanh CuuDuongThanCong.com Spring 2017 https://fb.com/tailieudientucntt Data structure & Algorithm Thời gian thực chương trình Các yếu tố ảnh hưởng đến thời gian thực chương trình Cấu hình máy tính: tốc độ CPU, kích thước nhớ Ngơn ngữ lập trình Cấu trúc liệu Cài đặt chi tiết CuuDuongThanCong.com Spring 2017 https://fb.com/tailieudientucntt Data structure & Algorithm Thời gian thực chương trình (cont.) Định nghĩa 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 CuuDuongThanCong.com Spring 2017 https://fb.com/tailieudientucntt Data structure & Algorithm Thời gian thực chương trình (cont.) Lưu ý Thời gian thực chương trình hàm không âm, T (n) ≥ 0, ∀n ≥ Đơ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 phép toán so sánh phép toán gán phép toán số học CuuDuongThanCong.com Spring 2017 https://fb.com/tailieudientucntt 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; số phép gán: T1 số phép so sánh: T2 số phép cộng tăng: T3 Thời gian thực thuật toán T (n) = T1 + T2 + T3 CuuDuongThanCong.com Spring 2017 https://fb.com/tailieudientucntt 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 Phương pháp thực nghiệm Phương pháp toán học Phương pháp đếm Phương pháp truy hồi Phương pháp hàm sinh CuuDuongThanCong.com Spring 2017 https://fb.com/tailieudientucntt 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: 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 CuuDuongThanCong.com Spring 2017 https://fb.com/tailieudientucntt Data structure & Algorithm 10 ... n4 + C2 n2 + C2 n = 4T T (n) = 2T n8 + C2 n4 + C2 n = 8T T (n) = 2i T 2ni + iC2 n Quá trình thay kết thúc Khi ta có n 2i n n + 2C2 n + 3C2 n = suy 2i = n, i = log n T (n) = nT (1) + log nC2 n... = T (n − 1) + C2 T (n) = (T (n − 2) + C2 ) + C2 = T (n − 2) + 2C2 T (n) = (T (n − 3) + C2 ) + 2C2 = T (n − 3) + 3C2 T (n) = T (n − i) + iC2 T (n) = C1 + nC2 Vậy thời gian thực thi hàm giai... Spring 20 17 T (n) = 2T C1 n=1 + C2 n n > n https://fb.com/tailieudientucntt Data structure & Algorithm 44 Giải phương trình đệ qui cho hàm MergeSort (cont.) Lời giải T (n) = 2T n2 + C2 n T (n) = 2T