XESH JADVALLAR VA XESHLASH ALGORITMLARI Xeshlash (Hashing) Xeshlash — bu har qanday uzunlikdagi ma'lumotni ma'lum bir uzunlikdagi o‘ziga xos qiymatga (xesh-kodga) o‘zgartirish jarayoni. Xeshlash odatda ma’lumotlarni tezroq qidirish, shifrlash, tekshirish yoki ma’lumotlarni unikal tarzda tasniflash uchun ishlatiladi. Xeshlash - bu kirish ma’lumotlari massivini determenistik algoritm asosida chekli uzunlikdagi chiqish satriga aylantirishdir. Boshqacha qilib aytganda, xeshlash - bu shunday jarayonki, unda kirish massividagi ma’lumotlar maxsus algoritm asosida bitlar ketmaketligiga almashtiriladi. XESH TUSHUNCHASI. Hesh ingliz tilidagi “HASH” so’zidan olingan bo’lib, CHALKASH degan ma’noni bildiradi. Hesh funksiya bu-kiruvchi ma’lumotlarning ixtiyoriy uzunlikdagi massivini belgilangan aniq uzunlikdagi bitlar qatoriga bir algoritm orqali akslantiruvchi bir tomonlama funksiyadir. Xeshlashdan qayerda foydalaniladi? •Ma’lumotlarni indekslash va qidirish – Xeshlash katta hajmdagi ma’lumotlarni tezroq qidirishga yordam beradi. •Parollarni saqlash – Foydalanuvchilarning parollari xesh holatida saqlanadi, bu ularni xavfsiz qiladi. •Kriptografiya – Xeshlash shifrlash algoritmlarida muhim rol o‘ynaydi. •Raqamli imzolar va tekshirish – Ma’lumotlar o‘zgartirilmaganligini tekshirish uchun ishlatiladi. Xesh Funksiya (Hash Function) Xesh funksiya — bu berilgan kirish ma’lumotini (odatda matn yoki raqam) ma’lum bir uzunlikdagi xesh qiymatiga (hash value) aylantiruvchi matematik algoritmdir. Xesh funksiya quyidagi xususiyatlarga ega bo‘lishi kerak: 1.Tez ishlashi – berilgan ma’lumot uchun xesh qiymatini tez hisoblab berishi kerak. 2.Deterministik bo‘lishi – bir xil kirish qiymati doimo bir xil xesh qiymatini berishi kerak. 3.Xesh qiymatining bir xilligi – har qanday kichik o‘zgarish xesh qiymatini butkul o‘zgartirishi kerak. 4.Orqaga qaytarib bo‘lmasligi – xesh qiymatidan asl ma’lumotni qaytarib olish qiyin yoki imkonsiz bo‘lishi kerak. 5.Kolliziyaga (hash collision) qarshi turishi – turli xil ma’lumotlar uchun bir xil xesh qiymati hosil bo‘lmasligi kerak. XESH JADVALLAR Tartibli ro’yxat Tartibsiz ro’yxat Sumka 100000 Qalam 10000 Kitob 60000 Daftar 5000 Ruchka 15000 Sumka 100000 Qalam 10000 Ruchka 15000 Daftar 5000 Kitob 60000 Shu yerdan mahsulotni nomini qidirsak qancha vaqt keadi? Ya’ni binar qidiruv uchun O (log2N) logorifm 2 asosga ko’ra N Linary Search uchun esa O (N) Agar qidiruvni kichikroq ma’lumotlar tuzilmasida qidirayotgan bo’lsangiz bu muammo yaratmaydi. Ammo minglab yoki millionlab elementdan iborat ma’lumotlar tuzilmasida ish olib borayotgan bo’lsangizchi? Tartibsiz ro’yxat Qalam 10000 Daftar 5000 Sumka 100000 Ruchka 15000 Kitob 60000 Tasavvur qiling siz ushbu ro’yxatni yodlab olgan bo’lsangiz bunday ro’yxat qidiruvni amalga oshirish endi O(1) ga teng bo’ladi. Ya’ni siz bir deganda istalgan mahsulotning narxini aytib bera olasiz • Hesh jadvallari yordamida kompyuter uchun yodlab olish dasturlarini ishlab chiqishimiz mumkin bo’ladi. Hesh funksiya matnni takrorlanmas noyob songa o’tkazi beradi HASH 7 “kitob” Hesh funksiyalarning turi ko’pligi uni tashkil qilishda qiyinchilikni keltirib chiqarmaydi Yaxshi hesh funksiyaning belgilari: -bir xil matn uchun bir xil son qaytarish kerak; -har xil matn uchun har xil son qaytarishi kerak; HASH “kitob” 7 Hesh funksiya sizga kerakli oraliqdagi sonlarni qaytaradi Ma’lumotlarni hesh jadvalda saqlash ARRAY Tartibli ro’yxat Sumka 100000 Kitob 60000 Ruchka 15000 Qalam 10000 “Sumka” “Kitob” “Ruchka” “Qalam” Daftar HASH HASH HASH HASH 0 1 HASH 100000 1 60000 2 15000 3 10000 4 5000 2 3 5000 “Daftar” 0 4 ARRAY Tartibli ro’yxat Sumka 100000 Kitob 60000 “Sumka” “Kitob” Ruchka 15000 Qalam 10000 Daftar 5000 HASH HASH 0 0 100000 1 60000 2 15000 3 10000 4 5000 0 ARRAY 0 SUMKA 1 60000 2 15000 3 10000 4 5000 100000 * KITOB 60000 * Hesh jadvallar qay hollarda ko’p foydalaniladi? Google maps va shunga o’xshash dasturlarda Online savdo tarmoqlarida Ijtimoiy tarmoqlar yoki shunga o’xshash dasturlarda