Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 14 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
14
Dung lượng
493,5 KB
Nội dung
ĐẠI HỌC HUẾ TRƯỜNG ĐẠI HỌC KHOA HỌC TIỂU LUẬN MÔN HỌC: PHÂN TÍCH VÀ THIẾT KẾ THUẬT TOÁN ĐỀ TÀI: SỰ TĂNG TRƯỞNG HÀM Giáo viên hướng dẫn Nhóm học viên thực hiện: Nhóm 7 TS. Hoàng Quang Thái Quang Hoàng Hoàng Tuấn Hưng Hoàng Hữu Chiến Đoàn Văn Cự Đặng Văn Vinh Huế, 5/2012 MỤC LỤC I. Hệ ký hiệu tiệm cận Là các ký hiệu dùng để mô tả thời gian thực hiện tiệm cận của một thuật toán, nằm trong các trường hợp xấu nhất, trung bình, hay tốt nhất. Đánh giá thời gian hay còn gọi là độ phức tạp của thuật toán được định nghĩa dưới dạng các hàm, mà miền của những hàm đó là tập hợp các số tự nhiên N={1,2,3….}, dựa trên kích thước dữ liệu đầu vào. 1. Ký hiệu Θ : Tiệm cận Định nghĩa: Với một hàm đã cho g(n), qua Θg(n) ta thể hiện tập hợp các hàm: 2 Bởi vì Θ (g(n)) là một tập hợp nên ta có thể viết: Hoặc Với tất cả các giá trị n ≥ n 0 , giá trị của: c 1 g(n ) ≤ f(n) ≤ c 2 g(n). Ta nói rằng, g(n) là một tiệm cận ràng buộc chặt chẽ (asymptotically tight bound) của f(n). 2. Ký hiệu O : Tiệm cận trên Các ký hiệu Θ là ký hiệu tiệm cận giới hạn của một hàm chặn trên và chặn dưới. Khi chỉ có một tiệm cận chặn trên thì ta sử dụng ký hiệu O. Định nghĩa: Với một hàm đã cho g(n), ta định nghĩa: O(g(n)) = {f(n): tồn tại hằng số dương c và n 0 sao cho: 0 ≤ f (n) ≤ cg(n), với mọi n ≥ n 0 } 3 { } ( ( )) ( ): , , ,0 ( ) ( ) ( ), 1 2 0 1 2 0 g n f n c c n c g n f n c g n n nΘ = ∃ ≤ ≤ ≤ ∀ ≥ ( ) ( ( ))f n g n∈Θ ( ) ( ( ))f n g n=Θ Với mọi giá trị n ≥ n 0 , giá trị của hàm f(n) ≤ cg(n). + Khi viết f(n) = O(g(n)) nghĩa là f(n) là một phần tử của tập O(g(n)). + Lưu ý rằng f(n) = Θ(g(n)) suy ra f (n) = O(g(n)), bởi vì ký hiệu Θ là một khái niệm mạnh hơn ký hiệu O. 4 3. Ký hiệu Ω : Tiệm cận dưới Định nghĩa: Ω(g(n)) = {f(n): tồn tại hằng số dương c và n 0 sao cho 0 ≤ c.g(n) ≤ f(n), với mọi n ≥ n 0 ). Định lý: Với hai hàm bất kỳ f(n) và g(n), f(n)=Θ(g(n)) khi và chỉ khi f(n) = O(g(n)) và f(n) = Ω(g(n)). Do hệ ký hiệu Ω mô tả một giới hạn dưới, ta cũng có thể sử dụng nó để giới hạn thời gian thực hiện trong trường hợp tốt nhất của một thuật toán. 4. Ký hiệu o : Tiệm cận trên không chặt chẽ Định nghĩa: o(g(n)) = {f(n): với mọi c>0, tồn tại một hằng n 0 >0 sao cho 0≤f(n)<cg(n) với mọi n ≥ n 0 ). 5. Ký hiệu ω : Tiệm cận dưới không chặt chẽ Định nghĩa: ω(g(n)) = {f (n): với mọi c > 0, tồn tại một hằng n 0 > 0 sao cho 0 ≤ c.g(n) <f (n) với mọi n ≥ n 0 ). Khi đó, f(n) lớn tùy ý so với g(n) khi n dần đến vô cực, nghĩa là 5 II. Các ký hiệu chuẩn và hàm thường dùng 1. Tính đơn điệu của hàm Tính đơn điệu của hàm (Monotonicity) - Hàm f(n) được gọi là đơn điệu tăng nếu m ≤ n thì f(m) ≤ f(n) - Hàm f(n) được gọi là đơn điệu giảm nếu m ≤ n thì f(m)≥ f(n) -Hàm f(n) được gọi là thực sự tăng nếu m < n thì f(m) < f(n) và thực sự giảm nếu m < n thì f(m) > f(n) 2. Hàm sàn và hàm trần ∀ x ∈ R, định nghĩa: - Hàm sàn của x là số nguyên lớn nhất nhỏ hơn hoặc bằng x, ký hiệu x. - Hàm trần của x là số nguyên nhỏ nhất lớn hơn hoặc bằng x, ký hiệu x. - ∀ x ∈ R , ta có: x-1< x ≤ x ≤ x < x+1. - - ∀ n ∈ Z ta có: n/2 + n/2 = n. - Hàm sàn f(x) = x và hàm trần f(x) = x đều là hàm đơn điệu tăng. 3. Logarit (Logarithms) Với n > 0: phép toán logarit: + lg n = log 2 n (lôgarit cơ số 2) + ln n = log e n (lôgarit tự nhiên) + lg k n = (lg n) k (lôgarit mũ) + lg lg n = lg(lg n) (lôgarit kết hợp) 6 - Quy ước: lg n+k nghĩa là lg(n) + k , không phải là lg(n+k) - Nếu b > 1 và n > 0 thì log b n là hàm thực sự tăng. - Hàm f(n) là được giới hạn đa lôgarit nếu f(n) = O(lg k n) với k bất kỳ. - Ta có thể biểu diễn sự tăng trưởng của đa thức và đa lôgarit bằng cách thay thế lg n cho n và 2 a cho a ở phương trình 0lim = ∞→ n b n a n , dễ dàng ta có: 0 lg lim )2( lg lim lg == ∞→∞→ a b n na b n n nn - Kết luận rằng: lg b n = o(n a ) với số mũ a > 0 thì mọi hàm đa thức dương tăng nhanh hơn hàm các hàm đa lôgarit (n a tăng nhanh hơn lg b n khi n→∞). 7 III. Bài tập 1. Bài tập 3.1-1: Cho f(n) và g(n) là những tiệm cận không âm. Bằng cách sử dụng định nghĩa cơ bản của ký hiệu Θ Chứng minh rằng: max(f(n),g(n)) = Θ(f(n) + g(n)). Thật vậy, ta cần chứng minh: T/h1: c 1 (f(n) + g(n)) ≤ max(f(n), g(n)) ≤ c 2 (f(n) + g(n)) với mọi n 0 sao cho n≥n 0 . Chú ý max(f(n),g(n)) ≤ f(n) + g(n). Vì vậy, khi c 2 = 1, vế bên phải đúng. T/h 2: f(n) ≤ max(f(n), g(n)) và g(n) ≤ max(f(n), g(n)) ⇒ f(n) + g(n) ≤ 2max(f(n), g(n)) ⇒ (f(n) + g(n)) / 2 ≤ max(f(n), g(n)). Vì vậy, khi c1 = 1/2, vế bên trái đúng. Kết luận: Ta tìm được: c1=1/2; c2=1; với mọi n 0 8 2. Bài tập 3.1-2: Chứng minh rằng đối với bất kỳ hằng số thực a và b, với b > 0, (n + a) b = Θ(n b ). Thật vậy, theo định nghĩa: Θ(g (n)) = {f(n): tồn tại c 1 , c 2 , n 0 sao cho 0 ≤ c 1 g (n) ≤ f (n) ≤ c 2 g (n), ∀ n ≥ n 0 }. ⇒ 0 ≤ c 1 n b ≤ (n + a) b ≤ c 2 n b với mọi n ≥ n 0 và c 1 , c 2 , n 0 > 0, Vì n 0 > 0, ⇒ |n + a| ≤ n + |a| ≤ 2n , với n 0 ≥ |a|. Do đó, (n + a) b ≤ (2n) b = 2 b n b với c 2 = 2 b . Tương tự ta có: |n + a| ≥ n - |a| ≥ n / 2 , với n 0 ≥ 2 |a| Do đó (n + a) b ≥ (n / 2) b = (1/2) b n b với c 1 = (1/2) b . Vậy: c 1 = (1/2) b , c 2 = 2 b , và n 0 ≥ 2 |a| ta có: (n + a) b = Θ(n b ). 3. Bài tập 3.1.4: 2 n+1 =O(2 n ) ?, 2 2n =O(2 n ) ? * 2 n+1 =O(2 n ) ? Ta có: 2 n+1 =2 . 2 n Giả sử n 0 =1 và c=2 thì ta có 0 ≤ 2 n+1 ≤ c(2 n ) với mọi n ≥ n 0 . Theo định nghĩa: Khi 2 n+1 là một phần tử của tập O(2 n ) thì 2 n+1 =O(2 n ) * 2 2n =O(2 n ). Giả sử: 2 2n ≤ c.2 n (1) Ta có: 2 2n = 2 n . 2 n (2 2n ≥ 0 với n>0) (2) Từ (1) và (2) 2⇒ n ≤ c ⇒ n ≤ lg c Nhưng n không phải là hằng số. Do đó 2 2n =O(2 n ) không đúng. 9 4. Bài tập 3.1.5 (Chứng minh Định lý 3.1):Với hai hàm bất kỳ f(n) và g(n), f(n)=Θ(g(n)) khi và chỉ khi f(n) = O(g(n)) và f(n) = Ω(g(n)). * C/m: f(n)=Θ(g(n)) ⇒ f(n) = O(g(n)) và f(n) = Ω(g(n)). Giả sử f(n) = Θ(g(n)) theo định nghĩa, tồn tại các hằng số dương c 1 , c 2 , và n 0 sao cho 0 ≤ c 1 g(n) ≤ f(n) ≤ c 2 g(n), ∀ n ≥ n 0 . Từ đó ta có các bất đẳng thức sau: 0 ≤ f(n) ≤ c 2 g(n) và 0 ≤ c 1 g(n) ≤ f(n). - 0 ≤ f(n) ≤ c 2 g(n) => f(n) = O(g(n)) (với f(n) là một phần tử của tập O(g(n))). - 0 ≤ c 1 g(n) ≤ f(n) => Ω(g(n)) = {f (n): tồn tại hằng số dương c và n 0 sao cho 0 ≤ cg(n) ≤ f(n), với mọi n ≥ n 0 ). ⇒ f(n) = Ω(g(n)). Từ đó ⇒ f(n)=Θ(g(n)) ⇒ f(n) = O(g(n)) và f(n) = Ω(g(n)). (1) * C/m: f (n) = O(g(n)) và f(n) = Ω(g(n)) ⇒ f(n)=Θ(g(n)). Giả thiết f(n) = O(g(n)) và f(n) = Ω(g(n)). Theo định nghĩa: Ta chỉ cần làm ngược từ phần đầu để đạt được f(n) = Θ(g(n)). (2) Từ (1) và (2), định lý được chứng minh 5. Bài tập 3.1.6: Chứng minh rằng thời gian chạy của một thuật toán là Θ(g(n)) nếu và chỉ nếu thời gian chạy trong trường hợp xấu nhất là O(g(n)) và tốt nhất là Ω(g(n)). Thật vậy, theo định lý 3.1 ta có f(n)=Θ(g(n)) khi và chỉ khi f(n) = O(g(n)) và f(n) = Ω(g(n)). 10 [...]... chuyển giữa 1 và 2 tham số Ω(g(n,m)) = {f(n,m): tồn tại hằng số dương c, n 0, và m0 sao cho 0 ≤ cg (n, m) ≤ f(n,m) ∀n ≥ n0 và m ≥ m0} Θ(g(n,m)) = {f(n, m): tồn tại hằng số dương c 1, c2, n0, và m0 sao cho 0 ≤ c1g(n,m) ≤ f(n,m) ≤ c2g(n,m) ∀n ≥ n0 và m ≥ m0} 11 8 Bài tập 3.2.1: Hãy chỉ ra nếu f(n) và g(n) là các hàm đơn điệu tăng, f(n) + g(n) và f (g(n)) cũng đơn điệu tăng, và nếu f(n) và g(n) không... là hàm đơn điệu tăng T/h 1: Giả thiết cho f(n) và g(n) là 2 hàm đơn điệu tăng, theo định nghĩa, ta có: m ≤ n ⇒ f(m) ≤ f(n) và g(m) ≤ g(n) Cộng 2 vế BĐT trên ta được: f(m) + g(m) ≤ f(n) + g(n), dễ thấy rằng f(n) + g(n) là đơn điệu tăng Cho g(m) = p và g(n) = q, khi g(m) ≤ g(n) =>thì p ≤ q và f(n) đơn điệu tăng vì thế f(p) ≤ f(q) điều này có nghĩa là f(g(m)) ≤ f(g(n)) cho thấy f(g(n)) cũng đơn điệu tăng. .. không chứa hàm f(n) nào nên nó phải là tập rỗng 7 Bài tập 3.1.8: Ta có thể mở rộng ký hiệu tiệm cận trong trường hợp của hai tham số n và m có thể tự do tiến về vô cực với tốc độc khác nhau Cho hàm g(n,m), ta định nghĩa O(g(n,m)) là tập hợp các hàm: O(g(n,m)) = {f(n,m): có tồn tại hằng số dương c, n 0, và m0 sao cho 0 ≤ f(n,m) ≤ c.g(n,m) ∀n ≥ n0 và m ≥ m0} Hãy cho các định nghĩa đúng Ω(g(n,m)) và Θ(g(n,m))... là f(g(m)) ≤ f(g(n)) cho thấy f(g(n)) cũng đơn điệu tăng Thứ 2, giả thiết f(n) và g(n) không âm, với mọi n, f(n) ≥ 0 và g(n) ≥ 0 Ta có f(m) ≤ f(n) vì thế f(m)·g(n) ≤ f(n)·g(n) và g(m) ≤ g(n) ⇒ f(m) · g(m) ≤ f(m) · g(n) ⇒ f(m) · g(m) ≤ f(m) · g(n) ≤ f(n) · g(n) ta thấy: f(m) · g(m) ≤ f(n) · g(n) chỉ ra rằng f(n) · g(n) là đơn điệu tăng 9 Bài tập 3.2.2 Chứng minh logb(1/a) =-logb (a) , logb(a) = 1/loga(b)...6 Bài tập 3.1.7: Cải tiến để o(g(n)) ∩ ω (g(n)) = ∅ Cho f(n) = o(g(n)) và f(n) = ω(g(n)) với định nghĩa giới hạn của chúng là: limn→∞(f(n)/g(n)) = 0 và limn→∞(f(n)/g(n)) = ∞ mà không đồng thời có giá trị đúng bởi vậy nó không tồn tại hàm sao cho có o(g(n)) ω(g(n)) Theo định nghĩa: + o(g(n)) = { f(n) | ∀ c > 0, n0 > 0 sao cho 0 ≤ f(n) < c.g(n) ∀ n > n0}... Suy ra lg lg n! bị chặn 12.Bài tập 3.2-5: Tiệm cận nào lớn hơn: lg(lg* n) hay lg*(lg n)? Ta có: Gọi lg*n=i thì lg*(lgn)=i-1 Khi đó lg*(lg n) có số lần lặp lại ít hơn lg*n và có kết quả 0, tồn tại n0 sao cho 0 ≤ c2n < n! Với n0 = 4 và c = 1, 0 ≤ c.2n < n! Vậy n! = ω(2n) * lg(n!) = Θ(n lg n) Tồn tại c1, c2, và n0 sao cho 0 ≤ c1nlg n ≤ n! ≤ c2nlg n, ∀ n > n0 Sử dụng công thức xấp xỉ của Sterling ta có, n! = sqrt(2πn)(n/e)n(1 + Θ(1/n)) ( theo 3.1-7) ⇒ lg(n!) = lg(sqrt(2πn)(n/e)n(1... logb ( c ) log c ( a ) (logb ( c )log c ( a )) a =c =c = c logb ( a ) 10.Bài tập 3.2.3 Chứng minh n! = o(nn), n! = ω(2n), và lg(n!) = Θ(n lgn) * n! = o(nn) Với mọi c>0, tồn tại n0 sao cho 0 ≤ n! < cnn với mọi n ≥ n0 Không mất tính tổng quát, giả sử: 12 n! = a1 a2 · an với a1 = 1 và a(i+1) = ai+1, nn = b1 b2 · bn với b1 = b2 = = bn = n Vì an = bn nhưng aj < bj , 1 < j < n Suy ra: n! < nn , n ≥ 2... lg(n!) = lg(sqrt(2πn)(n/e)n(1 + Θ(1/n))) = lg sqrt(2πn) + lg (n/e)n + lg (1 + Θ(1/n)) = Θ(sqrt(n)) + Θ(n lg n) + Θ(lg 1/n) = Θ(n lg n) 11.Bài tập 3.2.4 lg n!, lg lg n! có bị chặn không? lg n! Hàm f(n) được gọi là bị chặn nếu nó bị chặn trên bởi 1 đa thức Có nghĩa là tồn tại c, k, n0 sao cho f(n) ≤ cnk, n>n0 ⇒lg f(n) ≤ lg cnk = c1 klg n (*) do đó f(n) bị chặn nếu: lg f(n) = Θ(lg n) Gán lg n . THIẾT KẾ THUẬT TOÁN ĐỀ TÀI: SỰ TĂNG TRƯỞNG HÀM Giáo viên hướng dẫn Nhóm học viên thực hiện: Nhóm 7 TS. Hoàng Quang Thái Quang Hoàng Hoàng Tuấn Hưng Hoàng Hữu Chiến Đoàn Văn Cự Đặng Văn Vinh Huế,. hàm đa thức dương tăng nhanh hơn hàm các hàm đa lôgarit (n a tăng nhanh hơn lg b n khi n→∞). 7 III. Bài tập 1. Bài tập 3.1-1: Cho f(n) và g(n) là những tiệm cận không âm. Bằng cách sử dụng. định lý 3.1 ta có f(n)=Θ(g(n)) khi và chỉ khi f(n) = O(g(n)) và f(n) = Ω(g(n)). 10 6. Bài tập 3.1 .7: Cải tiến để o(g(n)) ∩ ω (g(n)) = ∅ Cho f(n) = o(g(n)) và f(n) = ω(g(n)). với định nghĩa giới