Bitiruv malakaviy ishi mavzu: Axborotlashtirish obyektlarni ximoyalashda qo'laniladigan tarmoqlararo ekran tahlili. Bajardi: 715-20 – guruh talabasi Bo'riyev O. Ilmiy rahbar: Raximov Rustam s a m a r q a n d – 2015


Download 1.1 Mb.
Pdf ko'rish
bet17/23
Sana03.12.2023
Hajmi1.1 Mb.
#1800374
1   ...   13   14   15   16   17   18   19   20   ...   23
Bog'liq
BITIRUV MALAKAVIY ISHI

Procedure MakeMBTable( var Bmt : TBMTable; Const p : string); 
Vari:Integer; 
Begin 
For i := 0 to 255 do Bmt[i] := Length(p); 
For i := Length(p) Downto 1 Do 
If Bmt[Byte(p[i])] = Length(p) Then 
Bmt[Byte(p[i])] := Length(p) – i; 
End; 


35 
Boyer-Mur 
algoritmining 
1-modifikasiyasi. 
BM 
algoritmida
foydalaniladigan yomon simvol siljishi kichik bo’lgan alifbo uchun uncha samarali 
emas, lekin alifbo o’rtasi namuna uzunligiga qaraganda katta bo’lsa, bu ASCII 
jadvali bilan bo’lgan holda va matn muharririda oddiy izlashda, u juda foydali. 
Algoritmda faqat uning bittasidan foydalanish juda samarali bo’ladi.
x va y [i, i+m-1]larni mos tushirishga urinishlardan so’ng, siljish uzunligi 
birdan kam emas. Shunday qilib, y[i+m] albatta navbatdagi urinishga kiritiladi
demak, joriy urinishda yomon simvolni siljitish uchun foydalanishi mumkin. 
Yomon simvol funksiyani oxirgi simvol x ni hisobga qabul qilish uchun 
o’zgartiramiz: 
Agar a x da uchrasa, bc[a]=min{j|0

j

mva x [m-1-j]=a} bc[ a ] = qarama 
– qarshi holda. 
Matn va namunani taqqoslash ixtiyoriy tartibda amalga oshirishi mumkin.
Boyer-Mur algoritmining 2-modifikasiyasi. Biz oldingi urinishda, namuna 
suffikssi bilan mos tushgan matnning sigmentini esda saqlab qolamiz(faqat agar 
yaxshi suffiks siljishi ro’y bersa). 
function bmsearch( startpos : integer; const s, p : string; 
const bmt : tbmtable) : integer;var pos, lp, i : integer; 
begin lp := length(p); 
pos := startpos + lp –1; 
while pos < length(s) do 
if p[lp] <> s[pos] then pos := pos + bmt[s[pos]] 
else for i := lp - 1 downto 1 do 
if p[i] <> s[pos – lp + i] then 
begin inc(pos); break; 
end else if i=1 then begin 
result := pos – lp + 1; 
exit; 
end;
result := 0;
end;
 


36 
Bu bizga ikki afzallikni beradi: 
1. Bu sigmentdan sakrab o’tish imkoniyati: 
2. “Turbo- siljish ”ni qo’llash imkoniyati: 
„Turbo–siljish“ agar biz matn bilan tushuvchi namuna suffiksi oldin eslab 
qolinganidan qisqaroq bo’lsa ro’y berishi mumkin. 
u-esda qolingan segment, v-joriy urinishda mos tushgan shunday suffikski,
uzv – x ning suffiksi. U hoda av –x ning suffiks, ikkita a va b simvol matnda p 
masofada uchraydi va x ning |uzv| uzunlikdagi suffiksi p uzunlikdagi davrga ega. 
Demak, a va b simvollarning matnda namoyon bo’lishini yopa olmaydi. Eng 
kichik mumkin bo’lgan siljish |u|-|v| (uni “turbo –siljish” deb ataymiz ). 
Qism satrni chekli avtomat yordamida izlash. 


Download 1.1 Mb.

Do'stlaringiz bilan baham:
1   ...   13   14   15   16   17   18   19   20   ...   23




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling