TAILIEUCHUNG - Bài giảng Phân tích thiết kế giải thuật: Đánh giá độ phức tạp thuật toán - GV. Hà Đại Dương

Bài giảng này sẽ đi sâu vào phần Đánh giá độ phức tạp thuật toán, cụ thể là: phân tích trực tiếp các đoạn mã, phân tích đoạn mã có lời gọi chương trình con và đánh giá dựa trên thực nghiệm. Để biết rõ hơn về nội dung chi tiết, . | 2/2/2017 Phân tích và Thiết kế THUẬT TOÁN Hà Đại Dương duonghd@ Web: 1 Bài 2 - Đánh giá độ phức tạp thuật toán PHÂN TÍCH VÀ THIẾT KẾ THUẬ TOÁN 2 NỘI DUNG I. II. III. IV. V. Giới thiệu Phân tích trực tiếp các đoạn mã Phân tích đoạn mã có lời gọi chươn trình con Đánh giá dựa trên thực nghiệm Bài tập 3 1 2/2/2017 1. Giới thiệu • Trước khi thực hiện tính độ phức tạp thuật toán A giải bài toán P ta cần – f(n): • Xác định độ dài dữ liệu - n: có thể là số ký tự, số phần tử của mảng, . • Tiêu chí đánh giá: thống nhất là số các thao tác cơ bản (gán, so sánh) • Để đánh giá có thể sử dụng: • Phân tích trực tiếp để tính số các thao tác • Phương pháp đệ quy 4 1. Giới thiệu • Dựa trên một số quy tắc • • • • Quy tắc cộng Quy tắc nhân Quy tắc phân tích một số câu lệnh Xét tính chất của chương trình con 5 1. Giới thiệu • Quy tắc cộng • T1(n) và T2(n) là thời gian thực hiện của hai đoạn chương trình con nối tiếp nhau (độc lập) P1, P2 và • T1(n)= O(f1(n)); T2(n)=O(f2(n)) • Khi đó thời gian (độ phức tạp thời gian) thực hiện của 2 đoạn chương trình đó là T(n)=T1(n)+T2(n) = O(max{f1(n), f2(n)} Chứng minh: Theo đầu bài, tồn tại các hằng M1, M2, n1, n2 để T1(n)≤M1*f1(n), n>n1, T2(n)≤M2*f2(n), n>n2 Khi đó T(n) = T1(n) + T2(n) ≤ M1*f1(n)+M2*f2(n), ≤ (n) với n>n0, M=max(M1,M2), n0=max(n1,n2) f(n)=max(f1(n),f2(n)) 6 2 2/2/2017 1. Giới thiệu • Quy tắc nhân • T1(n) và T2(n) là thời gian thực hiện của hai đoạn chương trình con lồng nhau (phụ thuộc) P1, P2 và • T1(n)= O(f1(n)); T2(n)=O(f2(n)) • Khi đó thời gian (độ phức tạp thời gian) thực hiện của 2 đoạn chương trình đó là T(n)=T1(n)*T2(n) = O(f1(n)*f2(n)) Chứng minh: (tương tự với quy tắc cộng) 7 1. Giới thiệu • Quy tắc phân tích câu lệnh • Các câu lệnh đơn (gán, đọc, ghi ) có độ phức tạp là Hằng - O(1) • Ví dụ: (1) (2) (3) (4) - read(a) read(b) read(c) delta = b*b – 4*a*c • Nhận xét: Trong đoạn chương trình chỉ bao gồm các lệnh đơn kế tiếp nhau (không chứa các vòng lặp), theo

TỪ KHÓA LIÊN QUAN
Đã phát hiện trình chặn quảng cáo AdBlock
Trang web này phụ thuộc vào doanh thu từ số lần hiển thị quảng cáo để tồn tại. Vui lòng tắt trình chặn quảng cáo của bạn hoặc tạm dừng tính năng chặn quảng cáo cho trang web này.