Bài giảng Phân tích và thiết kế thuật toán - Đánh giá bằng công cụ toán học cơ bản trình bày các nội dung như: Đánh giá bằng công cụ toán học sơ cấp, phân loại sơ bộ các đoạn mã, vấn đề rẽ nhánh, đánh giá bằng thực nghiệm,... Mời các bạn cùng tham khảo.
27/03/2008 ĐÁNH Á GIÁ Á BẰNG Ằ CÔNG Ô CỤ TỐN HỌC CƠ BẢN Phạm Thế Bảo Khoa Tốn – Tin học Trường Đại học Khoa học Tự nhiên Tp.HCM Đánh giá cơng cụ tốn học sơ cấp Phương pháp chung: Phân tích trực tiếp đoạn mã sử dụng kỹ thuật: h ậ • • • • Phép đếm Tính tổng hữu hạn Xét dấu hàm … Xác định số phép toán chủ yếu Phép toán Phé t chủ hủ yếu ế t đ đoạn mã ã phép gán so sánh Phương pháp không giải tất trường hợp Phạm Thế Bảo 27/03/2008 • Ví dụ 1: s=0 i=1 while i≤n j=n-i while j≥1 s=s+1 j=j-1 endw i=i+1 endw Khảo sát độ phức tạp số phép gán so sánh thuật toán Phạm Thế Bảo P(i) s=0 i=1 while i≤n j=n-i while j≥1 s=s+1 j=j-1 endw i=i+1 endw ? phép gán ? phép so sánh ? phép gán ? phép so sánh ? phép gán ? phép gán ? phép gán ⎡ n ⎤ Số phép gán = + n+ ⎢ ∑ Gaùn (Pi ) ⎥ +n ⎣ i=1 ⎦ = + 2n + n(n − 1) = n + n + = O(n ) Phạm Thế Bảo 27/03/2008 Số phép so sánh = ? (Bài tập 1) • Ví dụ 2: Pi sum = 0 i = 1 while i≤n j = n‐i*i while j ≤ i*i sum=sum + i*j j=j+1 endw i=i+1 endw ⎡ n ⎤ Số phép gán = + n+ ⎢ ∑ Gán (Pi ) ⎥ +n ⎣ i=1 ⎦ Phạm Thế Bảo n ∑ = + 2n + i =1 n ( 2α i ) = + n + ∑ α i =1 i Nếu thay dòng lệnh j=n-i*i dịng lệnh j=1 αi = i2 Vịngg lặp ặp Pi thực ự ệ n-i2 ≤ i2 ⇔ i2 ≥ n/2 Từ suy : n ⎧ neáu i < ⎪⎪0 αi = ⎨ ⎪i − (n − i ) + i2 ≥ n ⎪⎩ Như vậy: n ∑αi = i=1 n ∑ ⎡ n⎤ i=⎢ ⎥ ⎢ 2⎥ (2i − n + 1) = n Bài tập 2: Hãy viết chương trình thử nghiệm để đếm số phép gán so sánh đoạn chương trình ví dụ 2, để kiểm tra lại lý thuyết ⎡ n⎤ i − (n − ⎢ ⎥ + 1)(n − 1) n⎤ ⎢ ⎥ ⎥ ∑ ⎡ i=⎢ ⎢ 2⎥ Phạm Thế Bảo 27/03/2008 • Ví dụ 3: Xét thuật tốn tìm phần tử max mảng chiều có n phần tử max = A[0]; i=1; while i0 y(i)>0}| i m () x(i) + + y(i) ‐ ‐ 2m + + ‐ + Phạm Thế Bảo 14 27/03/2008 • Nếu n≥2m – α = 2m-1 – β = m-1 n – Gán = 2+3n+ 3n β = 3n 3n+m+1 m ≤ 3n + +1 ≈ O(n) – So sánh = 2n+ α+1=2n+2m ≤ 2n+n ≈ O(n) • Nếu n