intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

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

Chia sẻ: Nguyễn Gia Thế | Ngày: | Loại File: PPT | Số trang:35

319
lượt xem
47
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

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.Định nghĩa: Cho f(x) và 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 và k sao cho...

Chủ đề:
Lưu

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

  1. Discrete Mathematics I Giới thiệu Độ tăng hàm Big-O Thuậtt toán Thuậ toán Tính chất Big-Theta Algorithm Tính chất Algorithm Little-o Độ phức tạp Xấu nhất độ phức ttạp & tính độ phức ạp & tính Trung bình đúng đắn đúng đắn Tính đúng đắn complexity & correctness Điều kiện complexity & correctness Lặp Chương 2.2, 2.3 Kenneth H. Rosen Ví d ụ Tóm tắt Xuân 2008 Đại học FPT 13/12/12 Tổ toán đại học FPT 1/35
  2. Thuật toán GIỚI THIỆU Algorithm INTRODUCTION Giới thiệu Độ tăng hàm Big-O Tính chất Chúng ta sẽ học: Big-Theta Tính chất •Đánh giá về độ tăng của hàm Little-o •Big-O, big-Theta Độ phức tạp Xấu nhất •Độ phức tạp thuật toán: Độ phức tạp thời gian Trung bình Tính đúng đắn •Trường hợp xấu nhất Điều kiện Lặp •Trường hợp trung bình Ví d ụ •Tính đúng đắn thuật toán Tóm tắt 13/12/12 Tổ toán đại học FPT 2/35
  3. Thuật toán BIG-O Algorithm BIG-O Giới thiệu Với mỗi thuật toán số phép toán cần thực hiện sẽ là một Độ tăng hàm hàm số theo kích thước đầu vào. Chúng ta sẽ đánh giá Big-O Tính chất tính hiệu quả của mỗi thuật toán bằng cách khảo sát độ Big-Theta tăng của hàm này. Tính chất Little-o Độ phức tạp Địịnhnghĩa Đnh nghĩa Definition Definition Xấu nhất Trung bình Cho f((x)và g((x)là hai hàm số ttừttậpcác số nguyên Cho f x) và g x) là hai hàm số ừ ập các số nguyên Tính đúng đắn hoặc số thực đến ttậpcác số thực. Ta nói f((x)là O((g(x)) hoặc số thực đến ập các số thực. Ta nói f x) là O g(x)) Điều kiện hoặc f((x)là big-O của g((x)hay f((x)∈ O((g(x))nếu ttồnttại hoặc f x) là big-O của g x) hay f x) ∈ O g(x)) nếu ồn ại Lặp hai hằng số C và k sao cho Ví d ụ hai hằng số C và k sao cho Tóm tắt |f((x)|≤ C|g((x)|với imọi ix ≥ k.. |f x)| ≤ C|g x)| vớ mọ x ≥ k Ta sẽ chỉ xét các hàm dương nên sẽ bỏ dấu | | 13/12/12 Tổ toán đại học FPT 3/35
  4. Thuật toán BIG-O Algorithm BIG-O Giới thiệu Ví dụ Example Độ tăng hàm Chứng minh f(n) = 30n + 8 là big-O của g(n) = n. Big-O Tính chất Ta cần chứng minh ∃ c,k: ∀n > k: 30n + 8 ≤ cn. Big-Theta Tính chất cn = Little-o Lấy c = 31, k = 8. Khi đó 31n 30n+8 Độ phức tạp với n > k = 8, Xấu nhất cn = 31n = 30n + n > 30n+8 Trung bình Tính đúng đắn Giá trị cụ thể của c và k Điều kiện n Lặp gọi là bằng chứng. Ta có Ví d ụ thể tìm nhiều bằng chứng. Tóm tắt Chẳng hạn: n>k=8 → c = 32, k = 9 30n+8 ∈O(n) 13/12/12 Tổ toán đại học FPT 4/35
  5. Thuật toán BIG-O Algorithm BIG-O Giới thiệu Khái niệm big-O được sử dụng để đánh giá số phép toán Độ tăng hàm cần dùng để giải một bài toán theo một thủ tục hoặc một Big-O thuật toán cụ thể. Các hàm số cơ bản thường được dùng Tính chất mũ để so sánh là: Big-Theta Tính chất 1, log(log(n)), log(n), logk(n), n1/k, n, nlog(n), nk, an, n!, nn Little-o đa thức giai thừa logarit 6 0 hằng 1 Độ phức tạp lg o( n ) n ^ 2 Xấu nhất 5 0 2 ^ n n ! Trung bình 4 0 Tính đúng đắn 3 0 Điều kiện Lặp 2 0 Ví d ụ 1 0 Tóm tắt 0 - 1 0 0 0 . 5 1 1 . 5 2 2 . 5 3 3 . 5 4 4 . 5 n 13/12/12 Tổ toán đại học FPT 5/35
  6. Thuật toán BIG-O Algorithm BIG-O Giới thiệu Độ tăng hàm Big-O Tính chất Địịnh lí Đnh lí Theorem Theorem Big-Theta Tính chất ••annxn+ ann-11xn-11+ …+ a11x+ a00∈ O((xn)((a0,a11,…, annlà a x + a - x - + …+ a x + a ∈ O x ) a0, a , …, a là n n n Little-o Độ phức tạp các số thực) các số thực) Xấu nhất ••ff∈ O((g)∧g ∈ O((h)→ ff∈ O((h) ∈ O g) ∧g ∈ O h) → ∈ O h) Trung bình Tính đúng đắn ••aff,ff11bb,(logbf))a∈ O(())với imọi ia, b ∈ R và b ≥ 0.. , - - , (log f a ∈ O ff vớ mọ a, b ∈ R và b ≥ 0 a Điều kiện b ••ff1∈O(g1)∧ff2∈O(g2)→ ff1ff2∈ O((g1g2) 1∈O(g1) ∧2∈O(g2) → 1 2 ∈ O g1g2) Lặp Ví d ụ ••ff ∈O((g ))∧ff ∈O((g))→ f1+ff ∈ O((g +g2)) 1 ∈O g1 ∧2 ∈O g2 → f +2 ∈ O g1 +g Tóm tắt 1 1 2 2 1 2 1 2 O g1+g2) = O(max(g ,,g)) = O g1) nếu g ∈O(g1) ••O((g1+g2)= O(max(g11g22))= O((g1)nếu g22∈O(g1) 13/12/12 Tổ toán đại học FPT 6/35
  7. Thuật toán BIG-O Algorithm BIG-O Giới thiệu Ví dụ Độ tăng hàm Example Big-O n ∑i Tính chất Đánh giá hàm số f ( n ) = Big-Theta i =1 Tính chất Ta có Little-o n(n + 1) n f (n ) = ∑ i = Độ phức tạp 2 Xấu nhất i =1 n2 n Trung bình = + Tính đúng đắn 22 Điều kiện ∈ O(n2) Lặp Ví d ụ hoặc ∈ n2/2 + O(n) Tóm tắt 1 n Bài tập: Chứng minh f ( n ) = ∑ = log n + O(1) i =1 i 13/12/12 Tổ toán đại học FPT 7/35
  8. Thuật toán BIG-THETA Algorithm BIG-THETA Giới thiệu Khi f ∈ O(g) thì hàm f bị chặn trên bởi g. Dưới đây cung Độ tăng hàm cấp một vài cách đánh giá khác về độ tăng của hàm Big-O Tính chất Địịnhnghĩa Đnh nghĩa Definition Big-Theta Definition Tính chất Cho f((x)và g((x)là hai hàm số ttừttậpcác số nguyên hoặc Cho f x) và g x) là hai hàm số ừ ập các số nguyên hoặc Little-o số thực đến ttậpcác số thực. Ta nói số thực đến ập các số thực. Ta nói Độ phức tạp ••((x)là Ω((g(x))hoặc f((x)là big-Omega của g((x)nếu tồn Xấu nhất ff x) là Ω g(x)) hoặc f x) là big-Omega của g x) nếu tồn Trung bình tại ihai hằng số C > 0 và k sao cho tạ hai hằng số C > 0 và k sao cho g ∈ O(f) Tính đúng đắn |f((x)|≥ C|g((x)|với imọi ix ≥ k.. |f x)| ≥ C|g x)| vớ mọ x ≥ k Điều kiện Lặp ••((x)là Θ((g(x))hoặc f((x)là big-Theta của g((x)nếu ff∈ ff x) là Θ g(x)) hoặc f x) là big-Theta của g x) nếu ∈ Ví d ụ O((g)và ff∈ Ω((g)tức là tồn tại icác hằng số C1,,C2,,k > 0 O g) và ∈ Ω g) tức là tồn tạ các hằng số C1 C2 k > 0 Tóm tắt f và g cùng bậc sao cho sao cho C1|g((x)|≤ |f((x)|≤ C2|g((x)|với imọi ix ≥ k.. C1|g x)| ≤ |f x)| ≤ C2|g x)| vớ mọ x ≥ k 13/12/12 Tổ toán đại học FPT 8/35
  9. Thuật toán BIG-THETA Algorithm BIG-THETA Giới thiệu Độ tăng hàm Big-O Tính chất Địịnh lí Đnh lí Theorem Theorem Big-Theta Tính chất ••anxnn+ an -1xnn-11+ …+ a1x + a0 ∈ Θ((xn)((ởđây a0,,a1,,…, anx + an -1x - + …+ a1x + a0 ∈ Θ x ) ở đây a0 a1 …, n Little-o an là các số thực và an ≠ 0)) Độ phức tạp a là các số thực và a ≠ 0 n n Xấu nhất ••ff∈ Θ((g)∧g ∈ Θ((h)→ ff∈ Θ((h) ∈ Θ g) ∧g ∈ Θ h) → ∈ Θ h) Trung bình ••aff∈ Θ(())với imọi ia ≠ 0 a ∈ Θ ff vớ mọ a ≠ 0 Tính đúng đắn Điều kiện ••f1∈ Θ((g ))∧f2∈ Θ((g))→ f1 f2 ∈ Θ((g g2)) f1∈ Θ g11 ∧f2∈ Θ g22 → f1 f2 ∈ Θ g11g2 Lặp ••ff ∈ Θ((g ))∧ff ∈ Θ((g))→ ff + ff ∈ Θ((g +g2)) 1 ∈ Θ g1 ∧2 ∈ Θ g2 → 1 + 2 ∈ Θ g1 +g Ví d ụ 1 1 2 2 1 2 1 2 Tóm tắt ••Θ((g +g2))= Θ(max(g1,g2)) = Θ((g ))nếu g2∈O((g )) Θ g11+g2 = Θ(max(g1,g2)) = Θ g11 nếu g2∈O g11 13/12/12 Tổ toán đại học FPT 9/35
  10. Thuật toán BIG-THETA Algorithm BIG-THETA Giới thiệu Ví dụ Example Độ tăng hàm Big-O Cho 2 hàm số Tính chất f(n) = log(1) + log(2) + …+ log(n) g(n) = nlog(n) Big-Theta Tính chất Chứng minh f ∈ Θ(g) Little-o Độ phức tạp f (n) ≤ g(n) ∀ n ≥ 1 Xấu nhất ⇒ f (n) ∈ O(g(n)) Trung bình Tính đúng đắn 2f(n) = log(1) + log(2) + …+ log(n) Điều kiện + log(n) + log(n-1) +…+ log(1) Lặp = log(1.n) + log(2(n-1)) + … + log(n.1) Ví d ụ ≥ g(n) ∀ n ≥ 1 Tóm tắt ⇒ f (n) ∈ Ω(g(n)) Vậy f (n) ∈ Θ(g(n)) 13/12/12 Tổ toán đại học FPT 10/35
  11. Thuật toán BIG-THETA Algorithm BIG-THETA Giới thiệu Độ tăng hàm Big-O Tính chất Địịnhnghĩa Đnh nghĩa Definition Definition Big-Theta Tính chất Cho f((x)và g((x)là hai hàm số ttừttậpcác số nguyên hoặc Cho f x) và g x) là hai hàm số ừ ập các số nguyên hoặc Little-o Little-o số thực đến ttậpcác số thực. Ta nói số thực đến ập các số thực. Ta nói Độ phức tạp Xấu nhất ••f((x)là o((g(x))hoặc f((x)là llittle-ocủa g((x)hoặc ffcó bậc f x) là o g(x)) hoặc f x) là ittle-o của g x) hoặc có bậc Trung bình thấp hơn thậttsự g nếu thấp hơn thậ sự g nếu Tính đúng đắn ∀c>0 ∃ k ∀x>k ::|f((x)|< |cg((x)| ∀c>0 ∃ k ∀x>k |f x)| < |cg x)| >0 Điều kiện >0 Lặp ••f((x)là ω((g(x))hoặc ffcó bậc cao hơn thậttsự g nếu f x) là ω g(x)) hoặc có bậc cao hơn thậ sự g nếu Ví d ụ ∀c>0 ∃ k ∀x>k ::|cg((x)|< |f((x)| ∀c>0 ∃ k ∀x>k |cg x)| < |f x))| | >0 )| Tóm tắt >0 13/12/12 Tổ toán đại học FPT 11/35
  12. Thuật toán BIG-THETA Algorithm BIG-THETA Giới thiệu Địịnh lí Đnh lí Theorem Độtăng hàm ộ tăng hàm Theorem Big-O Mối iquan hệ về độ tăng của hàm được mô ttảnhư sau Mố quan hệ về độ tăng của hàm được mô ả như sau Tính chất Ω( f ) O( f ) Big-Theta Tính chất Little-o •f Độ phức tạp Θ( f ) ω( f ) o( f ) Xấu nhất Trung bình Tính đúng đắn Điều kiện Θ(f) = O(f) ∩ Ω (f) Tức là: Lặp Ví d ụ o(f) ⊂ O(f) - Θ(f) Tóm tắt ω(f) ⊂ Ω(f) - Θ(f) Bài tập: Tìm hai hàm số f(x) và g(x) sao cho g ∈ O(f) nhưng g ∉ o(f) và g ∉ Θ(f). 13/12/12 Tổ toán đại học FPT 12/35
  13. Thuật toán BIG-THETA Algorithm BIG-THETA Giới thiệu Độtăng hàm ộ tăng hàm Big-O Tính chất Địịnhlí Đnh lí Theorem Theorem Big-Theta Tính chất Cho f((x)và g((x)là hai hàm số từ ttậpcác số nguyên Cho f x) và g x) là hai hàm số từ ập các số nguyên Little-o hoặc số thực đến ttậpcác số thực. Khi đó hoặc số thực đến ập các số thực. Khi đó Độ phức tạp Xấu nhất ••Nếu limxx→∞g(x)/((x)= 0 thì g ∈ o((). Nếu lim→∞g(x)/ff x) = 0 thì g ∈ o ff). Trung bình Tính đúng đắn ••Nếu limx→∞g((x)/((x)= ∞ tthìg ∈ ω((). Nếu limx→∞g x)/ff x) = ∞ hì g ∈ ω ff). Điều kiện Lặp ••Nếu limx→∞g((x)/((x)= A khác 0 thì g ∈ Θ((). Nếu A = 1 Nếu lim g x)/ff x) = A khác 0 thì g ∈ Θ ff). Nếu A = 1 Ví d ụ x→∞ Tóm tắt tthìta nói g((x)ttiệmcận f((x). hì ta nói g x) iệm cận f x). 13/12/12 Tổ toán đại học FPT 13/35
  14. Thuật toán ĐỘ PHỨC TẠP Algorithm COMPLEXITY Giới thiệu Khi có một thuật toán chúng ta sẽ quan tâm đến Độ tăng hàm Big-O • Tính đúng đắn: kết quả chính xác không? Tính chất • Độ phức tạp: thuật toán có hiệu quả không? Big-Theta Tính chất Little-o Địịnhnghĩa Đnh nghĩa Definition Definition Độ phức tạp Độ phức ttạpcủa thuậtttoán mô ttảmức độ khó khăn khi Độ phức ạp của thuậ toán mô ả mức độ khó khăn khi Xấu nhất thực hiện thuậtttoán, gồm hai loại: Trung bình thực hiện thuậ toán, gồm hai loại: sẽ học hôm nay Tính đúng đắn ••Độphức ttạpthờiigian::thời igian cần thiếttđể thực hiện Độ phức ạp thờ gian thờ gian cần thiế để thực hiện Điều kiện được thuậtttoán với ikích thước đầu vào xác địịnh,được được thuậ toán vớ kích thước đầu vào xác đnh, được Lặp biểu diễn qua số phép toán được dùng bởi ithuậtttoán Ví d ụ biểu diễn qua số phép toán được dùng bở thuậ toán Tóm tắt như::phép so sánh, cộng, trừ,,nhân, chia, … như phép so sánh, cộng, trừ nhân, chia, … ••Độphức ttạpkhông gian::dung lượng bộ nhớ cần sử Độ phức ạp không gian dung lượng bộ nhớ cần sử dụng để thực hiện thuậtttoán. dụng để thực hiện thuậ toán. 13/12/12 Tổ toán đại học FPT 14/35
  15. Thuật toán ĐỘ PHỨC TẠP Algorithm COMPLEXITY Giới thiệu Độ tăng hàm Big-O Tính chất Ví dụ Example Big-Theta Mô tả độ phức tạp thời gian của thuật toán tìm phần tử Tính chất Little-o lớn nhất sau, dựa vào số phép so sánh? Độ phức tạp procedure LớnNhất(a1, a2,…, an: số nguyên) Xấu nhất Trung bình LN: = a1 Tính đúng đắn Điều kiện for i: = 2 to n Lặp Ví d ụ if LN < ai then LN: = ai Tóm tắt 13/12/12 Tổ toán đại học FPT 15/35
  16. Thuật toán ĐỘ PHỨC TẠP Algorithm COMPLEXITY Giới thiệu Ví dụ Example Độ tăng hàm Big-O một phép so sánh để a1, a2, …, an: nguyên Tính chất thoát ra khỏi vòng lặp LN: = a1; i: = 2 Big-Theta khi i = n + 1 Tính chất sai Little-o LN là giá trị lớn nhất i≤ n trong {a1, a2, …, an} Độ phức tạp ph Xấu nhất đúng Trung bình có n – 1 vòng lặp, sai Tính đúng đắn mỗi vòng lặp gồm LN < ai i: = i + 1 Điều kiện 2 phép so sánh: i ≤ Lặp n và LN ≤ ai đúng Ví d ụ LN: = ai Tóm tắt Cần tất cả: (n – 1).2 + 1 = 2n – 1 phép so sánh → độ phức tạp thuật toán Θ(n) 13/12/12 Tổ toán đại học FPT 16/35
  17. Thuật toán ĐỘ PHỨC TẠP Algorithm COMPLEXITY Giới thiệu Địịnh nghĩa Đnh nghĩa Definition Definition Độ tăng hàm Mộttthuậtttoán với ikích thước đầu vào n gọi ilà có Big-O Mộ thuậ toán vớ kích thước đầu vào n gọ là có Tính chất ••độ 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) Big-Theta Tính chất ••độ 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 Little-o ••độ phức tạp ttuyếntính nếu có dạng O((n) Độ phức tạp độ phức tạp uyến tính nếu có dạng On) Xấu nhất ••độ phức tạp đa thức nếu có dạng O((na),a ≥ 1 độ phức tạp đa thức nếu có dạng On ), a ≥ 1 a Trung bình Tính đúng đắn ••độ phức tạp hàm mũ nếu có dạng O((an),a > 1 độ phức tạp hàm mũ nếu có dạng Oa ), a > 1 n Điều kiện ••độ phức tạp giai thừa nếu có dạng O((n!) Lặp độ phức tạp giai thừa nếu có dạng On!) Ví d ụ Ví dụ Tóm tắt 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. 13/12/12 Tổ toán đại học FPT 17/35
  18. Thuật toán ĐỘ PHỨC TẠP Algorithm COMPLEXITY Giới thiệu Độ tăng hàm Big-O Địịnhnghĩa Đnh nghĩa Definition Tính chất Definition Big-Theta ••Độ phức tạp trong trường hợp xấu nhấttlà độ phức tạp Độ phức tạp trong trường hợp xấu nhấ là độ phức tạp Tính chất tính trong trường hợp phải idùng tối iđa các phép toán để tính trong trường hợp phả dùng tố đa các phép toán để Little-o giải ibài toán theo thuậtttoán đang xét, ứng với imộttsố đầu Độ phức tạp ph giả bài toán theo thuậ toán đang xét, ứng vớ mộ số đầu vào nào đó có kích thước xác định. Xấu nhất vào nào đó có kích thước xác định. Trung bì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 đúng đắn tính số trung bình các phép toán để giải ibài toán trên toàn tính số trung bình các phép toán để giả bài toán trên toàn Điều kiệ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. Lặp ••Những bài toán giải iđược bằng mộttthuậtttoán có độ Ví d ụ Những bài toán giả được bằng mộ thuậ toán có độ Tóm tắt phức tạp đa thức trong trường hợp xấu nhấttgọi ilà bài toán phức tạp đa thức trong trường hợp xấu nhấ gọ là bài toán dễ dử lí,,nếu không gọi ilà bài toán không dễ xử lí.. dễ dử lí nếu không gọ là bài toán không dễ xử lí 13/12/12 Tổ toán đại học FPT 18/35
  19. Thuật toán ĐỘ PHỨC TẠP Algorithm COMPLEXITY Giới thiệu Độ tăng hàm Big-O Tính chất Ví dụ Example Big-Theta Tính chất Mô tả độ phức tạp thời gian của thuật toán tìm kiếm Little-o tuyến tính sau, dựa trên số phép so sánh? Độ phức tạp ph procedure TìmTT(x ∈ Z; a1, a2,…, an ∈ Z phân biệt) Xấu nhất Trung bình i:=1 Tính đúng đắn while (i ≤ n and x ≠ ai) Điều kiện Lặp i:=i+1 Ví d ụ if i ≤ n then vị trí: = i else vị trí: = 0 Tóm tắt 13/12/12 Tổ toán đại học FPT 19/35
  20. Thuật toán ĐỘ PHỨC TẠP Algorithm COMPLEXITY Giới thiệu Ví dụ Example Độ tăng hàm Big-O x: nguyên; a1, a2, …, an: nguyên phân biệt, i = 1 Tính chất mỗi vòng lặp có 2 phép so Big-Theta sánh i ≤ n và x ≠ ai Tính chất Little-o đúng nếu x = ai có i vòng lặp i ≤ n and i: = i + 1 x ≠ ai Độ phức tạp nếu x ≠ ai ∀i có n vòng lặp Xấu nhất và 1 phép so sánh để thoát sai Trung bình ra khỏi vòng lặp Tính đúng đắn một phép so sánh đúng Điều kiện i≤ n vị trí: = i ngoài vòng lặp Lặp Ví d ụ sai Tóm tắt vị trí: = 0 Trường hợp x = ai có 2i + 1 phép so sánh Trường hợp x ≠ ai ∀i có 2n + 1 + 1= 2n + 2 phép so sánh 13/12/12 Tổ toán đại học FPT 20/35
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
20=>2