H(K) = (K mod m) + 1, bu erda k-kalit, mod-bo'linishning qolgan qismini hisoblaydigan operatsiya, m-bo'luvchi. Olingan manzillarning taqsimlanishining bir xilligi ko'p jihatdan tanlangan bo'linuvchiga bog'liq m. juft bo'linuvchilardan qochish kerak, chunki bu holda juft va toq kalitlar mos ravishda juft va toq manzillarga ko'rsatiladi. Agar kalitlar to'plami asosan juft yoki asosan toq kalitlardan iborat bo'lsa, ko'plab to'qnashuvlar yuzaga keladi. Tadqiqotlar shuni ko'rsatadiki, agar m katta tub son bo'lsa, unda to'qnashuvlar soni oz. Bundan tashqari, asosiy bo'lmagan va 20 dan kichik bo'lgan oddiy omillarni o'z ichiga olmaydigan sonning m bo'luvchisi sifatida tanlov yaxshi natijalar beradi.
Xash funktsiyalari kvadratlarning o'rtasi usuli - Kvadratlarning o'rtasi usuli bilan xeshlashda avval kalit o'z-o'zidan ko'paytiriladi. Manzil sifatida natijaning o'rtasidan kerakli manzil uzunligi qancha ko'p raqamlar tanlanadi.
- Yuqoridagi misolni ko'rib chiqing. 234583 kaliti berilsin. Uni kvadratga aylantirganda biz 55029183889 ni olamiz. Agar 100 manzil kerak bo'lsa, unda manzil 91 ga teng bo'ladi, agar 1000 manzil kerak bo'lsa - 918, agar 10000 - 2918 va boshqalar.
- Ba'zan siz 10-sonli manzillarni olishingiz kerak, masalan, 736. Bunday holda siz uchta o'rtacha raqamni olishingiz va 0,736 koeffitsientiga ko'paytirishingiz kerak.
- Masalan: 918*0.736 = 676.
- Haqiqiy ma'lumotlar bilan o'tkazilgan tajribalar shuni ko'rsatdiki, kvadratlarning o'rtasi usuli yaxshi natija beradi, agar kalitlarda ketma-ket ko'p chap yoki o'ng nol bo'lmasa.
- Pıhtılaşma usulida kalit qismlarga bo'linadi, ularning har biri kerakli manzil uzunligiga teng uzunlikka ega. Manzil ushbu qismlarning yig'indisi sifatida shakllanadi. Bunday holda, yuqori toifaga o'tkazish e'tiborga olinmaydi.
- 3415768898 kaliti berilsin. Ikki, uch va to'rt raqamli manzillar uchun biz quyidagi qiymatlarni olamiz
Do'stlaringiz bilan baham: |