(Tiểu luận) bài tập môn phân tích và thiết kế thuật toán đánh giá thuật toán dùng kỹ thuật toán sơ cấp

29 3 0
(Tiểu luận) bài tập môn phân tích và thiết kế thuật toán đánh giá thuật toán dùng kỹ thuật toán sơ cấp

Đ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 TẬP MƠN PHÂN TÍCH VÀ THIẾT KẾ THUẬT TỐN by Hoàng Quang Khải - 21520952 Lê Tuấn Vũ - 21521679 Nguyễn Nhật Minh - 21521135 Lê Tiến Quyết - 21520428 Faculty of Computer Science Homework #01: Đánh giá thuật toán dùng kỹ thuật toán sơ cấp GV hướng dẫn: Huỳnh Thị Thanh Thương TPHCM, March 9, 2023 Tính tổng hữu hạn a) 1+3+5+7+ .+999 = b) + + + 16 + + 1024 = n(2a + (n 1)d) − = 22 500(2 + 499.2) a(1 − rn+1) = = 250000 2(1 − 29+1) = 2046 − r1 − n+1 c) 1=n+1−3+1=n−1 i=3 n+1 n+1 (n + 1)(n + 2) d)i = i=3 i− i=1 i=1 −3= i= 2 n + 3n − e) n−1 n−1 n−1 i(i + 1) = (i + i) = i=0 n−1 i + i=0 i=0 i i=0 +n(n − 1) = n(n + 1) = n(n − 1)(2n − 1) f) n j+1 n n j =3 =3 j=1 j =3 3 n+1 − j=0 −1 − 3 = n+2 − j=1 n = (3 n n g) ij = i i=1 j=1 (n + n) n(n + 1) n(n + 1) n(n + 1) n = 2 = − 1) i=1 h) n i(i + 1) i=1 n = i i=1 i − i+1 1 1 = − + − + + n n −n+1 −9 = i) 2 (j + j) = (2 + 2) + (3 + 3) + (5 + 5) = 48 j∈{2,3,5} n+1 j) m n 100 m n (i+j) = 101 i=1 j=0 k=0 (i+j) = 101 i(n + 1) + i=1 j=0 i=1 m(n + 1)(m + 1) = 101 n(n + 1) m mn(n + 1) + = 101 m(n+1)(m+n+1) Đếm số phép gán so sánh s ← 0; i ← 1; while i ≤ n j ← 1; while j ≤ i s←s+1; ← j + 1; end i ← i + 1; end j Vì α /* 2g /* 1g; n+1 ss */ /* 2g */ /* 1g */ số lần lặp vòng lặp i j j mà chạy từ → i số Gọi α */ i Do đó, αi nhận giá trị {1, 4, 9, , i while nhỏ với điều kiện j với bước tăng 2 ≤ i (α i 1) ≥ } → αi = i Kết luận n Gán(n) = + 2n + = n 2αi = + 2n + i = + 2n + i=1 i=1 2n + 3n + 7n + n n Sosánh(n) = n + + (αi + 1) = n + + i=1 = 2n + + n i + i=1 n(n + 1)(2n + 1) = 2n i=1 + 3n + 13n + 6 n(n + 1)(2n + 1) 3 Đếm số phép gán so sánh s ← 0; i ← 1; /* 2g i n ≤ while j←n−i ; while j ≤ i s ← s + ij ; ← j + 1; end i ← i + 1; end */ j /* 1g; n+1 ss */ /* 2g /* 1g */ α Gọi i số lần lặp vòng lặp Vì αi số j mà j chạy từ n 2− i Do đó, αi nhận giá trị {n − i , , i 2 ⇒ αi = i − (n − i ) + = 2i − n + */ while nhỏ với điều kiện j i ≤ 2 (α i 1) ≥ →2 i với bước tăng } n Với αi ≥ ⇔ n − i − i ≤ ⇒ i ≥ (i ≥ 1) Ta có: n n 2αi Gán(n) = + 2n + (2i − n + 1) = + 2n + i=1 i=1 n (2i − n + 1) = + 2n + i=⌈ √ n ⌉ n Sosánh(n) = n + + n (αi + 1) = n + + i=1 αi + i=1 n (2i − n + 1) = 2n + + i=⌈ √ n ⌉ n i=1 n Đặt t = , ta được: n n (2i − n + 1) = i=⌈ √ n (2i − n + 1) = ⌉ i=t t−1 n = (−n + 1)(n − t + 1) + i −2 i=1 = n (−n + 1)(n − t + 1) + n i (−n + 1) + i=t i i=t i=1 n(n + 1)(2n + 1) − t(t − 1)(2t − 1) 33 Kết luận Gán(n) = + 2n + 2(−n + 1)(n − t + 1) + = + 2(−n + 1)(n − t) + 2 3[n(n + 1)(2n + 1) − t(t − 1)(2t − 1)] 3[n(n + 1)(2n + 1) − t(t − 1)(2t − 1)] Sosánh(n) = 2n + + (−n + 1)(n − t + 1) + = + n + (−n + 1)(n − t) + 3[n(n + 1)(2n + 1) − t(t − 1)(2t − 1)] 3[n(n + 1)(2n + 1) − t(t − 1)(2t − 1)] n Với t = Đếm số phép gán so sánh float Function Alpha (float x, long n) long i ← 1; float z ← 0; while i ≤ n long j ← 1; float t ← 1; while j ≤ i t ← tx; j ← 2j; end z ← z + it; i ← i + 1; /* 2g */ /* 2g; n+1 ss */ /* 2g */ /* 2g */ end return z; Gọi αi số lần lặp vòng lặp while nhỏ với điều kiện j ≤ i (α i ≥ 1) Vì αi số j mà j chạy từ → i với tỉ lệ bước tăng k Và j nhận giá trị {1, 2, 4, 8, 16, , }, k ∈ N k Do đó: αi số phần tử tập {k ∈ N | ≤ i} ⇒ ≤ k ≤ log2 i ⇒ αi = ⌊log2 i⌋ + Kết luận n n Gán(n) = + 4n + (⌊log2 i⌋ + 1) 2αi = + 4n + i=1 i=1 n n ⌊log2 i⌋ + = 2+ 4n + i=1 n ⌊log2 i⌋ = + 6n + i=1 i=1 ≈ + 6n + 2n log n n n i=1 n = 3n + + i=1 ⌊log2 i⌋ + (αi + 1) = n + + Sosánh(n) = n + + n i=1 i=1 ⌊log2 i⌋ ≈ 3n + + n log n Đếm số phép gán so sánh sum ← 0; i ← 1; while i ≤ n j ← n − i; while j ≤ 2i sum ← sum + ij; j ← j + 2; end k ← i; while k > sum ← sum + 1; k ← k/2; end i ← i + 1; end /* 2g */ /* 1g; n+1 ss */ /* 2g */ /* 1g */ /* 2g */ /* 1g */ i=1 21 = + n + n + t(2n −1)− t + n ⌊log2 i⌋ i=1 21 ≈ + n + 4n + t(2n −1)− t + n log n Đếm số phép gán so sánh i ← 1; count ← 0; while i ≤ 4n x ← (n − i)(i − 3n); y ← i − 2n; j ← 1; while j ≤ x count ← count − 2; j ← j + 2; end if x > then /* 2g */ /* 3g; 4n+1 ss */ /* 2g */ if y > then count ← count + 1; /* 1g */ end end i ← i + 1; /* 1g */ end Gọi αi số lần lặp vòng lặp while nhỏ với điều kiện j ≤ x Vì αi số j mà j chạy từ → x với bước tăng Do đó: α số phần tử tập i { 1, 3, 5, , x } = ≈ Với αi ≥ ⇔ n + ≤ i ≤ 3n − x−1 x+1 +1= 2 (n − i)(i − 3n) x ≈ Vậy: 0, i ≤ n i ≥ 3n αi = (n − i)(i − 3n) , n + ≤ i ≤ 3n − Ta có bảng xét dấu: i n x = (n − i)(i − 3n) − y = i − 2n − 2n 3n + + − + Kết luận 4n Gán(n) = + × 4n + 2αi + [3n − − (2n + 1) + 1] i=1 3n−1 = 17n + + i=n+1 ≈ 17n + + (n − i)(i − 3n) 50 3n(4n − 1) = 3n + 3n + 4n Sosánh(n) = 4n + + (αi + 1) + 4n + [3n − − (n + 1) + 1] i=1 3n−1 = 14n + i=n+1 ≈ 14n + (n − i)(i − 3n) 2 3n(4n − 1) = 41 3n + 3n 4n − + Đếm số phép gán so sánh i ← 1; count ← 0; while i ≤ 4n x ← (n − i)(i − 3n); y ← i − 2n; j ← 1; while j ≤ x if i ≥ 2y then count ← count − 2; end j ← j + 1; end i ← i + 1; end /* 2g */ /* 3g; 4n+1 ss */ /* 1g */ /* 1g */ /* 1g */ Gọi αi số lần lặp vòng lặp while nhỏ với điều kiện j ≤ x Vì αi số j mà j chạy từ → x với bước tăng Do đó: αi số phần tử tập {1, 2, 3, , x} = x = (n − i)(i − 3n) Với αi ≥ ⇔ n + ≤ i ≤ 3n − Vậy: 0, i ≤ n i ≥ 3n αi = (n − i)(i − 3n), n + ≤ i ≤ 3n − Ta có bảng xét dấu: i n x = (n − i)(i − 3n) − y = i − 2n − 2n 3n + + − + Để câu lệnh count ← count − thực ⇔ i ≤ 2y ⇔ i ≤ 2(i − 2n) ⇔ i ≤ 4n ⇒ Câu lệnh thực while i ≤ 4n thoả mãn 10 4n − + Ta có 4n Gán(n) = + × 4n + 3n−1 2αi = + 16n + i=1 4n Sosánh(n) = 4n + + (n − i)(i − 3n) i=n+1 4n (αi + 1) + i=1 αi i=1 3n−1 = 8n + + (n − i)(i − 3n) i=n+1 Xét: 3n−1 3n−1 i=n+1 i=n+1 3n−1 = −3n (−3n + 4ni − i ) (n − i)(i − 3n) = 3n−1 + 4n i=n+1 3n−1 i i− i=n+1 i=n+1 3n−1 n = −3n (2n − 1) + 4n × 2n(2n − 1) −i + i2 i=1 = 10n − 5n 3n(3n − 1)(6n − 1) − n(n + 1)(2n + 1) + 6 Kết luận + 46n + 8n3 Gán(n) = + 16n + (4n3 − n) = 3 + 22n + 8n3 Sosánh(n) = + 8n + (4n3 − n) = i=1 3 4n − n =

Ngày đăng: 20/09/2023, 14:52

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

Tài liệu liên quan