1
Ch ng 2ươ
Chi n l c chia -tr ế ượ
(Divide-and-conquer)
2
N i dung
1. Chi n l c chia đ trế ượ
2. Quicksort
3. X p th t b ng ph ng pháp tr nế ươ
4. X p th t ngo iế
5. Cây tìm ki m nh phânế
3
Chi n l c chia-đ -trế ượ
Là chi n l c thi t k gi i thu t n i ti ng nh t.ế ượ ế ế ế
Các gi i thu t chia-đ -tr th ng ti n hành theo các b c ườ ế ướ
sau:
Th hi n c a i toán đ c chia làm nh ng th hi n nh ượ
h n.ơ
Nh ng th hi n nh h n này đ c gi i quy t (th ng là đ ơ ượ ế ườ
quy, m c dù đôi khi không c n đ quy).
Nh ng l i gi i đ t đ c t nh ng th hi n nh h n ph i ượ ơ
h p l im thành l i gi i c ai toán ban đ u.
Tìm ki m b ng p.p. chia đôiế (binary search) là m t thí d c a
chi n l c chia-đ -tr .ế ượ
S đ sau mô t m t chi n l c chia-đ -tr mà trong đó chia ơ ế ượ
bài toán thành hai bài toán nh h n. Đây là tr ng h p ph ơ ườ
bi n nh t c a chi n l c này.ế ế ư
4
bài toán kích th c nướ
bài toán con 1
kích th c n/2ướ
bài toán con 2
kích th c n/2ướ
l i gi i cho
bài toán con 1 l i gi i cho
bài toán con 2
l i gi i cho bài toán ban đ u
Chi n l c chia-đ -trế ượ
5
2. Gi i thu t Quick sort
Gi i thu t căn b n c a Quick sort đ c pt minh năm ượ
1960 b i C. A. R. Hoare.
Quicksort th hi n tinh th n thi t k gi i thu t theo l i ế ế
Chia đ tr ” (divide-and-conquer).
Quicksort đ c a chu ng vì nó kng q k đ hi n ượ ư
th c hóa.
Quicksort ch đòi h i kho ng ch ng NlgN thao tác căn
b n đ s p th t N ph n t .
Nh c đi m c a Quick sort g m:ượ
- Nó là m t gi i thu t đ quy
- Nó c n kho ng N 2 thao tác căn b n trong tr ng h p ườ
x u nh t
- Nó d b l i khi l p trình (fragile).