Chia để trị là một phương pháp được áp dụng rộng rãi, ý tưởng chung là phân rã bài toán thành bài toán nhỏ hơn độc lập với nhau, giải các bài toán con theo cùng 1 cách thức, Tổng hợp” lời các bài toán con để có được kết quả bài toán ban đầu. Để tìm hiểu rõ hơn về phương pháp này, mời các bạn cùng tham khảo bài giảng.
2/2/2017 Phân tích Thiết kế THUẬT TOÁN Hà Đại Dương duonghd@mta.edu.vn Web: fit.mta.edu.vn/~duonghd Bài - Thiết kế thuật toán Chia để trị Divide&Conquer 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 2/2/2017 I Giới thiệu Là phương pháp áp dụng rộng rãi Ý tưởng chung phân rã toán thành toán nhỏ “độc lập” với Giải toán theo cách thức “Tổng hợp” lời toán để có kết toán ban đầu Tư tưởng chung cách tiếp cận Chia để trị II Lược đồ chung Chia: • Bằng cách chia tập hợp đối tượng toán thành toán “độc lập” • Tiếp tục chia toán giải trực tiếp (không cần, chia nhỏ nữa) Trị: • Trên toán thực cách thức: Chia nhỏ cần giải trực tiếp Tổng hợp: • Khi toán giải, tổng hợp để có kết toán ban đầu II Lược đồ chung 2/2/2017 III Bài toán áp dụng Tìm kiếm nhị phân The Manhattan phone book has 1,000,000+ entries How is it possible to locate a name by examining just a tiny, tiny fraction of those entries? III Bài toán áp dụng Tìm kiếm nhị phân Key idea of “phone book search”: repeated halving To find the page containing Pat Reed’s number… while (Phone book is longer than page) Open to the middle page if “Reed” comes before the first entry, Rip and throw away the 2nd half else Rip and throw away the 1st half end end III Bài toán áp dụng Tìm kiếm nhị phân What happens to the phone book length? Original: 3000 After rip: 1500 After rips: 750 After rips: 375 After rips: 188 After rips: 94 : After 12 rips: pages pages pages pages pages pages page 2/2/2017 III Bài toán áp dụng Tìm kiếm nhị phân • Repeatedly halving the size of the “search space” is the main idea behind the method of binary search • An item in a sorted array of length n can be located with just log2 n comparisons n log2(n) 100 1000 10000 • “Savings” is significant! 10 13 III Bài toán áp dụng 10 11 12 v 12 15 33 35 42 45 51 62 73 75 86 98 Binary search: target x = 70 L: Mid: R: 12 v(Mid)