196
Simvol
q
w
r
e
t
Oxirgi pozitsiya
4
2
3
0
0
1.
q t e e q r
w
q w r e e
q w r q
r
2.
q t e e q r
w
q w r e e
q
w
r q r
Suffiks jadvali.
Mumkin bo'lgan barcha qo'shimchalar
uchun
jadvalda qismiy satrni o'zgartirish kerak bo'lgan eng kichik miqdor
ko'rsatilgan, u yana qo'shimchaga mos keladi.
Agar bunday siljishning
iloji bo'lmasa, satrning uzunligi ko'rsatilgan.
Misol. Qismiy satr: qwrqr
Suffiks
Boʻsh
r
qr
rqr
wrqr
qwrqr
qadam
1
2
5
5
5
5
1.
q t e e q r
w
q w r e e
q w r q
r
2.
q t e e q r
w
q w r e e
q
w
r q r
3.
q t e e q r w q
w
r e e
q w r
q
r
4.
q t e e q r w q w
r
e e
q w
r
q r
Algoritmning murakkabligi.
O (| haystack | + | needle | + | Σ |)
davriy bo'lmagan qismiy satrlar bo'yicha
O (| haystack | · | needle | + | Σ |) davriy
haystack
- berilgan satr, needle – qismiy satr, Σ
- solishtirish uchun
alifbo
198
}
int main()
{
string txt= "ABAAABCD";
string pat = "ABC";
search(txt, pat);
return 0;
}
Mavzu yuzasidan savollar:
1. Qismiy satrlarni izlash algoritmi nima?
2. Qismiy satrlarni izlash algoritmlarini foydalanish
samaradorligini
taqqoslang
3. Suffiks jadvali nima?
4. Satrlar uchun xesh funksiyasini qoʻllang
5. Robin-Karp va Boyer-Mur algoritmlarini taqqoslang?
Mustaqil ishlash uchun masalalar:
1. C++ tilida xesh jadvallarni hosil qiling.
2. C++da xesh jadvallarning metodlarini qoʻllang
199
GLOSSARY
Abstrakt ma‟lumotlar turi (ADT – Abstract Data Type)
- bu
ma‘lumotlar turlari uchun matematik model, bu yerda ma‘lumotlar turi
xatti-harakatlari (semantikasi) bilan foydalanuvchi
nuqtai nazaridan
aniqlanadi
Algoritm
- bu belgilaydigan cheklangan qoidalar toʻplami, muayyan
vazifalar toʻplamini hal qilish boʻyicha amallar ketma-ketligi va beshta
muhim xossaga ega: aniqlik,
tushunarlilik, kiritish,
chiqarish,
samaradorlik