Chia để trị
Bài giảng chuyên đề "Phân tích thiết kế thuật toán"
Ngày 4 tháng 5 năm 2020
Chia để trị 1 / 20
Nôi dung
1Ý tưởng chia để trị
2Lược đồ giải thuật
3Một số bài toán điển hình
Chia để trị 2 / 20
Ý tưởng chia để trị
Nội dung
1Ý tưởng chia để trị
2Lược đồ giải thuật
3Một số bài toán điển hình
Chia để trị 2 / 20
Ý tưởng chia để trị
Ý tưởng
Phương pháp thiết kế dựa trên hai thao tác chính:
Chia (Divide): phân bài toán ban đầu thành các bài toán con
kích thước nhỏ hơn, cùng cách giải.
Trị (Conquer): giải từng bài toán con (theo cách tương tự bài
toán đầu - đệ qui) rồi tổng hợp các lời giải để nhận kết quả của
bài toán ban đầu.
Việc “phân rã” được thực hiện trên miền dữ liệu (chia miền dữ liệu
thành các miền nhỏ hơn tương đương với một bài toán con)
Chia để trị 3 / 20
Lược đồ giải thuật
hình - Lược đồ giải thuật
hình
Xét bài toán trên miền dữ liệu R
D&C(R) hàm thể hiện cách giải bài toán trên miền dữ liệu R
theo phương pháp chia để trị.
Nếu R thể phân thành nmiền con: R = R1R2... Rn
c đồ giải thuật
D&C(R)
if (R=R0)
Giải D&C(R0)
else {
Chia miền R thành R1, R2, ..., Rn
for ( i = 1; i<=n;i++)
Giải D&C(Ri);
Tổng hợp kết quả;
}
Chia để trị 4 / 20