INTERPOLATSION QIDIRUV
“INTERPOLATSION QIDIRUV ” MAVZUSIDA TAYYORLAGAN Mundarija I Kirish ..........................................................................................................3 II Asosiy qisim ..............................................................................................4 2.1 Interpolatsion qidiruv tushunchasi . .............................................4 2.2 C++ da dastur ko`rinishi ..............................................................14 2.3 Ikkilik qidiruvda joylashishni aniqlash ...................................18 III Xulosa ....................................................................................................27 IV Foydalanilgan adabiyotlar ...................................................................28 KURS ISHI
Kirish Interpolatsion qidiruvning mazmuni shundan iboratki bizga malum bir tartiblangan ma’lumotlar berilgan bo‘lsin. Misol uchun (massiv yoki kitob). Endi men shu malumotlar orasidan bitta qiymat yoki sozni izlab topishim kerak. Buni men interpolatsion qidiruv orqali amalga oshiraman. Ammo ikkilik qidiruvdan farqli o'laroq, interpolyatsiya qidiruvi ketma- ketlikni ikkita teng qismga ajratmaydi, balki elementning talab qilinadigan va joriy qiymati o'rtasidagi masofaga e'tibor qaratgan holda kalitning (kerakli element) taxminiy joylashishini hisoblab chiqadi. Lug`at kitobda so`zlar alfavit (alifbo) tarzida tartiblangan bo`ladi, yani kitobning boshidagi so`zlar “a” harfidan boshlansa, oxiridagi so`zlar “z” harfi bilan tugaydi. Bizga kerakli so`z “olma” bo`lsin. Olma so`zini kitobning boshidan izlamaymiz, chunki “o” harfi alfavitning o`rtasida joylashgani uchun, olma so`zini topish uchun kitobning o`rtasini ochamiz va o harfidan boshlangan so`zlar orasidan qidirib topamiz. Bunda olma so`zini kitobning boshidan ohirigacha izlamaymiz balki o harfi qatnashgan so`zlar orasidan oson topamiz. Bundan ko`rinib turibdiki boshq sohalarda ham interpolatsion qidiruv dan foydalanami. Interpolatsion so`zining ma’nosini tushinib oldik. Endi bu interpolatsion qidiruvni algaritim va malumotlar strukturasida qo`llanishini ko`rib chiqamiz. 2
Interpolatsion qidiruv tushunchasi Interpolyatsiya – bu ma'lum qiymatlarning mavjud diskret to'plamidan miqdorning oraliq qiymatlarini topishdir. Interpolatsiya qidiruvi faqat tartiblangan massivlar bilan ishlaydi. U binarga o'xshaydi, ya'ni har bir qadamda ma'lum bir qidiruv maydoni hisoblab chiqiladi, algoritm bajarilganda u torayadi. Ammo ikkilik qidiruvdan farqli o'laroq, interpolyatsiya qidiruvi ketma- ketlikni ikkita teng qismga ajratmaydi, balki elementning talab qilinadigan va joriy qiymati o'rtasidagi masofaga e'tibor qaratgan holda kalitning (kerakli elementini) taxminiy joylashishini hisoblab chiqadi. Algoritm g'oyasi telefon raqamini qidirishni eslatadi: abonent nomlari ro'yxati tartiblangan, shuning uchun kerakli telefon raqamini topish qiyin bo'lmaydi, chunki, masalan, biz "U" harfi bilan boshlanadigan familiyasi bo'lgan obunachini qidirayotgan bo'lsak, unda qidirish uchun ma'lumotnomaning oxiriga o'tish maqsadga muvofiq bo'ladi. Hisoblangan qiymat kattaroq bo'lsa, qidiruv maydonining o'ng chegarasi, agar u kamroq bo'lsa, chap tomonga siljiydi. Shunday qilib, ( ikkilik qidiruvda bo'lgani kabi ) massivning bir qismini bo'laklab olib, massivning kerakli elementiga bosqichma-bosqich erishiladi yoki qidiruv maydonining chegaralari shunday qiymatlarga toraytiriladi, ular ichida qidiradigan element yo'q bo‘lsa chegaralar orasidagi masofada massivdagi element topilmaganligini aytadi. Ko'rib turganingizdek, tsiklning o'zi unchalik murakkab emas. Interpolatsiya qidiruvi ikkilik qidiruvga biroz o'xshaydi . Faqat unda qidiruv maydoni ikkita teng qismga bo'linmaydi. Buning o'rniga, yangi qidiruv maydoni joriy element qiymati va qidiruv kaliti orasidagi masofaga qarab baholanadi. Interpolatsiyali qidiruv ikkilik qidiruvga qaraganda tezroq. Interpolyatsiya va ikkilik qidiruv o'rtasidagi yana bir muhim farq bu faqat raqamli qiymatlarni emas, balki matnli ma'lumotlarni qidirish qobiliyatidir. Interpolatsiya qidiruvi odatda ikkilik qidiruvdan samaradorlik jihatidan ustun bo'lib, o'rtacha log (log (N)) operatsiyalarini talab qiladi. Shunday qilib, uning 3
ishlash vaqti O (log (log (N))). Ammo, masalan, ketma-ketlik eksponent ravishda oshsa, tezlik O (N) ga oshadi, bu erda N (oldingi holatda bo'lgani kabi) ro'yxatdagi elementlarning umumiy soni. Algoritm elementlari bir-biriga nisbatan teng taqsimlangan ketma-ketlikda eng yuqori ko'rsatkichni ko'rsatadi. Shunday qilib, tsiklning o'zi oddiygina massivning maydonini formula bo'yicha hisoblab chiqadi, bu erda kerakli bo'lgan C ++ da o'xshashliklarni tanlab, ushbu interpolyatsiya printsipidan foydaladi. Interpolatsiya qidiruvi - kalitlarga tayinlangan raqamli qiymatlar (kalit qiymatlari) bo'yicha tartiblangan massivdagi kalitni topish uchun ishlatiladigan algoritmi. U birinchi marta 1957 yilda V. V. Peterson tomonidan tasvirlangan. Interpolatsiya qidiruvi odamlarning telefon kitobidan ismni izlash usuliga o'xshaydi ( kitobdagi yozuvlar buyurtma qilingan kalitning qiymati): har bir qadamda algoritm qolgan qidiruv maydonining qayerda joylashganligini hisoblab chiqadi. Qidiruv maydoni chegaralaridagi asosiy qiymatlarga va kerakli kalitning qiymatiga, odatda chiziqli interpolyatsiyaga asoslangan bo'lishi mumkin. Ushbu taxminiy pozitsiyada topilgan kalit qiymati keyin kerakli kalit qiymati bilan taqqoslanadi. Agar u teng bo'lmasa, taqqoslashga qarab, qolgan qidiruv maydoni taxminiy pozitsiyadan oldin yoki keyin bir qismga qisqartiriladi. Ushbu usul faqat asosiy qiymatlar orasidagi farqlar hajmini hisoblash to‘g‘ri bo'lsa ishlaydi. Taqqoslash uchun, ikkilik qidiruv har doim qolgan qidiruv maydonining o'rtasini tanlaydi, bir yoki boshqa yarmini tashlab, taxmin qilingan holatda topilgan kalit va kerakli kalit o'rtasidagi taqqoslashga qarab natija hosil qilinadi. O'rtacha interpolyatsiya qidiruvi taxminan (log (n)) taqqoslashlarini amalga oshiradi (agar ob'ektlar teng taqsimlangan bo'lsa), bu erda n - izlanadigan elementlar soni. Eng yomon holatda (masalan, tugmachalarning raqamli qiymatlari eksponent ravishda oshganida), O (n) gacha taqqoslash mumkin. Interpolyatsiya bilan ketma-ket qidiruvda siz qidirayotgan element yaqinidagi elementni topish uchun interpolyatsiya qo'llaniladi, so'ngra aniq elementni topish uchun chiziqli qidiruvdan foydalaniladi. 4
Foydalanish paytida katta ma'lumotlar n uchun interpolatsion qidiruv algoritm ishlash O (n); ammo interpolatsiya uchun ishlatiladigan chiziqli shkala bo'yicha ma'lumotlar teng taqsimlangan deb faraz qilsak, unumdorlik O (log log n) sifatida ko'rsatilishi mumkin. Interpolyatsiyani qidirishning amaliy samaradorligiga qarab sonining kamayishi har bir takrorlash uchun zarur bo'lgan murakkabroq hisob-kitoblardan ustun bo'ladimi-yo'qligiga bog'liq. Bu diskdagi katta tartiblangan fayldagi yozuvni topish uchun foydali bo'lishi mumkin. B- daraxtlar kabi indeks tuzilmalari diskka kirishni ham kamaytiradi va ko'pincha diskdagi ma'lumotlarni qisman indekslash uchun ishlatiladi, chunki ular ko'p turdagi ma'lumotlarni indekslashi va onlayn ravishda yangilanishi mumkin . Biroq, diskda ma'lum tartiblangan, lekin indekslanmagan ma'lumotlar to'plamini qidirishga majbur bo'lganda, interpolyatsiya qidiruvi foydali bo'lishi mumkin. Turli xil ma'lumotlar to'plamlariga moslashish Agar ma'lumotlar to'plami uchun tartiblash kalitlari bir xil intervalda raqamlar bo'lsa, chiziqli interpolyatsiyani amalga oshirish oson va kerakli qiymatga juda yaqin indeks topadi. Boshqa tomondan, nom bo'yicha tartiblangan telefon kitobi uchun to'g'ridan- to'g'ri interpolatsiyani qidirish usuli qo'llanilmaydi. Biroq, xuddi shu yuqori darajadagi printsiplar hali ham qo'llanilishi mumkin: siz nomlardagi harflarning nisbiy chastotasidan foydalanib, telefon kitobidagi ismning o'rnini taxmin qilishingiz va uni nazorat nuqtasi sifatida ishlatishingiz mumkin. Bir xil kalit qiymatlarga ega seriyalar mavjud bo'lsa, ba'zi interpolatsiya qidiruv ilovalari kutilganidek ishlamasligi mumkin. Interpolatsiya qidiruvining eng oddiy amalga oshirilishi bunday ishga tushirishning birinchi (yoki oxirgi) elementini tanlashi shart emas. Telefon nomlarni qandaydir raqamga aylantirish aniq taqsimlangan raqamlarni keltirib chiqarmaydi (ismlarni saralash va ularni nom № 1, ism № 2 va hokazo deb atash kabi katta harakatlar bundan mustasno) va bundan tashqari, ba'zi 5