THUAT TOAN UNG DUNG QUY HOACH DONG Range Minimum Query Pham Quang Dũng Bộ môn KHMT dungpq@soict.hust.edu.vn.
Trang 1
THUAT TOAN UNG DUNG
QUY HOACH DONG Range Minimum Query
Pham Quang Dũng
Bộ môn KHMT dungpq@soict.hust.edu.vn
Trang 2
Z
Bai toan Range Minimum Query `
RMQ
s Cho dãy a[0], a[1], ., a[N-1] Với mỗi bộ chỉ sô 0 < i<j
<N-1, hãy thực hiện truy vận RMQ(, /) tim va tra vé
chỉ số của phân tử nhỏ nhất trong dãy con a[ï],
a[i+†], , a[[l
2!14|6|11|6|8|7|L3|L3|51819|1
| J
-—
CuuDuongThanC
RMQ(6,11) = 7
Trang 3
Z
Bai toan Range Minimum Query
RMQ
X
e Ký hiệu Mỹ, ï] là chỉ sỗ phân tử nhỏ nhất của dãy afi],
a[i+2], , a[i+2/ -1] (dãy bat dau từ chỉ số ¡ và có độ dài
là 2/)
10 11 12 13 14 15
2 6817131355189 |1|12|1614
0 |0 4 5 6 7 8 9 10 | 11 |12 |13 | 14 | 15
1 | 0 4 6 7 8 8 9 10 |} 12 | 12 | 13 | 15
4 } 12
/
Trang 4
Z
Bai toan Range Minimum Query `
RMQ
« Bài toán con nhỏ nhất MỊ[0,ï] =i, i = 0, , N-1
‹ Công thức truy hôi
M[-1,i+2/1], ngược lại
MU,
Trang 5C Bai toan Range Minimum Query `
RMQ
preprocessing(){
for (1 = 03 i < N; i++) M[@,7] = 1;
for (7 = 0; 27 < N; j+t){
for(† = 0; ỉ + 27 -1<N; i++){
if a[M[j-1,71]] < a[M[7-1,i+2?71]] then{
M[j,t] = M[7-1,1];
}else{
M[7,+] = M[7-1,1+2?'];
CuuDuongThanCong.com
Trang 6
Z
Bai toan Range Minimum Query
RMQ
X
e Truy van RMQ(i,/)
° k= [log(-+1)}
e RMQ(i,/) =! M[k,if] néu a[M[k,i]] s a[MIk, j-2'+1]]
M[k, j-2*“+1]], ngược lại
e RMQ(4,14) = ?
© k = [log(14-4+1)]=3
» al7] > a[12] > RMQ(4,14)=12 MỊ37]=12
J
|
M[3,4] = 7 _J
CuuDuongThanCong.com