12-mavzu. Xeshlash va xesh jadvallar Reja


Download 318.25 Kb.
Pdf ko'rish
bet1/8
Sana02.01.2022
Hajmi318.25 Kb.
#184673
  1   2   3   4   5   6   7   8
Bog'liq
12-mavzu Xesh-1



12-mavzu. Xeshlash va xesh jadvallar 

 

Reja: 

      1      To‘g‘ridan to‘g‘ri adreslash jadvallari.  

 2      Xesh jadvallar.  



 3      Xesh funksiyalar 

Xeshlash 

Yuqorida biz mijoz dasturiga ma'lumotlarni qidirish va olish imkonini 

beradigan bir qator ro'yxat tuzilmalarini qo'lga kiritdik. Har bir bunday strukturada 

Find uslubi ro'yxatni kesib o'tishni amalga oshiradi va kalitga mos keladigan 

ma'lumotlar elementini qidiradi. Shu bilan birga, qidiruv samaradorligi ro'yxat 

tuzilishiga bog'liq. Oddiy ro'yxatga kiritilganda, Find (Oddiy) metodi O (n) 

elementlariga qarash uchun kafolatlanadi, ikkilik qidiruv daraxti va ikkilik qidiruv 

sharoitida esa, O (log2n) samaradorligi yuqori bo'ladi. 

Ideal holda biz O (1) vaqtida ma'lumotlarni tanlashni xohlaymiz. Bunday 

holda, zarur taqqoslashlar soni ma'lumotlar elementlarining soniga bog'liq emas. 

Bir element katalogda indeks sifatida foydalanilganda element (1) vaqtida namuna 

olinadi. Misol uchun, aktsiyadagi menyudan taomlar buxgalteriyani soddalashtirish 

uchun raqamlar bilan soddalashtiriladi. "Aralashtirilgan basturma" turidagi har 

qanday nozikligi ma'lumotlar bazasida faqat 2 raqami bilan ko'rsatilgan. 

Go'shtning egasi faqatgina 2-tugma bilan ro'yxatga kiritilishi mumkin (25-rasm). 

Hashing yoki hashing (inglizcha hashing) - o'ziga xos algoritm bilan 

bajarilgan ma'lum uzunlikdagi tasodifiy uzunlikdagi boshlang'ich registrini 

(chiqish) bit majmuasiga aylantirish. Algoritmni bajaradigan va ishlashni amalga 

oshiradigan vazifaga "xash funktsiyasi" yoki "konvolution funktsiyasi" deb 

nomlanadi. Resurslar ma'lumotlariga kirish majmuasi, "kalit" yoki "xabar" deb 

ataladi. Konvertatsiya (chiqdi) natijalariga "xash", "xash kodi", "xash summasi", 

"xabar xulosasi" deb nomlanadi. 

Misol uchun, biz 128-bitli hash funksiyasining kiritilishini o'n oltinchi sonda 

yoki 1 raqami bilan Leo Tolstoyning romaniga yuborishimiz mumkin. Natijada, 

har ikkala holatda ham biz "s4ca4238a0b923820dcc509a6f75849b" kabi pseudo-

tasodifiy o'n olti raqamli qatorlarni olamiz. 

Agar manba matnini bir karra o'zgartirsa, xash funktsiyasining natijasi 

butunlay o'zgartiriladi. 

Hash funksiyalarining bu xususiyati ularni quyidagi hollarda qo'llashingizga 

imkon beradi: 

assotsiativ majmualar qurishda; 

bir qator ma'lumotlar to'plamida takroriy matnlarni qidirishda; 

ma'lumotlar to'plamlari uchun noyob identifikatorlarni yaratishda; 

ma'lumotlarni saqlash va / yoki uzatish jarayonida yuzaga keladigan xatolarni 

(tasodifiy yoki qasddan kelib chiqadigan) aniqlash uchun ma'lumotlar (signal) 

summalarini hisoblashda; 




parollarni xavfsizlik tizimlarida xesh kodi shaklida saqlashda (xash kodi 

yordamida parolni tiklash uchun foydalaniladigan xash funktsiyasiga teskari 

funksiya kerak); 

elektron imzo yaratishda (amalda, ko'pincha imzolangan xabarning o'zi emas, 

balki uning "xash rasmi"); 

va boshq. 

Umumiy holatda (Dirkichlet printsipiga ko'ra) manba (kirish) ma'lumotlari va 

xash kodi (chiqish ma'lumotlari) o'rtasida hech qanday bog'lovchilik yo'q. Xash 

funktsiyasi (chiqishi) tomonidan qaytarilgan qiymatlar kiritish qatoridan (kirish 

ma'lumotlari) kamroq farq qiladi. Xash funktsiyasi bir nechta turli xil xabarlarni bir 

xil xabarlarga aylantiradigan holatga "to'qnashuv" deb ataladi. Qarama-qarshiliklar 

ehtimolligi xash funktsiyalarining sifatini baholash uchun ishlatiladi. 

Turli xil xususiyatlarga ega ko'plab xash algoritmlari mavjud. Xususiyatlar 

namunalari: 

raqamli quvvat; 

hisoblash murakkabligi; 

kriptografik kuch. 

Bir yoki bir nechta xash funktsiyasini tanlash muammoni hal etishning o'ziga 

xos xususiyati bilan belgilanadi. Xash funktsiyasining eng oddiy namunasi 

ma'lumotlarning "takrorlanishi" - takroriy takrorlash kodi (ingliz CRC, takroriy 

takrorlash kodi). 

Tarix [tahrir | tahrirlash kodi] 

Yanvar 1953da Hans Peter Lun (german: Hans Peter Luhn) (IBMning 

xodimi) "xash kodlash" ni taklif qildi. Donald Knut "Hashing" deb nomlangan 

sistematik g'oyani ilgari surgan birinchi Hans edi. 

1956-yili Arnold Dumey "Kompyuterlar va avtomatlashtirish" asarida eng 

ko'p programmuvchilar buni bilganligi uchun "hashing" g'oyasini birinchi bo'lib 

tasvirlab bergandi. Dumi, "lug'at muammosiga" yechim sifatida "hashing" ni ko'rib 

chiqdi, qolgan raqamni "hash manzil" (1) sifatida ajratishni taklif qildi. 

1957-yilda Wesley Peterson (W. Wesley Peterson) tomonidan yirik 

fayllardagi matnni qidirish bo'yicha "IBM Journal of Research and Development 

Journal" jurnalida chop etilgan maqola chop etildi. Ushbu ish "xashlash" bo'yicha 

birinchi "jiddiy" ish deb hisoblanadi. Maqolada, Wesley, "ochiq manzil" deb 

nomlangan bo'lib, uni o'chirish vaqtida ishlashning pasayishiga ishora qilmoqda. 

Olti yil o'tib, Verner Buchholz (Germaniya Verner Buchholz) asarining nashri 

chop etildi, unda "xash funktsiyalari" ni keng qamrovli o'rganish o'tkazildi. 

Keyingi bir necha yillar davomida "xashing" keng tarqalgan bo'lib ishlatilgan, 

biroq muhim ishlar chop etilmadi. 

1967 yilda "Zamonaviy ma'noda" xirgoyi "kitobida Herbert Hellerman" 

Raqamli hisoblash tizimlari tamoyillari "deb nomlangan [2]. 1968 yilda Robert 

Morris "ACM kommunikatsiyasi" jurnalida "xashlash" haqida keng ma'lumot 

tarqatdi. Ushbu asar ilmiy saralashga "xashing" tushunchasini kiritib, ilgari faqat 

mutaxassislar (jargon) tomonidan qo'llaniladigan "xash" atamasini kuchaytirishga 

qaratilgan "kalit" nashr. 



1990-yillarning boshiga qadar rus tilidagi adabiyotda Andrey Petrovich 

Ershovning asarlari natijasida "tartibga solish" so'zi "xashing" atamasi bilan 

tenglashtirildi va "to'qnashuv" atamasi "to'qnashuvlar" uchun ishlatilgan (A.P. 

Ershov 1956 yildan beri "kelishuv" dan foydalangan) ). 1989 yilda Niklaus 

Wirthning algoritmlari va ma'lumotlar tuzilmalari rus tilidagi nashriga "to'siq" 

atamasi ham ishlatilgan. Shuningdek, bu usulni boshqa ruscha so'z bilan ham 

aytish mumkin: okroshka. Biroq, bu variantlarning hech biri ildiz otgan va rus 

adabiyotida "xashing" atamasi asosan ishlatiladi [3]. 

"Xash funktsiyalarining turlari" [tahrirlash tahrirlash kodi] 

"Yaxshi" xash funktsiyasi ikki xususiyatni qondirishi kerak: 

tezkor hisoblash; 

eng kam "to'qnashuv" soni. 

Biz quyidagilarni bildiramiz: 

{\ displaystyle K} K - "tugmachalar" soni (kirish ma'lumotlari); 

{\ displaystyle h (k)} h (k) - {\ displaystyle M} M boshqa qiymatlari (chiqish 

ma'lumotlari) ko'p bo'lmagan xash funktsiyasi. 

Ya'ni: 

{\ displaystyle \ forall k \ in (0; \, K): h (k) 

(0; \, K): h (k)

"Yomon" xash funktsiyasiga misol sifatida {\ displaystyle M = 1000} M = 

1000 funktsiyasidan foydalanib, {\ displaystyle K} K raqamining yigirma xonali 

raqami ortidan tanlangan o'nta raqamli tabiiy raqam bilan {\ displaystyle K} K 

"Hash kodlari" qiymatlari "000" va "999" orasida bir xil taqsimlanishi kerak, lekin 

"haqiqiy" ma'lumot uchun bu "tugmachalar" chap yoki o'ngdagi "katta" sonli nolga 

ega bo'lmasa [ 3]. 

«Xash funktsiyalarini» bir necha oddiy va ishonchli amalga oshirishni ko'rib 

chiqing. 

"Xash funktsiyalari" bo'limi [tahrirlash tahrirlash kodi] 

1. "Xesh kodi" - mumkin bo'lgan barcha "xesh" larning soniga bo'linadi 

tahrirlash kodi] 

Xash funktsiyasi "xash" ni kirish ma'lumotlarini {\ displaystyle M} M: 

h(k)=k\mod M}  

{\ displaystyle M} M barcha mumkin xostlarning soni (chiqishi). 

Ko'rinib turibdiki, {\ displaystyle M} M uchun funktsiyaning qiymati ham {\ 

displaystyle k} k va odd - odatdagi {\ displaystyle k} k uchun ham bo'ladi. Bundan 

tashqari, "xash kodi" o'ng tomonda joylashgan {\ displaystyle k} k sonining bir 

nechta raqamiga bog'liq bo'lgani uchun, siz {\ displaystyle M} M komponentining 

raqam tizimining darajasini ishlatmasligingiz kerak, bu juda ko'p to'qnashuvlarga 

olib keladi. Amalda odatda oddiy {\ displaystyle M} M ni tanlashadi; Aksariyat 

hollarda bu tanlov juda qoniqarli. 

2. "Xash kodi" - natijada olingan polinomning koeffitsientlari to'plami 

tahrirlash kodi] 

Xash funktsiyasi kirish ma'lumotlarini polinom moduliga bo'linishi mumkin. 

Ushbu usulda {\ displaystyle M} M ikkitadan kuch bo'lishi kerak va ikkilik 

tugmalar ({\ displaystyle K=k_{n-1}k_{n-2}...k_{0}} K=k_{{n-1}}k_{{n-



2}}...k_{{0}})  polinomlar sifatida ifodalanadi, qolgan ma'lumotlarning qolgan 

qismi sifatida olingan polinomning koeffitsientlarining qiymatlari "displaystyle" 

"xash kodi" K} k oldindan tanlangan polinom {\ displaystyle P} P darajasiga {\ 

displaystyle m} m: 

{\ displaystyle K (x) \ mod P (x) = h_ {m-1} x ^ {m-1} + \ nuqtalar + h_ {1} 

x + h_ {0}} 

{\ displaystyle h (x) = h_ {m-1} ... h_ {1} h_ {0}} {\ displaystyle h (x) = h_ 

{m-1} ... h_ {1} h_ {0 }} 

{\ Displaystyle P (x)} P (x) to'g'ri tanlovi bilan deyarli bir xil tugmalar [3] 

o'rtasida to'qnashuv mavjud emas. 




Download 318.25 Kb.

Do'stlaringiz bilan baham:
  1   2   3   4   5   6   7   8




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