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

17 23 1
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

Đ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

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, mời các bạn cùng tham khảo.

2/2/2017 Phân tích Thiết kế THUẬT TỐN Hà Đại Dương duonghd@mta.edu.vn Web: fit.mta.edu.vn/~duonghd Bài - Đánh giá độ phức tạp thuật tốn PHÂN TÍCH VÀ THIẾT KẾ THUẬ TOÁN NỘI DUNG I II III IV V Giới thiệu Phân tích trực tiếp đoạn mã Phân tích đoạn mã có lời gọi chươn trình Đánh giá dựa thực nghiệm Bài tập 2/2/2017 Giới thiệu • Trước thực tính độ phức tạp thuật toán A giải toán P ta cần – f(n): • Xác định độ dài liệu - n: số ký tự, số phần tử mảng, … • Tiêu chí đánh giá: thống số thao tác (gán, so sánh ) • Để đánh giá sử dụng: • Phân tích trực tiếp để tính số thao tác • Phương pháp đệ quy Giới thiệu • Dựa số quy tắc • • • • Quy tắc cộng Quy tắc nhân Quy tắc phân tích số câu lệnh Xét tính chất chương trình Giới thiệu • Quy tắc cộng • T1(n) T2(n) thời gian thực hai đoạn chương trình nối tiếp (độc lập) P1, P2 • T1(n)= O(f1(n)); T2(n)=O(f2(n)) • Khi thời gian (độ phức tạp thời gian) thực đoạn chương trình T(n)=T1(n)+T2(n) = O(max{f1(n), f2(n)} Chứng minh: Theo đầu bài, tồn 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), ≤ M.f(n) với n>n0, M=max(M1,M2), n0=max(n1,n2) f(n)=max(f1(n),f2(n)) 2/2/2017 Giới thiệu • Quy tắc nhân • T1(n) T2(n) thời gian thực hai đoạn chương trình lồng (phụ thuộc) P1, P2 • T1(n)= O(f1(n)); T2(n)=O(f2(n)) • Khi thời gian (độ phức tạp thời gian) thực đoạn chương trình T(n)=T1(n)*T2(n) = O(f1(n)*f2(n)) Chứng minh: (tương tự với quy tắc cộng) 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 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 bao gồm lệnh đơn (không chứa vòng lặp), theo quy tắc cộng => Độ phức tạp thuật toán O(1) Giới thiệu • Quy tắc phân tích câu lệnh • Cấu trúc if: thời gian kiểm tra điều kiện + thời gian thực sau THEN ELSE • Cấu trúc lặp: • thời gian thực vịng lặp tổng thời gian thực thân vịng lặp • Nếu số bước tính vịng lặp khơng đổi (theo bước lặp) thời gian thực vịng lặp tích số lần lặp nhân với thời gian thực thân vịng lặp 2/2/2017 Phân tích trực tiếp 10 Phân tích trực tiếp 11 Phân tích trực tiếp 12 2/2/2017 Phân tích trực tiếp 13 Phân tích trực tiếp 14 Phân tích trực tiếp ss = n + n – = 2n - gn =n + + α(n) = 2n (xấu nhất) 15 2/2/2017 Phân tích trực tiếp 16 Phân tích trực tiếp 17 Phân tích trực tiếp 18 2/2/2017 Phân tích trực tiếp 19 Phân tích trực tiếp 20 Phân tích trực tiếp 21 2/2/2017 Phân tích trực tiếp 22 Phân tích trực tiếp 23 Phân tích trực tiếp 24 2/2/2017 Phân tích trực tiếp 25 Phân tích trực tiếp 26 Phân tích trực tiếp 27 2/2/2017 Phân tích trực tiếp 28 Phân tích trực tiếp 29 Phân tích trực tiếp 30 10 2/2/2017 Phân tích trực tiếp 31 Đoạn chương trình có gọi chương trình • Gọi chương trình khơng đệ quy A B B1 B11 B2 B12 32 Đoạn chương trình có gọi chương trình • Gọi chương trình đệ quy A Tính thời gian thực A? 33 11 2/2/2017 Đoạn chương trình có gọi chương trình • Độ phức tạp chương trình dạng đệ quy • Cách giải quyết: Thành lập phương trình đệ quy Giải phương trình đệ quy Nghiệm lời giải bước thời gian thực chương trình 34 Đoạn chương trình có gọi chương trình • Độ phức tạp chương trình dạng đệ quy • Phương trình đệ quy: Biểu diễn liên hệ T(n) với T(k), kn0 • C(n0): Thời gian thực n=n0 • T(k): thời gian thực n>k>n0 • d*: Thời gian phân chia tổng hợp kết 36 12 2/2/2017 Đoạn chương trình có gọi chương trình • Độ phức tạp chương trình dạng đệ quy • Ví dụ: xét hàm tính giai thừa Function gt(n) begin if n=0 then gt=1 else gt=n*gt(n-1) end Gọi T(n) thời gian tính n!, T(n-1) thời gian tính (n-1)! Khi n=0, ta có C(0)=1 (phép gán) 37 Đoạn chương trình có gọi chương trình • Độ phức tạp chương trình dạng đệ quy • Ví dụ: xét hàm tính giai thừa Function gt(n) begin if n=0 then gt=1 else gt=n*gt(n-1) end Khi n>0, hàm gọi đệ quy gt(n-1), tốn T(n-1) Tổng hợp kết cần phép gán, d*=1 38 Đoạn chương trình có gọi chương trình • Độ phức tạp chương trình dạng đệ quy • Ví dụ: xét hàm tính giai thừa Function gt(n) begin if n=0 then gt=1 else gt=n*gt(n-1) end Khi n>0, hàm gọi đệ quy gt(n-1), tốn T(n-1) Tổng hợp kết cần phép gán, d*=1 39 13 2/2/2017 Đoạn chương trình có gọi chương trình • Độ phức tạp chương trình dạng đệ quy • Giải phương trình đệ quy – Phương pháp truy hồi Với n>k>n0: dùng phương trình đệ quy thay T(k) vào vế phải Dừng k=n0 Thế T(n0) để tìm T(n) 40 Đoạn chương trình có gọi chương trình • Độ phức tạp chương trình dạng đệ quy • Giải phương trình đệ quy – Phương pháp truy hồi Ví dụ: Giải T(n) = T(n-1) + = T(n-2) + + … = T(n-i) + i Dừng n-i = 0, hay i=n, T(n) = + n = O(n) 41 Đoạn chương trình có gọi chương trình • Độ phức tạp chương trình dạng đệ quy • Giải phương trình đệ quy – Phương pháp truy hồi Ví dụ: Giải T(n) = T(n/2) + = T(n/22) + + … = T(n/2i) + i Dừng: n/2i = (n0), hay i=log2n, T(n) = + log2n 42 14 2/2/2017 Đánh giá thực nghiệm 43 Đánh giá thực nghiệm 44 Đánh giá thực nghiệm 45 15 2/2/2017 Đánh giá thực nghiệm 46 Đánh giá thực nghiệm 47 Đánh giá thực nghiệm 48 16 2/2/2017 NỘI DUNG BÀI HỌC I II III IV V Giới thiệu Phân tích trực tiếp đoạn mã Phân tích đoạn mã có lời gọi chươn trình Đánh giá dựa thực nghiệm Bài tập 49 Bài tập Tính số phép so sánh đoạn mã ví dụ slide 11 Sử dụng cơng thức tính tổng dãy lũy thừa tính độ phức tạp lý thuyết ví dụ slide 13, đánh giắ thực nghiệm chương trình ví dụ slide 13 so sánh với đánh giá lý thuyết Tính tham số α(i) qua tính số phép so sánh ví dụ 10 slide 26 Tính số phép gán ví dụ 10 trang 26 Tính số phép so sánh, số phép gán đoạn chương trình ví dụ 11 slide 27 Tính số phép so sánh, số phép gán đoạn chương trình ví dụ 12 slide 28 50 17 ... 20 Phân tích trực tiếp 21 2/2/2017 Phân tích trực tiếp 22 Phân tích trực tiếp 23 Phân tích trực tiếp 24 2/2/2017 Phân tích trực tiếp 25 Phân tích trực tiếp 26 Phân tích trực tiếp 27 2/2/2017 Phân. .. tính độ phức tạp thuật toán A giải toán P ta cần – f(n): • Xác định độ dài liệu - n: số ký tự, số phần tử mảng, … • Tiêu chí đánh giá: thống số thao tác (gán, so sánh ) • Để đánh giá sử dụng: • Phân. .. 2/2/2017 Đánh giá thực nghiệm 43 Đánh giá thực nghiệm 44 Đánh giá thực nghiệm 45 15 2/2/2017 Đánh giá thực nghiệm 46 Đánh giá thực nghiệm 47 Đánh giá thực nghiệm 48 16 2/2/2017 NỘI DUNG BÀI HỌC

Ngày đăng: 11/05/2021, 00:40

Từ khóa liên quan

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

Tài liệu liên quan