Youtube.com/PoppinKhiem
H C VI N CÔNG NGH B U CHÍNH VI N Ư THÔNG
KHOA CÔNG NGH THÔNG TIN 1
BÁO CÁO
MÔN: CHUYÊN Đ CÔNG NGH PH N M M
CH Đ: PATTERN SEARCHING
Gi ng viên: Nguy n Duy Ph ng ươ
Sinh viên:
Mã SV: B52
Nhóm MH:
1
Youtube.com/PoppinKhiem
Hà N i, 3/7/2021
2
Youtube.com/PoppinKhiem
Muc luc
I. Tim kiêm mâu t trai qua phai ư
1. Thu t toán Brute-Force.................................................
2. Thu t toán Knuth-Morris-Pratt.....................................
3. Thu t toán Karp- Rabin................................................
4. Thu t toán Morris-Pratt................................................
5. Thu t toán Search with an automaton..........................
II. Tìm kiêm mâu t phai qua trai ư
1. Thu t toán Boyer-Moore..............................................
2. Thu t toán Turbo- Boyer- Moore.................................
3. Zhu-Takaota..................................................................
4. Thu t toán Berry- Ravindran .......................................
5. Thu t toán Apostollico- giancarlo................................
6. Thu t toán Colussi........................................................
III. Tim kiêm mâu t vi tri cu thê ư
1. Thu t toán Skip- Search...............................................
2. Thu t toán Galil-Giancarlo...........................................
IV. Tim kiê m mâu t vi tri bât ki ư
1. Thu t toán Quick Search..............................................
2. Thu t toán Smith..........................................................
3. Thu t toán Raita............................................................
4. Thu t toán HorsePool...................................................
3
Youtube.com/PoppinKhiem
I. Tìm ki m m u t trái qua ph iế
1. Thu t toán Brute Force
Đc đi m
Không có giai đo n ti n x lý
B nh c n dùng c đnh
Luôn luôn d ch 1 b c sang ph i ướ
Vi c so sánh có th ph i dùng trong các tr ng h p ườ
Đ ph c t p pha th c thi là O(m x n)
So sánh kho ng 2n ký t
Trình bày thu t toán
Thu t toán Brute Force ki m tra t t c các v trí trong đo n văn b n
gi a 0 và n-m, không c n quan tâm li u m u này có t n t i v trí đó
hay không. Sau đó, sau m i l n ki m tra m u s d ch sang ph i m t v
trí.
Thu t toán Brute Force không c n giai đo n ti n x lý cũng nh ư
các m ng ph cho quá trình tìm ki m. Đ ph c t p tính toán c a thu t ế
toán này là O(m.n).
Code
void BruteForce(char *x,int m,char *y,int n){
for(int i=0 ; i<=n-m ; i++){
for(int j=0 ; j<m && x[j]==y[j+i] ; j++){ // Kim tra t i j trong X
có = i+j trong Y
if(j==m-1){
printf("FOUND AT %i \n",i);
}
}
4
Youtube.com/PoppinKhiem
}
}
Ki m nghi m thu t toán
Xâu X=”AB”
Xâu Y=”ABDAAB”
1YA B D A A B
XA (1) B (2)
2YA B D A A B
XA B
3YA B D A A B
XA
4YA B D A A B
XA (1) B
5YA B D A A B
XA (1) B (2)
2. Thu t toán Knuth-Morris-Pratt
Đc đi m
Th c hi n t trái qua ph i
Pha ti n x lý PreKMP có đ ph c t p không gian và th i gian là
O(m)
Pha tìm ki m có đ ph c t p th i gian O(m+n)ế
Trình bày thu t toán
Thu t toán là b n đn gi n và x lý t ng t nh thu t toán ơ ươ ư
Morris-Pratt khi c g ng d ch chuy n m t đo n dài nh t sao cho m t
ti n t (prefix) v c a x trùng v i h u t (suffix) c a u
Đi m khác nhau là KMP s th c hi n thêm so sánh c và b, có
nghĩa KMP s th c hi n m t pha dòm tr c ký t bên ph i đo n đang ướ
5