Đang tải... (xem toàn văn)
Tiếp tục chia cho đến khi các bài toán nhỏ này không thể chia thêm nữa, khi đó ta sẽ giải quyết các bài toán nhỏ nhất này và cuối cùng kết hợp giải pháp của tất cả các bài toán nhỏ để tì[r]
(1)Giải thuật chia để trị (divide and conquer) Giải thuật chia để trị (Divide and Conquer) ?
Phương pháp chia để trị (Divide and Conquer) phương pháp quan trọng việc thiết kế giải thuật Ý tưởng phương pháp đơn giản dễ hiểu: Khi cần giải toán, ta tiến hành chia tốn thành tốn nhỏ Tiếp tục chia toán nhỏ khơng thể chia thêm nữa, ta giải toán nhỏ cuối kết hợp giải pháp tất toán nhỏ để tìm giải pháp tốn ban đầu
Nói chung, bạn hiểu giải thuật chia để trị (Divide and Conquer) qua tiến trình sau:
Tiến trình 1: Chia nhỏ (Divide/Break)
Trong bước này, chia toán ban đầu thành toán Mỗi toán nên phần tốn ban đầu Nói chung, bước sử dụng phương pháp đệ qui để chia nhỏ tốn khơng thể chia thêm Khi đó, tốn gọi "atomic – nguyên tử", chúng biểu diễn phần tốn ban đầu
Tiến trình 2: Giải tốn (Conquer/Solve) Trong bước này, tốn giải
Tiến trình 3: Kết hợp lời giải (Merge/Combine)
(2)Hạn chế giải thuật chia để trị (Devide and Conquer) Giải thuật chia để trị tồn hai hạn chế, là:
Làm để chia tách toán cách hợp lý thành toán con, tốn giải thuật tốn khác phức tạp
Việc kết hợp lời giải toán thực Ví dụ giải thuật chia để trị
Dưới số giải thuật xây dựng dựa phương pháp chia để trị (Divide and Conquer):
Giải thuật xếp trộn (Merge Sort) Giải thuật xếp nhanh (Quick Sort)
Giải thuật tìm kiếm nhị phân (Binary Search) Nhân ma trận Strassen