Bài giảng Phân tích thiết kế giải thuật: Chia để trị (tiếp) - GV. Hà Đại Dương
Số trang: 12
Loại file: pdf
Dung lượng: 494.81 KB
Lượt xem: 17
Lượt tải: 0
Xem trước 2 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
Bài giảng gồm các bài tập áp dụng Chia để trị có hướng dẫn chi tiết phương pháp làm nhằm giúp các bạn hiểu rõ hơn về thuật toán này. Tài liệu tham khảo hữu ích dành cho các bạn ngành Công nghệ thông tin. Mời các bạn cùng tham khảo.
Nội dung trích xuất từ tài liệu:
Bài giảng Phân tích thiết kế giải thuật: Chia để trị (tiếp) - GV. Hà Đại Dương 2/2/2017 Phân tích và Thiết kế THUẬT TOÁN Hà Đại Dương duonghd@mta.edu.vn Web: fit.mta.edu.vn/~duonghd Bài 5 - Chia để trị (tiếp) PHÂN TÍCH VÀ THIẾT KẾ THUẬ TOÁN NỘI DUNG I. II. III. IV. Giới thiệu Lược đồ chung Bài toán áp dụng Bài tập 1 2/2/2017 III. Bài toán áp dụng 5. Nhân số nguyên (lớn) Bài toán: Nhân 2 số nguyên (lớn) x, y có n chữ số x x n 1 x n 2 ...x1 x0 y y n 1 y n 2 ... y1 y 0 z x * y z 2 n 1 z 2 n 2 ...z1 z 0 Quá quen: Đến mức không cần phải thắc mắc về tính tối ưu của nó Cách thức vẫn làm (quá quen): Độ phức tạp O(n2) III. Bài toán áp dụng 5. Nhân số nguyên (lớn) Ý tưởng: Chia để trị Đặt a x n 1 x n 2 ...x n / 2 b x ( n / 2 ) 1 x ( n / 2 ) 2 ...x 0 c y n 1 y n 2 ... y n / 2 d y ( n / 2 ) 1 y ( n / 2 ) 2 ... y 0 Khi đó x a * 10 n / 2 b Và z x * y (a *10n /2 b)(c *10n /2 d ) y c * 10 n / 2 d (a * c) *10n (a * d b * c) *10n /2 (b * d ) III. Bài toán áp dụng 5. Nhân số nguyên (lớn) Ý tưởng: Chia để trị x,y: có độ dài bằng nhau và độ dài có dạng 2m, nếu Có 1 chữ số: làm trực tiếp Có n chữ số: Tích của nó có thể biểu diễn qua tích của 4 số nguyên có độ dài n/2 chữ số z (a * c) *10n (a * d b * c) *10n /2 (b * d ) (và các phép cộng, dịch phải) 2 2/2/2017 III. Bài toán áp dụng 5. Nhân số nguyên (lớn) Ý tưởng: Chia để trị z (a * c) *10n (a * d b * c) *10n /2 (b * d ) Gọi T(n) là thời gian thực hiện phép nhân 2 số nguyên có độ dài n thì T(n)=4T(n/2)+O(n) (O(n) là thời gian thực hiện các phép cộng và dịch phải) Giải công thức truy hồi trên ta được T(n) = O(n 2) Chưa nhanh hơn nếu không chia để trị III. Bài toán áp dụng 5. Nhân số nguyên (lớn) Ý tưởng: Năm 1962 nhà toán học người Nga Anatoly Alexeevitch Karatsuba (Karatsuba) đã tối ưu thời gian thực hiện phép nhận 2 số nguyên có n chữ số như sau: Khi đó T(n) = 3T(n/2)+O(n) Giải phương trình đệ qui ta được T(n) = O(nlog23) O(n1.585) III. Bài toán áp dụng 5. Nhân số nguyên (lớn) Thuật toán: Karatsuba Karatsuba(x, y, n); { If n == 1 Return x*y Else { a = x[n-1]. . . x[n/2]; b = x[n/2-1] . . . x[0]; c = y[n-1]. . . y[n/2]; d = y[n/2-1] . . . y[0]; U = Karatsuba(a, c, n/2); V = Karasuba(b, d, n/2); W = Karatsuba(a+b, c+d, n/2); Return U*10n + (W-U-V)*10n/2 + V } } 3 2/2/2017 III. Bài toán áp dụng 6. Nhân ma trận III. Bài toán áp dụng 6. Nhân ma trận III. Bài toán áp dụng 6. Nhân ma trận 4 2/2/2017 III. Bài toán áp dụng 6. Nhân ma trận III. Bài toán áp dụng 6. Nhân ma trận III. Bài toán áp dụng 7. Dãy con lớn nhất Bài toán: Cho mảng A[1..n]. Mảng A[p..q] được gọi là mảng con của A, trọng lượng mảng bằng tổng giá trị các phần tử. Tìm mảng con có trọng lượng lớn nhất (1
Nội dung trích xuất từ tài liệu:
Bài giảng Phân tích thiết kế giải thuật: Chia để trị (tiếp) - GV. Hà Đại Dương 2/2/2017 Phân tích và Thiết kế THUẬT TOÁN Hà Đại Dương duonghd@mta.edu.vn Web: fit.mta.edu.vn/~duonghd Bài 5 - Chia để trị (tiếp) PHÂN TÍCH VÀ THIẾT KẾ THUẬ TOÁN NỘI DUNG I. II. III. IV. Giới thiệu Lược đồ chung Bài toán áp dụng Bài tập 1 2/2/2017 III. Bài toán áp dụng 5. Nhân số nguyên (lớn) Bài toán: Nhân 2 số nguyên (lớn) x, y có n chữ số x x n 1 x n 2 ...x1 x0 y y n 1 y n 2 ... y1 y 0 z x * y z 2 n 1 z 2 n 2 ...z1 z 0 Quá quen: Đến mức không cần phải thắc mắc về tính tối ưu của nó Cách thức vẫn làm (quá quen): Độ phức tạp O(n2) III. Bài toán áp dụng 5. Nhân số nguyên (lớn) Ý tưởng: Chia để trị Đặt a x n 1 x n 2 ...x n / 2 b x ( n / 2 ) 1 x ( n / 2 ) 2 ...x 0 c y n 1 y n 2 ... y n / 2 d y ( n / 2 ) 1 y ( n / 2 ) 2 ... y 0 Khi đó x a * 10 n / 2 b Và z x * y (a *10n /2 b)(c *10n /2 d ) y c * 10 n / 2 d (a * c) *10n (a * d b * c) *10n /2 (b * d ) III. Bài toán áp dụng 5. Nhân số nguyên (lớn) Ý tưởng: Chia để trị x,y: có độ dài bằng nhau và độ dài có dạng 2m, nếu Có 1 chữ số: làm trực tiếp Có n chữ số: Tích của nó có thể biểu diễn qua tích của 4 số nguyên có độ dài n/2 chữ số z (a * c) *10n (a * d b * c) *10n /2 (b * d ) (và các phép cộng, dịch phải) 2 2/2/2017 III. Bài toán áp dụng 5. Nhân số nguyên (lớn) Ý tưởng: Chia để trị z (a * c) *10n (a * d b * c) *10n /2 (b * d ) Gọi T(n) là thời gian thực hiện phép nhân 2 số nguyên có độ dài n thì T(n)=4T(n/2)+O(n) (O(n) là thời gian thực hiện các phép cộng và dịch phải) Giải công thức truy hồi trên ta được T(n) = O(n 2) Chưa nhanh hơn nếu không chia để trị III. Bài toán áp dụng 5. Nhân số nguyên (lớn) Ý tưởng: Năm 1962 nhà toán học người Nga Anatoly Alexeevitch Karatsuba (Karatsuba) đã tối ưu thời gian thực hiện phép nhận 2 số nguyên có n chữ số như sau: Khi đó T(n) = 3T(n/2)+O(n) Giải phương trình đệ qui ta được T(n) = O(nlog23) O(n1.585) III. Bài toán áp dụng 5. Nhân số nguyên (lớn) Thuật toán: Karatsuba Karatsuba(x, y, n); { If n == 1 Return x*y Else { a = x[n-1]. . . x[n/2]; b = x[n/2-1] . . . x[0]; c = y[n-1]. . . y[n/2]; d = y[n/2-1] . . . y[0]; U = Karatsuba(a, c, n/2); V = Karasuba(b, d, n/2); W = Karatsuba(a+b, c+d, n/2); Return U*10n + (W-U-V)*10n/2 + V } } 3 2/2/2017 III. Bài toán áp dụng 6. Nhân ma trận III. Bài toán áp dụng 6. Nhân ma trận III. Bài toán áp dụng 6. Nhân ma trận 4 2/2/2017 III. Bài toán áp dụng 6. Nhân ma trận III. Bài toán áp dụng 6. Nhân ma trận III. Bài toán áp dụng 7. Dãy con lớn nhất Bài toán: Cho mảng A[1..n]. Mảng A[p..q] được gọi là mảng con của A, trọng lượng mảng bằng tổng giá trị các phần tử. Tìm mảng con có trọng lượng lớn nhất (1
Tìm kiếm theo từ khóa liên quan:
Phân tích thiết kế giải thuật Bài tập Chia để trị Đánh giá độ phức tạp thuật toán Thiết kế giải thuật Tối ưu thuật toánTài liệu liên quan:
-
Bài giảng Phân tích thiết kế và giải thuật - Chương 2: Kỹ thuật thiết kế giải thuật
80 trang 249 0 0 -
Bài giảng Phân tích thiết kế thuật toán: Chương 3 - Nguyễn Văn Linh
87 trang 114 0 0 -
Phân tích và thiết kế giải thuật: Các kỹ thuật thiết kế giải thuật - Chương 5
0 trang 51 0 0 -
Giáo trình giải thuật - tổng quan giải thuật
0 trang 46 0 0 -
Bài giảng Phân tích thiết kế và giải thuật - Chương 1: Kỹ thuật phân tích giải thuật
59 trang 38 0 0 -
Bài giảng Phân tích và thiết kế giải thuật: Chương 3 - PGS.TS. Dương Tuấn Anh
47 trang 31 0 0 -
Bài giảng Cấu trúc dữ liệu và giải thuật - TS. Phan Thị Hà
140 trang 30 0 0 -
40 trang 30 0 0
-
0 trang 30 0 0
-
0 trang 29 0 0