Thuật toán: Độ phức tạp và tính đúng đắn pptx

35 1.3K 16
Thuật toán: Độ phức tạp và tính đúng đắn pptx

Đ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

Giới thiệu Độ tăng hàm Big-O Tính chất Big-Theta Tính chất Little-o Độ phức tạp Xấu nhất Trung bình Tính đúng đắn Điều kiện Lặp Ví dụ Tóm tắt 1/35Tổ toán đại học FPT 05/03/14 Chương 2.2, 2.3 Kenneth H. Rosen Xuân 2008 Đại học FPT Discrete Mathematics I độ phức tạp & tính đúng đắn complexity & correctness độ phức tạp & tính đúng đắn complexity & correctness Thuật toán Algorithm Thuật toán Algorithm Giới thiệu Độ tăng hàm Big-O Tính chất Big-Theta Tính chất Little-o Độ phức tạp Xấu nhất Trung bình Tính đúng đắn Điều kiện Lặp Ví dụ Tóm tắt 2/35Tổ toán đại học FPT 05/03/14 Thuật toán GIỚI THIỆU Algorithm INTRODUCTION Giới thiệu Chúng ta sẽ học: • Đánh giá về độ tăng của hàm • Big-O, big-Theta • Độ phức tạp thuật toán: Độ phức tạp thời gian • Trường hợp xấu nhất • Trường hợp trung bình • Tính đúng đắn thuật toán Giới thiệu Độ tăng hàm Big-O Tính chất Big-Theta Tính chất Little-o Độ phức tạp Xấu nhất Trung bình Tính đúng đắn Điều kiện Lặp Ví dụ Tóm tắt 3/35Tổ toán đại học FPT 05/03/14 Thuật toán BIG-O Algorithm BIG-O Định nghĩa Definition Định nghĩa Definition Cho f(x) g(x) là hai hàm số từ tập các số nguyên hoặc số thực đến tập các số thực. Ta nói f(x) là O(g(x)) hoặc f(x) là big-O của g(x) hay f(x) ∈ O(g(x)) nếu tồn tại hai hằng số C k sao cho |f(x)| ≤ C|g(x)| với mọi x ≥ k. Cho f(x) g(x) là hai hàm số từ tập các số nguyên hoặc số thực đến tập các số thực. Ta nói f(x) là O(g(x)) hoặc f(x) là big-O của g(x) hay f(x) ∈ O(g(x)) nếu tồn tại hai hằng số C k sao cho |f(x)| ≤ C|g(x)| với mọi x ≥ k. Big-O Với mỗi thuật toán số phép toán cần thực hiện sẽ là một hàm số theo kích thước đầu vào. Chúng ta sẽ đánh giá tính hiệu quả của mỗi thuật toán bằng cách khảo sát độ tăng của hàm này. Ta sẽ chỉ xét các hàm dương nên sẽ bỏ dấu | | Giới thiệu Độ tăng hàm Big-O Tính chất Big-Theta Tính chất Little-o Độ phức tạp Xấu nhất Trung bình Tính đúng đắn Điều kiện Lặp Ví dụ Tóm tắt 4/35Tổ toán đại học FPT 05/03/14 Thuật toán BIG-O Algorithm BIG-O Ví dụ Example Chứng minh f(n) = 30n + 8 là big-O của g(n) = n. Ta cần chứng minh ∃c,k: ∀n > k: 30n + 8 ≤ cn. Lấy c = 31, k = 8. Khi đó với n > k = 8, cn = 31n = 30n + n > 30n+8 n>k=8 → n 30n+8 cn = 31n 30n+8 ∈O(n) Giá trị cụ thể của c k gọi là bằng chứng. Ta có thể tìm nhiều bằng chứng. Chẳng hạn: c = 32, k = 9 Big-O Giới thiệu Độ tăng hàm Big-O Tính chất Big-Theta Tính chất Little-o Độ phức tạp Xấu nhất Trung bình Tính đúng đắn Điều kiện Lặp Ví dụ Tóm tắt 5/35Tổ toán đại học FPT 05/03/14 giai thừa Thuật toán BIG-O Algorithm BIG-O Khái niệm big-O được sử dụng để đánh giá số phép toán cần dùng để giải một bài toán theo một thủ tục hoặc một thuật toán cụ thể. Các hàm số cơ bản thường được dùng để so sánh là: 1, log(log(n)), log(n), log k (n), n 1/k , n, nlog(n), n k , a n , n!, n n hằng logarit đa thức mũ -10 0 10 20 30 40 50 60 0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 n 1 log(n) n^2 2^n n! Big-O Giới thiệu Độ tăng hàm Big-O Tính chất Big-Theta Tính chất Little-o Độ phức tạp Xấu nhất Trung bình Tính đúng đắn Điều kiện Lặp Ví dụ Tóm tắt 6/35Tổ toán đại học FPT 05/03/14 Thuật toán BIG-O Algorithm BIG-O Định lí Theorem Định lí Theorem • a n x n + a n -1 x n -1 + …+ a 1 x + a 0 ∈ O(x n ) (a 0 , a 1 , …, a n là các số thực) • f ∈ O(g) ∧ g ∈ O(h) → f ∈ O(h) • af, f 1-b , (log b f) a ∈ O(f) với mọi a, b ∈ R b ≥ 0. • f 1 ∈O(g 1 ) ∧ f 2 ∈O(g 2 ) → f 1 f 2 ∈ O(g 1 g 2 ) • f 1 ∈O(g 1 ) ∧ f 2 ∈O(g 2 ) → f 1 +f 2 ∈ O(g 1 +g 2 ) • O(g 1 +g 2 ) = O(max(g 1 ,g 2 )) = O(g 1 ) nếu g 2 ∈O(g 1 ) • a n x n + a n -1 x n -1 + …+ a 1 x + a 0 ∈ O(x n ) (a 0 , a 1 , …, a n là các số thực) • f ∈ O(g) ∧ g ∈ O(h) → f ∈ O(h) • af, f 1-b , (log b f) a ∈ O(f) với mọi a, b ∈ R b ≥ 0. • f 1 ∈O(g 1 ) ∧ f 2 ∈O(g 2 ) → f 1 f 2 ∈ O(g 1 g 2 ) • f 1 ∈O(g 1 ) ∧ f 2 ∈O(g 2 ) → f 1 +f 2 ∈ O(g 1 +g 2 ) • O(g 1 +g 2 ) = O(max(g 1 ,g 2 )) = O(g 1 ) nếu g 2 ∈O(g 1 ) Tính chất Giới thiệu Độ tăng hàm Big-O Tính chất Big-Theta Tính chất Little-o Độ phức tạp Xấu nhất Trung bình Tính đúng đắn Điều kiện Lặp Ví dụ Tóm tắt 7/35Tổ toán đại học FPT 05/03/14 Ví dụ Example Đánh giá hàm số Thuật toán BIG-O Algorithm BIG-O ∑ 1= = n i inf )( Ta có 2 1+ == ∑ 1= )( )( nn inf n i 2 + 2 = 2 nn ∈ O(n 2 ) hoặc ∈ n 2 /2 + O(n) Bài tập: Chứng minh )(log)( 1+= 1 = ∑ 1= On i nf n i Tính chất Giới thiệu Độ tăng hàm Big-O Tính chất Big-Theta Tính chất Little-o Độ phức tạp Xấu nhất Trung bình Tính đúng đắn Điều kiện Lặp Ví dụ Tóm tắt 8/35Tổ toán đại học FPT 05/03/14 Thuật toán BIG- THETA Algorithm BIG- THETA Khi f ∈ O(g) thì hàm f bị chặn trên bởi g. Dưới đây cung cấp một vài cách đánh giá khác về độ tăng của hàm Định nghĩa Definition Định nghĩa Definition Cho f(x) g(x) là hai hàm số từ tập các số nguyên hoặc số thực đến tập các số thực. Ta nói • f(x) là Ω(g(x)) hoặc f(x) là big-Omega của g(x) nếu tồn tại hai hằng số C > 0 k sao cho |f(x)| ≥ C|g(x)| với mọi x ≥ k. • f(x) là Θ(g(x)) hoặc f(x) là big-Theta của g(x) nếu f ∈ O(g) f ∈ Ω(g) tức là tồn tại các hằng số C 1 , C 2 , k > 0 sao cho C 1 |g(x)| ≤ |f(x)| ≤ C 2 |g(x)| với mọi x ≥ k. Cho f(x) g(x) là hai hàm số từ tập các số nguyên hoặc số thực đến tập các số thực. Ta nói • f(x) là Ω(g(x)) hoặc f(x) là big-Omega của g(x) nếu tồn tại hai hằng số C > 0 k sao cho |f(x)| ≥ C|g(x)| với mọi x ≥ k. • f(x) là Θ(g(x)) hoặc f(x) là big-Theta của g(x) nếu f ∈ O(g) f ∈ Ω(g) tức là tồn tại các hằng số C 1 , C 2 , k > 0 sao cho C 1 |g(x)| ≤ |f(x)| ≤ C 2 |g(x)| với mọi x ≥ k. g ∈ O(f) f g cùng bậc Big-Theta Giới thiệu Độ tăng hàm Big-O Tính chất Big-Theta Tính chất Little-o Độ phức tạp Xấu nhất Trung bình Tính đúng đắn Điều kiện Lặp Ví dụ Tóm tắt 9/35Tổ toán đại học FPT 05/03/14 Thuật toán BIG- THETA Algorithm BIG- THETA Định lí Theorem Định lí Theorem • a n x n + a n -1 x n -1 + …+ a 1 x + a 0 ∈ Θ(x n ) (ở đây a 0 , a 1 , …, a n là các số thực a n ≠ 0) • f ∈ Θ(g) ∧ g ∈ Θ(h) → f ∈ Θ(h) • af ∈ Θ(f) với mọi a ≠ 0 • f 1 ∈ Θ(g 1 ) ∧ f 2 ∈ Θ(g 2 ) → f 1 f 2 ∈ Θ(g 1 g 2 ) • f 1 ∈ Θ(g 1 ) ∧ f 2 ∈ Θ(g 2 ) → f 1 + f 2 ∈ Θ(g 1 +g 2 ) • Θ(g 1 +g 2 ) = Θ(max(g 1 ,g 2 )) = Θ(g 1 ) nếu g 2 ∈O(g 1 ) • a n x n + a n -1 x n -1 + …+ a 1 x + a 0 ∈ Θ(x n ) (ở đây a 0 , a 1 , …, a n là các số thực a n ≠ 0) • f ∈ Θ(g) ∧ g ∈ Θ(h) → f ∈ Θ(h) • af ∈ Θ(f) với mọi a ≠ 0 • f 1 ∈ Θ(g 1 ) ∧ f 2 ∈ Θ(g 2 ) → f 1 f 2 ∈ Θ(g 1 g 2 ) • f 1 ∈ Θ(g 1 ) ∧ f 2 ∈ Θ(g 2 ) → f 1 + f 2 ∈ Θ(g 1 +g 2 ) • Θ(g 1 +g 2 ) = Θ(max(g 1 ,g 2 )) = Θ(g 1 ) nếu g 2 ∈O(g 1 ) Tính chất Giới thiệu Độ tăng hàm Big-O Tính chất Big-Theta Tính chất Little-o Độ phức tạp Xấu nhất Trung bình Tính đúng đắn Điều kiện Lặp Ví dụ Tóm tắt 10/35Tổ toán đại học FPT 05/03/14 Thuật toán BIG- THETA Algorithm BIG- THETA Ví dụ Example Cho 2 hàm số Chứng minh f ∈ Θ(g) f(n) = log(1) + log(2) + …+ log(n) g(n) = nlog(n) f (n) ≤ g(n) ∀ n ≥ 1 ⇒ f (n) ∈ O(g(n)) 2f(n) = log(1) + log(2) + …+ log(n) + log(n) + log(n-1) +…+ log(1) = log(1.n) + log(2(n-1)) + … + log(n.1) ≥ g(n) ∀ n ≥ 1 ⇒ f (n) ∈ Ω(g(n)) Vậy f (n) ∈ Θ(g(n)) Tính chất [...]... là có • độ phức tạp hằng nếu có dạng O(1) độ phức tạp hằng nếu có dạng O(1) • độ phức tạp logarit nếu có dạng O(log n) độ phức tạp logarit nếu có dạng O(log n) • độ phức tạp tuyến tính nếu có dạng O(n) độ phức tạp tuyến tính nếu có dạng O(n) • độ phức tạp đa thức nếu có dạng O(naa),a ≥ 1 độ phức tạp đa thức nếu có dạng O(n), a ≥ 1 • độ phức tạp hàm mũ nếu có dạng O(ann),a > 1 độ phức tạp hàm mũ nếu... 20/35 Thuật toán Algorithm Giới thiệu Độ tăng hàm Big-O Tính chất Big-Theta Tính chất Little-o Độ phức tạp Xấu nhất Trung bình Tính đúng đắn Điều kiện Lặp Ví dụ Tóm tắt ĐỘ PHỨC TẠP COMPLEXITY Ví dụ Example Độ phức tạp của thuật toán tìm kiếm tuyến tính trong trường hợp xấu nhất là 2n + 2 = Θ(n) (độ phức tạp tuyến tính) Nếu coi x có mặt trong danh sách khả năng x ở mỗi vị trí là như nhau thì độ phức tạp. .. 13/35 Thuật toán Algorithm Giới thiệu Độ tăng hàm Big-O Tính chất Big-Theta Tính chất Little-o Độ phức tạp Xấu nhất Trung bình Tính đúng đắn Điều kiện Lặp Ví dụ Tóm tắt 05/03/14 ĐỘ PHỨC TẠP COMPLEXITY Khi có một thuật toán chúng ta sẽ quan tâm đến • Tính đúng đắn: kết quả chính xác không? • Độ phức tạp: thuật toán có hiệu quả không? Định nghĩa Định nghĩa Definition Definition Độ phức tạp của thuật. .. > 1 • độ phức tạp giai thừa nếu có dạng O(n!) độ phức tạp giai thừa nếu có dạng O(n!) Ví dụ Example Thuật toán tìm giá trị lớn nhất trong dãy các số nguyên có độ phức tạp tuyến tính 05/03/14 Tổ toán đại học FPT 17/35 Thuật toán Algorithm Giới thiệu Độ tăng hàm Big-O Tính chất Big-Theta Tính chất Little-o Độ phức tạp Xấu nhất Trung bình Tính đúng đắn Điều kiện Lặp Ví dụ Tóm tắt 05/03/14 ĐỘ PHỨC TẠP COMPLEXITY... → độ phức tạp thuật toán Θ(n) 05/03/14 Tổ toán đại học FPT 16/35 Thuật toán Algorithm Giới thiệu Độ tăng hàm Big-O Tính chất Big-Theta Tính chất Little-o Độ phức tạp Xấu nhất Trung bình Tính đúng đắn Điều kiện Lặp Ví dụ Tóm tắt ĐỘ PHỨC TẠP COMPLEXITY Định nghĩa Định nghĩa Definition Definition Một thuật toán với kích thước đầu vào n gọi là có Một thuật toán với kích thước đầu vào n gọi là có • độ phức. .. ra kết quả đúng, tức là xác lập tính đúng đắn bộ phận quả đúng, tức là xác lập tính đúng đắn bộ phận ••Chứng tỏ thuật toán kết thúc Chứng tỏ thuật toán kết thúc Tổ toán đại học FPT 24/35 Thuật toán Algorithm Giới thiệu Độ tăng hàm Big-O Tính chất Big-Theta Tính chất Little-o Độ phức tạp Xấu nhất Trung bình Tính đúng đắn Điều kiện Lặp Ví dụ Tóm tắt 05/03/14 TÍNH ĐÚNG ĐẮN CORRECTNESS Định nghĩa Định... Definition Một thuật toán gọi là đúng đắn nếu với mọi đầu vào Một thuật toán gọi là đúng đắn nếu với mọi đầu vào khả dĩ, nó cho đầu ra đúng Việc chứng minh tính đúng khả dĩ, nó cho đầu ra đúng Việc chứng minh tính đúng đắn của thuật toán gồm hai phần: đắn của thuật toán gồm hai phần: ••Chứng tỏ rằng nếu thuật toán kết thúc thì nó cho ra kết Chứng tỏ rằng nếu thuật toán kết thúc thì nó cho ra kết quả đúng, tức... tạp của thuật toán tìm kiếm tuyến tính trong trường hợp trung bình là (2.1 + 1) + (2.2 + 1) + …+ (2n + 1) n 05/03/14 Tổ toán đại học FPT = n + 2 = Θ(n) 21/35 Thuật toán Algorithm Giới thiệu Độ tăng hàm Big-O Tính chất Big-Theta Tính chất Little-o Độ phức tạp Xấu nhất Trung bình Tính đúng đắn Điều kiện Lặp Ví dụ Tóm tắt 05/03/14 ĐỘ PHỨC TẠP COMPLEXITY Ví dụ Example Xác định độ phức tạp của thuật toán... Definition Definition • Độ phức tạp trong trường hợp xấu nhất là độ phức tạp Độ phức tạp trong trường hợp xấu nhất là độ phức tạp tính trong trường hợp phải dùng tối đa các phép toán để tính trong trường hợp phải dùng tối đa các phép toán để giải bài toán theo thuật toán đang xét, ứng với một số đầu giải bài toán theo thuật toán đang xét, ứng với một số đầu vào nào đó có kích thước xác định vào nào đó có kích... thước xác định • Độ phức tạp trong trường hợp trung bình là độ phức tạp Độ phức tạp trong trường hợp trung bình là độ phức tạp tính số trung bình các phép toán để giải bài toán trên toàn tính số trung bình các phép toán để giải bài toán trên toàn bộ các giá trị đầu vào có kích thước xác định bộ các giá trị đầu vào có kích thước xác định ••Những bài toán giải được bằng một thuật toán có độ Những bài toán . I độ phức tạp & tính đúng đắn complexity & correctness độ phức tạp & tính đúng đắn complexity & correctness Thuật toán Algorithm Thuật. có độ phức tạp tuyến tính. Độ phức tạp Giới thiệu Độ tăng hàm Big-O Tính chất Big-Theta Tính chất Little-o Độ phức tạp Xấu nhất Trung bình Tính

Ngày đăng: 05/03/2014, 11:20

Từ khóa liên quan

Mục lục

  • Thuật toán Algorithm

  • Slide 2

  • Thuật toán BIG-O Algorithm BIG-O

  • Slide 4

  • Slide 5

  • Slide 6

  • Slide 7

  • Thuật toán BIG-THETA Algorithm BIG-THETA

  • Slide 9

  • Slide 10

  • Slide 11

  • Slide 12

  • Slide 13

  • Thuật toán ĐỘ PHỨC TẠP Algorithm COMPLEXITY

  • Slide 15

  • Slide 16

  • Slide 17

  • Slide 18

  • Slide 19

  • Slide 20

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

Tài liệu liên quan