Rabin-Karp – g‘oyasi
Satrlarning o'zi emas, balki satr xesh
qiymatlarini solishtiradi.
Samaradorlik uchun matndagi keyingi
pozitsiyaning xesh qiymati joriy
pozitsiyaning xesh qiymati orqali osongina
hisoblab chiqiladi..
Rabin-Karp algoritmi qanday
ishlaydi
Ikkala T va P massivlardagi belgilar radix- S
yozuvidagi raqamlar bo'lsin. (S = (0,1,...,9)
P dagi belgilarning qiymati p bo'lsin
Hisoblarni tezlashtirish uchun kompyuter so'ziga
mos keladigan q tub sonini tanlang.
Hisoblash (p mod q)
P mod q qiymati biz Tdagi P naqshining barcha
mosliklarini topish uchun foydalanadigan
narsadir.
Rabin-Karp algoritmi qanday
ishlaydi
Hisoblash (T[s+1, .., s+m] mod q) for s = 0
.. n-m
P ga nisbatan faqat T dagi bir xil (mod q)
qiymatga ega bo'lgan ketma-ketliklarni
sinab ko'ring
(T[s+1, .., s+m] mod q) yuqori tartibli
raqamni ayirish, siljitish, past tartibli bitni
qo‘shish, barchasi q arifmetika modulida
bosqichma-bosqich hisoblanishi mumkin.
Rabin-Karp algoritmi uchun
misol
Berilgan T = 31415926535 va P = 26
Biz q = 11 deb tanladik
P mod q = 26 mod 11 = 4
1
3 1
4 9
5 6
2 3
5 5
1
3 1
4 9
5 6
2 3
5 5
14 mod 11 = 3 natijasi 4 ga teng emas
31 mod 11 = 9 natijasi 4 ga teng emas
1
3 1
4 9
5 6
2 3
5 5
41 mod 11 = 8 natijasi 4 ga teng emas
Rabin-Karp misol davomi
1
3 1
4 9
5 6
2 3
5 5
15 mod 11 = 4 ga teng 4 -> noto’g’ri moslik
1
3 1
4 9
5 6
2 3
5 5
59 mod 11 = 4 ga teng4 -> noto’g’ri moslik
1
3 1
4 9
5 6
2 3
5 5
92 mod 11 = 4 ga teng 4 -> noto’g’ri moslik
1
3 1
4 9
5 6
2 3
5 5
26 mod 11 = 4 ga teng 4 -> moslik to’g’ri keladi!!
1
3 1
4 9
5 6
2 3
5 5
65 mod 11 = 10 natijasi 4 ga teng emas
Rabin-Karp misol davomi
1
3 1
4 9
5 6
2 3
5 5
53 mod 11 = 9 natijasi 4 ga teng emas
1
3 1
4 9
5 6
2 3
5 5
35 mod 11 = 2 nonatijasi 4 ga teng emas
Ko'rib turganimizdek, natija topilganda, natija
haqiqatan ham topilganligiga ishonch hosil qilish
uchun qo'shimcha sinovlar o'tkaziladi.
8
Tahlil
Algoritmning eng yomon senariyda
ishlashi yomon. Lekin u yaxshi qisqa vaqt
ichida samaradorlikga ega.
O(mn) eng yomon holatda
O(n) agar biz optimistikroq bo'lsak …
Nima uchun?
Biz qancha jarayonlarni kutamiz?
9
Bir nechta naqsh mosligi
T=T1…Tn matni va S alifbosi ustidagi P1…Pk
naqshlar to‘plami berilgan bo‘lsa, har bir
naqsh uzunligi m bo‘lsa, T dagi naqshlardan
biriga mos keladigan barcha indekslarni
toping.
Har bir naqsh uchun KMP-ni alohida ishga
tushirishimiz mumkin.
O(kn)
Biz yaxshiroq qila olamizmi?
10
Bloom filtrlari
Biz O (k) o'lchamdagi xesh jadvalini
(naqshlar soni) ushlab turamiz
Matndagi har bir ofset uchun biz uning
xesh qiymati har qanday naqshga mos
kelishini tekshiramiz.