logo

INTERPOLATSION QIDIRUV

Загружено в:

08.08.2023

Скачано:

0

Размер:

397 KB
“ALGORITM VA MA’LUMOTLAR STRUKTURASI” FANIDAN
“INTERPOLATSION QIDIRUV   ” MAVZUSIDA TAYYORLAGAN
KURS ISHI 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
2 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. 
3 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.
4 Interpolatsiya qidiruvi odatda ikkilik qidiruvdan samaradorlik jihatidan ustun
bo'lib,   o'rtacha   log   (log   (N))   operatsiyalarini   talab   qiladi.   Shunday   qilib,   uning
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.
5 Interpolyatsiya bilan ketma-ket qidiruvda siz qidirayotgan element yaqinidagi
elementni   topish   uchun   interpolyatsiya   qo'llaniladi,   so'ngra   aniq   elementni   topish
uchun chiziqli qidiruvdan foydalaniladi.
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.
6 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
nomlar   ham   ma'lum.   Xuddi   shunday   lug'atlarda,   ba'zi   harflar   bilan   boshlangan
so'zlar   boshqalarga   qaraganda   ko'proq.   Ba'zi   noshirlar   har   bir   harf   uchun
markerlarni   ko'rsatish   uchun   chekka   izohlar   tayyorlashga   yoki   hatto   sahifa
chetlarini kesib tashlashga harakat qilishadi, shunda segmentlangan interpolyatsiya
darhol amalga oshirilishi mumkin.
Amalga oshirish misoli
Har   bir   qadamda   u   elementning   o'rnini   hisoblab   chiqadi   va   keyin,   ikkilik
qidiruvda   bo'lgani   kabi,   kerakli   qiymatni   o'z   ichiga   olgan   kichikroq   intervalni
aniqlash   uchun   yuqori   yoki   pastki   chegaralarni   siljitadi.   Ikkilik   qidiruvdan   farqli
o'laroq,   oraliq   o'lchamining   har   bir   bosqichda   ikki   baravar   kamayishini
kafolatlanadi. 
E tibor   bering,   indeksning   o rtasida   joylashgan   ro yxatni   tekshirishda,   siklniʼ ʻ ʻ
boshqarish   sabablariga   ko ra,   ushbu   kod   yuqori   yoki   pastni   o rta   emas,   balki	
ʻ ʻ
keyingi   iteratsiya   davomida   joylashuvi   tekshiriladigan   qo shni   indeks   sifatida	
ʻ
o rnatadi.   Disk   kabi   masofaviy   xotiraga   qo'shimcha   interpolatsiyani   hisoblash	
ʻ
mumkin emas.
  Shunday qilib, u yigirmatadan ko'p bo'lmagan taqqoslashlar bilan millionlab
elementlardan   iborat   massivni   qidiradi   (massiv   elementlari   saqlanadigan   operativ
xotiraga kiradi).
Interpolatsiya   qadim   zamonlardan   beri   ma'lum   bo'lgan.   Biroq,   bu   hodisa
o'zining rivojlanishi uchun o'tmishning eng ko'zga ko'ringan matematiklari Nyuton,
Leybnits   va   Gregori   hissa   qo‘shgan.   Aynan   ular   bu   kontseptsiyani   o'sha   paytda
mavjud   bo'lgan   yanada   ilg'or   matematik   usullardan   foydalanib   ishlab   chiqdilar.
Undan   oldin,   albatta,   interpolatsiya   hisob-kitoblarda   qo'llanilgan   va   ishlatilgan,
lekin   ular   buni   mutlaqo   noaniq   yo'llar   bilan   bajarishgan,   haqiqatga   ozmi-ko'pmi
yaqin model yaratish uchun katta hajmdagi ma'lumotlar talab qilingan.
7 Bugun   biz   hatto   interpolatsiya   usullaridan   qaysi   biri   ko'proq   mos   kelishini
tanlashimiz   mumkin.   Hamma   narsa   ma'lum   bir   sohada,   aniq   nuqtalar   bilan
chegaralangan,   funktsiyaning   xatti-harakatini   oldindan   aniq   biladigan   kompyuter
tiliga tarjima qilingan.
Yuqorida   aytganimizdek,   bu   grafikni   nuqta   bo'yicha   chizishga   imkon
beradigan usullarning umumiy nomi. Maktabda bu asosan jadval tuzish, grafikdagi
nuqtalarni   aniqlash   va   ularni   bog'laydigan   chiziqlarni   chizish   orqali   amalga
oshiriladi.   Oxirgi   harakat,   biz   bilgan   grafik   turini,   tekshirilayotgan   funktsiyaning
boshqalarga o'xshashligini hisobga olgan holda amalga oshiriladi.
Biroq,   nuqta   bo'yicha   grafik   tuzish   vazifasini   bajarishning   boshqa,   yanada
murakkab   va   aniq   usullari   mavjud.   Shunday   qilib,   interpolatsiya   -   bu   ma'lum   bir
sohadagi funktsiyaning xatti-harakatining ma'lum nuqtalari bilan chegaralangan.
Xuddi   shu   maydon   bilan   bog'liq   o'xshash   tushuncha   mavjud   -
ekstrapolyatsiya.   Bu,   shuningdek,   funktsiya   grafigini   bashorat   qilish,   lekin
grafikning   ma'lum   nuqtalaridan   tashqarida.   Ushbu   usul   yordamida   ma'lum   oraliq
uchun funktsiyaning xatti-harakati asosida bashorat qilinadi va keyin bu funktsiya
noma'lum   interval   uchun   qo'llaniladi.   Bu   usul   amaliy   qo'llash   uchun   juda   qulay
masalan,   iqtisodiyotda   bozordagi   ko'tarilish   va   pasayishlarni   bashorat   qilish   va
mamlakatdagi demografik vaziyatni bashorat qilish uchun faol qo'llaniladi.
Lekin biz asosiy  mavzudan uzoqlashdik. Keyingi  bo'limda biz interpolatsiya
nima   ekanligini   va   bu   operatsiyani   bajarish   uchun   qanday   formulalardan
foydalanish mumkinligini aniqlaymiz.
Interpolatsiya turlari
Eng oddiy shakl - eng yaqin qo'shni interpolyatsiyasi. Ushbu usul yordamida
biz to'rtburchaklarning juda qo'pol grafigini olamiz. Agar siz hech bo'lmaganda bir
marta   integralning   geometrik   ma'nosi   haqidagi   tushuntirishni   grafikda   ko'rgan
bo'lsangiz, unda siz qanday grafik shakl haqida gapirayotganimizni tushunasiz.
8 Bundan tashqari, boshqa interpolatsiya usullari ham mavjud. Eng mashhurlari
va   mashhurlari   polinomlar   bilan   bog'liq.   Ular   aniqroq   va   juda   kam   qiymatlar
to'plamiga ega bo'lgan funksiyaning harakatini bashorat qilishga imkon beradi. Biz
ko'rib   chiqadigan   birinchi   interpolatsiya   usuli   polinomlar   orqali   chiziqli
interpolatsiya   bo'ladi.   Bu   ushbu   toifadagi   eng   oson   usul   va   har   biringiz   uni
maktabda ishlatganingiz aniq. Uning mohiyati ma'lum nuqtalar orasidagi chiziqlar
qurilishida   yotadi.   Ma'lumki,   tekislikning   ikkita   nuqtasidan   bitta   to'g'ri   chiziq
o'tadi, uning tenglamasini shu nuqtalarning koordinatalari asosida topish mumkin.
Ushbu   chiziqlarni   qurish   orqali   biz   hech   bo'lmaganda,   lekin   funktsiyalarning
taxminiy   qiymatlarini   aks   ettiradigan   va   umuman   olganda   haqiqatga   to'g'ri
keladigan   singan   grafikni   olamiz.   Chiziqli   interpolyatsiya   shu   tarzda   amalga
oshiriladi.
Murakkab interpolatsiya turlari
Interpolatsiyaning   yanada   qiziqarli,   ammo   ayni   paytda   murakkabroq   usuli
mavjud.  Uni   frantsuz   matematigi   Jozef   Lui   Lagranj   ixtiro  qilgan.   Shuning   uchun
ham   bu   usul   bilan   interpolatsiyani   hisoblash   uning   nomi   bilan   ataladi:   Lagranj
usuli bilan interpolatsiya agar oldingi paragrafda ko'rsatilgan usul hisoblash uchun
faqat   chiziqli   funktsiyadan   foydalansa,   Lagrange   kengayishi   ham   yuqori   darajali
polinomlardan   foydalanishni   o'z   ichiga   oladi.   Ammo   har   xil   funktsiyalar   uchun
interpolatsiya formulalarini topish oson emas. Va qancha ko'p nuqta ma'lum bo'lsa,
interpolatsiya   formulasi   shunchalik   aniq   bo'ladi.   Ammo   boshqa   ko'plab   usullar
mavjud.
Bundan   ham   mukammal   va   haqiqatga   yaqin   hisoblash   usuli   mavjud.   Unda
qo'llaniladigan   interpolatsiya   formulasi   polinomlar   to'plamidir,   ularning   har
birining   qo'llanilishi   funktsiya   bo'limiga   bog'liq.   Bu   usul   spline   funktsiyasi   deb
ataladi.   Bundan   tashqari,   ikkita   o'zgaruvchining   funktsiyalarini   interpolyatsiya
qilish  kabi  usullar   mavjud. Faqat   ikkita usul  mavjud.  Ular   orasida   bilaynear  yoki
9 ikki   tomonlama   interpolatsiya   bor.   Bu   usul   sizga   uch   o'lchamli   fazodagi
nuqtalardan   osongina   grafik   chizish   imkonini   beradi.   Biz   boshqa   usullarga
tegmaymiz.   Umuman   olganda   interpolyatsiya   -   bu   grafiklarni   chizishning   barcha
usullarining   universal   nomi,   ammo   bu   harakatni   amalga   oshirish   usullarining
xilma-xilligi   ularni   ushbu   harakatga   bo'ysunadigan   funktsiya   turiga   qarab
guruhlarga   bo'linishga   majbur   qiladi.   Ya’ni,   biz   yuqorida   ko'rib   chiqqan
interpolatsiya to'g'ridan -to'g'ri usullarni nazarda tutadi. Shuningdek, teskari emas,
balki   teskari   funktsiyani   (ya'ni,   y   dan   x)   hisoblash   imkonini   beruvchi   teskari
interpolatsiya   ham   mavjud.   Biz   oxirgi   variantlarni   ko'rib   chiqmaymiz,   chunki   bu
juda qiyin va yaxshi matematik bilimlar bazasini talab qiladi.
Keling,   eng   muhim   bo'limlardan   biriga   o'taylik.   Undan   biz   muhokama
qilayotgan usullar to'plami hayotda qanday va qaerda qo'llanilishini bilib olamiz.
Interpolatsiya usullari
 Interpolatsiya muammosi bayoni
Ko'pincha   ph   (X)   funktsiyasini   aniqlash   uchun   interpolyatsiya   masalasining
bayonoti deb ataladigan bayonot ishlatiladi.
Interpolatsiya   muammosining   bu   klassik   formulasida   taxminiy   analitik
funktsiyani   aniqlash   kerak   bo'ladi   φ   (X),   uning   qiymatlari   tugun   nuqtalarida
Xi.   qiymatlarga mos keladi   Asl jadvalning Y (X i), ya'ni. shartlar
 (X i) = Y i (i = 0,1,2, ..., n)ϕ
Shunday   qilib   tuzilgan   taxminiy   funksiya   φ   (X)   argument   qiymatlari   [X   0;
Xn],   jadval   bilan   aniqlangan.   X   argumentining   qiymatlarini   belgilashda,   tegishli
emas   bu   intervalda   interpolatsiya   muammosi   ekstrapolyatsiya   muammosiga
aylanadi.   Bunday   hollarda   aniqlik   ph   (X)   funktsiyasi   qiymatlarini   hisoblashda
olingan   qiymatlar   X   argumenti   qiymatining   X   0   dan   masofasiga   bog'liq,   agar   X
bo'lsa Х 0 , Х n , Х >X n.
Matematik   modellashtirishda   interpolyatsiya   funktsiyasidan   foydalanib,
tekshirilayotgan   funksiyaning   pastki   oraliq   oraliq   nuqtalarida   taxminiy
10 qiymatlarini   hisoblash   mumkin   [X   i;   X   i   +   1].   Ushbu   protsedura   deyiladi   siqish
jadvali.
Interpolyatsiya   algoritmi   ph   (X)   funksiyasining   qiymatlarini   hisoblash   usuli
bilan   aniqlanadi.   Interpolyatsiya   funksiyasining   eng   oddiy   va   eng   aniq   amalga
oshirilishi  tekshirilayotgan  Y  (X)  funksiyani  [X i   oraliqda;   X i   + 1]  Y  i, Y  i  +  1
nuqtalarni   bog'laydigan   to'g'ri   chiziqli   segment   orqali.   Bu   usul   chiziqli
interpolatsiya usuli deyiladi.
  Chiziqli interpolyatsiya
Chiziqli   interpolatsiya   bilan   X   i   va   X   i   +   1   tugunlari   orasidagi   X   nuqtadagi
funktsiyaning qiymati jadvalning ikkita qo'shni nuqtasini bog'laydigan to'g'ri chiziq
formulasi bilan aniqlanadi.
Y (X) = Y (Xi) + Y (Xi + 1) - Y (Xi)
(X - Xi) (i = 0,1,2, ..., n),
X i + 1− X i
Shaklda.   1da   ma'lum   bir   miqdordagi   Y   (X)   o'lchovlari   natijasida   olingan
jadval misoli ko'rsatilgan. Manba jadvalining qatorlari to'ldirish bilan ta'kidlangan.
Jadvalning o'ng tomonida bu jadvalga mos keladigan tarqoqlik chizig'i joylashgan.
Jadvalni siqish formula bo'yicha hisoblash tufayli amalga oshiriladi.
(3)   pastki   intervallarning   o'rta   nuqtalariga   to'g'ri   keladigan   X   nuqtalaridagi
taxminiy funktsiyaning qiymatlari (i = 0, 1, 2,…, n).
 Kondensatsiyalangan Y (X) funktsiya jadvali va tegishli diagramma
Grafikni   ko'rib   chiqayotganda.   1   dan   ko'rinib   turibdiki,   jadvalni   chiziqli
interpolyatsiya   usuli   bilan   siqish   natijasida   olingan   nuqtalar   dastlabki   jadval
nuqtalarini   bog'laydigan   chiziq   segmentlarida   yotadi.   Chiziqli
aniqlikinterpolatsiya,   asosan,   interpolatsiyalangan   funktsiyaga   va   X   i   ,   X   i   +   1
jadval tugunlari orasidagi masofaga bog'liq.
Shubhasiz,   agar   funktsiya   silliq   bo'lsa,   tugunlar   orasidagi   masofa   nisbatan
katta bo'lsa ham, nuqtalarni chiziq segmentlari bilan bog'lash orqali tuzilgan grafik
11 Y   (X)   funktsiyasining   tabiatini   etarlicha   aniq   baholashga   imkon   beradi.   Agar
funktsiya  etarlicha tez o'zgarsa  va tugunlar  orasidagi  masofa katta bo'lsa,  chiziqli
interpolatsiya funktsiyasi haqiqiy funktsiyaga etarlicha aniq yaqinlashishga imkon
bermaydi.
Chiziqli   interpolyatsiya   funktsiyasidan   umumiy   dastlabki   tahlil   va
interpolyatsiya   natijalarining   to'g'riligini   baholash   uchun   foydalanish   mumkin,
keyinchalik   ular   boshqa   aniqroq   usullar   bilan   olinadi.   Hisob   -kitoblar   qo'lda
bajarilgan hollarda bunday baholash ayniqsa dolzarb bo'ladi. 
Ikkilik qidiruv o'rniga interpolatsiya qidiruvidan qachon foydalanishim kerak?
Misol   uchun,   menda   tartiblangan   ma'lumotlar   to'plami   bor,   qaysi   holatlarda
ushbu   ma'lumotlar   to'plamidagi   elementni   topish   uchun   ikkilik   qidiruvdan
foydalanishim kerak yoki qaysi vaziyatda interpolatsiya qidiruvidan foydalanishim
kerak?
Ma'lumotlar to'plamining qaysi xususiyatlari hal qiluvchi omil bo'ladi?
Shubhasiz,   interpolyatsiya   qidiruvini   amalga   oshirish   uchun   sizga   ma'lum
turdagi  kalit  kerak bo'lib, uning buyurtmasi  ma'lum  bo'ladi  - qaysi  biri  katta yoki
kichik   ekanligini   aniqlash   uchun   kalitlarni   solishtiribgina   qolmay,   ehtimol
masofani   taxmin   qilish   uchun   kalitlarni   hisoblash   imkoniyatiga   ega   bo'lishingiz
kerak. .
Misol   uchun,   kalit   sifatida   kichik   harflar   satrlari   bo'lgan   ma'lumotlar
to'plamini   ko'rib   chiqing.   Aytaylik,   sizda   “x”   bilan   boshlanadigan   kalit
bor.   Interpolatsiya   qidiruvi,   qidiruvni   to'plamning   oxiriga   yaqin   boshlash
kerakligini  aniq ko'rsatadi.   Ammo, agar   sizning kalitlaringizning   aksariyati   aslida
"z"   bilan   boshlansa   va   ularning   deyarli   hech   biri   "a"   harfi   bilan   boshlanmasa,
garchi   "y"   bo'lsa   ham,   siz   izlayotgan   kalit   aslida   to'plamning   boshiga   juda   yaqin
bo'lishi   mumkin.   Qidiruv   "w"   harfi   bilan   boshlangan   satrning   boshiga
yaqinlashgunga qadar u sezilarli miqdordagi takrorlashdan o'tishi mumkin.   Har bir
iteratsiya ma'lumotlar to'plamining faqat ~ 10 foizini ko'rib  olib tashlaydi, shuning
12 uchun   kalitlar   "w"   bilan   boshlanadigan   boshiga   yaqinlashish   uchun   bir   necha
iteratsiya kerak bo'ladi.
Bundan   farqli   o'laroq,   binar   qidiruv   o'rtadan   boshlanadi   ,   ikkinchi
takrorlashda chorakga etadi, uchinchisida sakkizdan biriga etadi va hokazo.Uning
ishlashiga   kalitning   egriligi   deyarli   ta'sir   qilmaydi.   Har   bir   iteratsiya   ma'lumotlar
to'plamining   yarmini   kalitlar   bir   tekis   taqsimlangandek   ko'rib   chiqishdan   olib
tashlaydi.
Misol   uchun,   u   etarli   miqdordagi   mahalliylashtirilgan   klasterlar   bilan   ham
juda yaxshi ishlashi mumkin.
Shuni   ham   ta'kidlash   kerakki,   interpolyatsiyani   qidirishda   chiziqli
interpolyatsiyadan   foydalanish   shart   emas.   Misol   uchun,   agar   siz   kalitlaringiz
qandaydir   chiziqli   bo'lmagan   taqsimotga   (qo'ng'iroq   chizig'i   kabi)   rioya   qilishini
bilsangiz,   yagona   taqsimotdan   biroz   farqli   natijalarni   olish   uchun   interpolatsiya
funktsiyasida buni hisobga olish juda oson bo'ladi.
O   belgisidan   foydalanib,   N   o'lchamdagi   ma'lumotlar   to'plami   uchun
interpolyatsiya   algoritmining   ishlashi   O   (N)   biroq,   interpolyatsiya   uchun
ishlatiladigan   chiziqli   shkala   bo'yicha   ma'lumotlarning   bir   xil   taqsimlanishini
nazarda tutsak, unumdorlik O (log log N) sifatida ko'rsatilishi mumkin.
Interpolyatsiyani qidirishning amaliy ko'rsatkichi problar sonining kamayishi
har bir zond uchun zarur bo'lgan murakkabroq hisob-kitoblar bilan og'irlashganiga
bog'liq.   Bu   diskdagi   katta   tartiblangan   fayldagi   yozuvni   topish   uchun   foydali
bo'lishi   mumkin,   bunda   har   bir   prob   diskni   qidirishni   o'z   ichiga   oladi   va
interpolyatsiya arifmetikasidan ancha sekinroqdir.
B-daraxtlar   kabi   indeks   tuzilmalari   diskka   kirishni   ham   kamaytiradi   va
ko'pincha   diskdagi   ma'lumotlarni   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.
13 Interpolatsiya,   interpolyatsiya   (inter-polisdan   -   "silliqlangan,   yangilangan,
o'zgartirilgan")   -   hisoblash   matematikasida   ma'lum   qiymatlarning   mavjud   diskret
to'plamidan miqdorning oraliq qiymatlarini topish usuli.
Interpolatsiya   qidiruvi   ikkilik   qidiruvning   takomillashtirilgan
versiyasidir.   Ushbu   qidiruv   algoritmi   kerakli   qiymat   o'lchanadigan   nuqtada
ishlaydi.   Ushbu   algoritm   to'g'ri   ishlashi   uchun   ma'lumotlar   to'plami   tartiblangan
va bir tekis taqsimlanishi kerak.
Ikkilik   qidiruv   chiziqli   qidiruvga   nisbatan   katta   vaqt   murakkabligi
ustunligiga   ega.   Chiziqli   qidiruvning   eng   yomon   murakkabligi   n   (n),   ikkilik
qidiruv esa n (log n) ga ega.
Maqsadli   ma'lumotlarning   joylashuvi   oldindan   ma'lum   bo'lishi   mumkin   bo'lgan
holatlar   mavjud.   Masalan,   telefon   ma'lumotnomasida,   agar   biz   Morfinning
telefon   raqamini   topmoqchi   bo'lsak.   Bu   erda   chiziqli   qidiruv   va   hatto   ikkilik
qidiruv sekin ko'rinadi, chunki biz to'g'ridan-to'g'ri "M" bilan boshlangan nomlar
saqlanadigan xotira maydoniga o'tishimiz mumkin.  
C++ da dastur ko`rinishi
#include <iostream>
using namespace std;
int main()
{
int MyArray [] { 1, 2, 4, 6, 7, 89, 123, 231, 1000, 1235 };
 int x = 0; 
 int a = 0; 
 int b = 9; 
14  int WhatFind = 123;
 bool found; 
 for (found = false; (MyArray[a] < WhatFind) && (MyArray[b] > WhatFind)
&& !found; )
 {
 x = a + ((WhatFind - MyArray[a]) * (b - a)) / (MyArray[b] - MyArray[a]);
 if (MyArray[x] < WhatFind)
 a = x + 1;
 else if (MyArray[x] > WhatFind)
 b = x - 1;
 else
 found = true;
 }
 if (MyArray[a] == WhatFind)
 cout << WhatFind << " asos element " << a << endl;
 else if (MyArray[b] == WhatFind)
 cout << WhatFind << " asaos element " << b << endl;
 else
 cout << "kechirasiz topilmadi" << endl;
 return 0;
15 }
Natija (1-rasm).
1-rasm.
C++ da dastur kodi
//#include "stdafx.h"
#include <iostream>
using namespace std;
const int N=17;
//интерполяционный поиск
int InterpolSearch(int A[], int key)
{
int mid, left=0, right=N-1;
while (A[left]<=key && A[right]>=key)
{
mid=left+((key-A[left])*(right-left))/(A[right]-A[left]);
if (A[mid]<key) left=mid+1;
else if (A[mid]>key) right=mid-1;
16 else return mid;
}
if (A[left]==key) return left;
else return -1;
}
//главная функция
int main()
{
setlocale(LC_ALL,"Rus");
int i, key;
int A[N]={2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59};
cout<<"Искомый элемент > "; cin>>key; //ввод ключа
cout<<"Исходный массив: ";
for (i=0; i<N; i++) cout<<A[i]<<" "; //вывод массива
if (InterpolSearch(A, key)==-1) cout<<"\nЭлемент не найден";
else cout<<"\nНомер элемента: "<<InterpolSearch(A, key)+1;
system("pause>>void");
}
Natija (2-rasm).
2- rasm .
17 Ikkilik qidiruvda joylashishni aniqlash
Ikkilik   qidiruvda,   agar   kerakli   ma'lumotlar   topilmasa,   qolgan   ro'yxat   ikki
qismga   bo'linadi,   pastki   va   yuqori.   Ularning   har   birida   qidiruv   ishlari   olib
borilmoqda.
Ma'lumotlar tartiblangan bo'lsa ham, ikkilik qidiruv kerakli ma'lumotlarning
joylashuvidan foydalanmaydi.
Interpolyatsiya qidiruvida pozitsiyani tekshirish
Interpolatsiya   qidiruvi   indeksning   o'rnini   hisoblash   orqali   ma'lum   bir
elementni  topadi.   Dastlab,  element  pozitsiyasi  to'plamdagi  eng o'rta elementning
pozitsiyasidir.
Agar   mos   kelsa,   element   indeksi   qaytariladi.   Ro'yxatni   ikki   qismga   bo'lish
uchun biz quyidagi usuldan foydalanamiz:
mid = Lo + ((Salom - Lo) / (A [Salom] - A [Lo])) * (X - A [Lo])
qayerda -
18    A = ro'yxat
   Lo = Ro'yxatning eng past indeksi
   Salom = Ro'yxatning eng yuqori indeksi
   A [n] = Ro'yxatdagi n indeksida saqlangan qiymat
Agar   o'rta   element   elementdan   kattaroq   bo'lsa,   u   holda   elementning   holati
yana   o'rta   elementning   o'ng   tomonidagi   pastki   qatorda   hisoblanadi.   Aks   holda,
element   o'rta   elementning   chap   tomonidagi   pastki   qatorda   qidiriladi.   Bu   jarayon
pastki massiv uchun pastki qator nolga kamayguncha davom etadi.
Ishlash   vaqtida   interpolyatsiyani   qidirish   algoritmining   murakkabligi   qulay
vaziyatlarda   n (log (log n))   va   l (log n)  ga teng.
Algoritm
Bu   mavjud   BST   algoritmining   improvizatsiyasi   bo'lganligi   sababli,   biz
joylashishni   aniqlash   yordamida   ma'lumotlar   qiymatining   "maqsadli"   indeksini
topish bosqichlarini eslatib o'tamiz -
1-qadam - Ro'yxatning o'rtasidan  ma'lumotlarni  qidirishni boshlang .
2-qadam - Agar u mos keladigan bo'lsa, element indeksini qaytaring va chi-
qing.
3-qadam - Agar u mos kelmasa, pozitsiyani tekshiring.
4-qadam - Ro'yxatni tekshirish formulasidan foydalanib bo'ling va yangi o'r-
tani toping.
5-qadam  -  Agar   ma'lumotlar   o'rtadan kattaroq  bo'lsa,  yuqoriroq  pastki   ro'y-
xatda qidiring.
6-qadam   -   Agar   ma'lumotlar   o'rtadan   kichikroq   bo'lsa,   pastki   pastki
ro'yxatda qidiring.
7-qadam – Natija chiqgancha  takrorlang.
Lug'atda   so'z   toping.   Agar   u   "A"   harfi   bilan   boshlansa,   unda   hech   kim   uni
o'rtadan   qidirmaydi,   balki   lug'atni   boshiga   yaqinroq   ochadi.   Inson   algoritmi   va
19 boshqalar   o'rtasidagi   farq   nima?   Farqi   shundaki,   ikkilik   qidiruv   kabi   algoritmlar
"bir   oz   ko'proq"   va   "ko'proq"   o'rtasida   farq   qilmaydi. Algoritm   a   dan   tartiblangan
massiv   n   raqamlar,   x   topiladigan   qiymat.   Qidiruv   ikkilik   qidiruvga   o 'xshaydi   ,
lekin qidiruv maydonini ikkita teng qismga bo'lish o'rniga, interpolyatsiya qiluvchi
qidiruv   yangi   qidiruv   maydonini   kalit   va   elementning   joriy   qiymati   orasidagi
masofaga   qarab   baholaydi.   Agar   ma'lum   bo'lsa   x   orasida   yotadi   al   va   ar ,   keyingi
tekshirish taxminan masofada amalga oshiriladi   
Elementni   ajratish   uchun   formula   m   quyidagi   tenglamadan   olinadi:    
;     bundan   kelib   chiqadi   .   Quyidagi   rasmda
ushbu   baholashning   sabablari   ko'rsatilgan.   Interpolatsiya   qidiruvi   bizning
massivimiz arifmetik progressiyaga o'xshash narsa ekanligiga asoslanadi.
Ishlash   vaqti   Asimptotik   tarzda   interpolyatsiya   qidiruvi   ikkilik   qidiruvdan
ustundir.   Agar kalitlar tasodifiy taqsimlangan bo'lsa, u holda algoritm bir qadamda
tekshirilgan   elementlarning   sonini   kamaytiradi. nn   oldin   n   dan   √n     .   Ya'ni,   keyin gi
bosqichda, tekshirilgan elementlar soni kamayadi   n  bitta    Shunday qilib, faqat 2
elementni   tekshirish   qoladi   (va   u   erda   qidiruvni   tugatish),   qachon  
;   Bundan kelib chiqadiki, qadamlar soni va shuning uchun ish
vaqti  O
"Yomon"  dastlabki   ma'lumotlar  bilan  (masalan,   elementlarning  eksponensial
o'sishi bilan) ish vaqti yomonlashishi mumkin.   O   (   n   ).
Tajribalar shuni ko'rsatdiki, interpolyatsiya qidiruvi qo'shimcha hisob-kitoblar
uchun  zarur  bo'lgan   vaqtni   qoplash  uchun   etarli  darajada  bajarilgan  taqqoslashlar
20 sonini   kamaytirmaydi   (jadval   unchalik   katta   bo'lmagan   holda).   Bundan   tashqari,
odatiy   jadvallar   etarli   darajada   tasodifiy   emas   va   qiymatlar   orasidagi   farq  
  va     faqat   juda   katta   ahamiyatga   ega   bo'ladi.   Amalda   katta
hajmdagi fayllarni qidirishda, interpolatsiyali qidiruvni erta qo'llash foydali bo'ladi,
so'ngra diapazon sezilarli darajada qisqargandan so'ng, binarga o'tiladi.
Interpolatsiya   qidiruvi   (   interpolatsiya   qidiruvi   )   telefon   kitobida   yoki,
masalan,   lug'atda   qidirish   printsipiga   asoslanadi .   Chiziqli   qidiruvda   bo'lgani   kabi,
har   bir   elementni   kerakli   element   bilan   solishtirish   o'rniga   ,   bu   algoritm
elementning   joylashishini   bashorat   qiladi:   qidiruv   ikkilik   qidiruvga   o'xshaydi   ,
lekin   qidiruv   maydonini   ikki   qismga   bo'lish   o'rniga,   interpolyatsiya   qiluvchi
qidiruv   baholaydi.   kalit   va   elementning   joriy   qiymati   orasidagi   masofa   bo'yicha
yangi qidiruv maydoni.   Boshqacha qilib aytganda, binar qidiruv faqat kalit va joriy
qiymat   o'rtasidagi   farqning   belgisini   hisobga   oladi,   interpolator   esa   bu   farqning
modulini ham hisobga oladi va ushbu qiymatdan foydalanib, keyingi elementning
o'rnini   bashorat   qiladi.   tekshirish.   O'rtacha,   interpolyatsiya   qiluvchi   qidiruv
jurnalni   ( log   ( N   ))   operatsiyalar,   bu   erda   N   -   qidiruv   amalga   oshiriladigan
elementlar soni.   Kerakli operatsiyalar soni elementlar orasidagi qiymatlarning teng
taqsimlanishiga   bog'liq.   Noto'g'ri   holatda   (masalan,   elementlarning   qiymatlari
eksponent   ravishda   oshganida),   interpolyatsiya   qidirish   O
(   N   )   gacha   operatsiyalarni bajarishi mumkin.
Amalda interpolyatsiya qidiruvi ko'pincha ikkilik qidiruvga qaraganda tezroq
bo'ladi,   chunki   hisoblash   nuqtai   nazaridan   ular   faqat   ishlatilgan   arifmetik
operatsiyalar bilan ajralib turadi :     qidiruv va ikkiga bo'lishning interpolyatsiyasida
- binarda va ularni hisoblash tezligi unchalik katta bo'lmagan darajada farqlanadi;
boshqa   tomondan,   interpolyatsiya   qiluvchi   qidiruv   ma'lumotlarning   qiymatlarni
taqsimlashning bir xilligi kabi asosiy xususiyatidan foydalanadi va hokazo.
21 Interpolyatsiyani   qiymatlarning   taqsimlanishini   yaqinlashtiruvchi   funksiya
yoki   alohida   hududlarga   yaqinlashuvchi   egri   chiziqlar   to‘plami   asosida   amalga
oshirish   mumkin.   Bunday   holda,   qidiruv   bir   nechta   tekshiruvlarda   yakunlanishi
mumkin.   Ushbu   usulning   afzalligi,   agar   so'rovlar   tez-tez   bo'lsa,   sekin   xotiradan
(masalan, qattiq diskdan) o'qish so'rovlarini kamaytirishdir.   Ushbu yondashuv   xesh
jadvalini qidirishning   maxsus holatiga o'xshaydi   .
Ko'pincha   tahlil   qilish   va   yaqinlashuvchi   egri   chiziqlarni   qurish   talab
qilinmaydi,   bu   erda   barcha   elementlar   o'sish   tartibida   tartiblanganda   indikativ
holat.   Ushbu   ro'yxat   indeksning   minimal   qiymati   1   va   maksimal   indeks   N
bo'ladi   .   Bunday   holda,   egri   chiziqni   to'g'ri   chiziq   sifatida   qabul   qilish   va   chiziqli
interpolatsiyani   qo'llash mumkin.
Amalga oshirish  
Quyidagi   Java   misolida   interpolatsiyali   qidiruvning   eng   oddiy   amalga
oshirilishi   ko'rsatilgan.   Har   bir   bosqichda   algoritm   ikkilik  qidiruvda   bo'lgani   kabi
keyingi tekshirish uchun pozitsiyani hisoblab chiqadi, yuqori yoki pastki chegarani
siljitadi   va   shu   bilan   kerakli   qiymatni   o'z   ichiga   olgan   yangi   qidiruv   maydonini
belgilaydi.
Interpolatsiya qidiruvi
Enterpolasyon   qidiruv     U   birinchi   marta   1957-yilda   W   Peterson
tomonidan   tasvirlangan.     Interpolatsiya   qidiruvi   odamlarning   telefon
ma lumotnomasidanʼ   nom   (kitob   yozuvlari   tartiblangan   asosiy   qiymat)
uchun   qidirish   usuliga   o xshaydi	
ʻ   :   har   bir   qadamda   algoritm   qayerda   ekanligini
hisoblab   chiqadi.   Qolgan   qidiruv   maydoni   ,   qidiruv   maydoni   chegaralaridagi   kalit
qiymatlari   va   qidirilayotgan   kalitning   qiymatiga   asoslanib,   odatda   chiziqli
interpolyatsiya   orqali   qidirilayotgan   element   bo'lishi   mumkin..   Ushbu   taxminiy
pozitsiyada   topilgan   asosiy   qiymat   so'ngra   qidirilayotgan   asosiy   qiymat   bilan
taqqoslanadi.   Agar   u   teng   bo'lmasa,   taqqoslashga   qarab,   qolgan   qidiruv   maydoni
22 taxminiy pozitsiyadan oldingi yoki keyingi qismga qisqartiriladi.   Ushbu usul faqat
asosiy   qiymatlar   orasidagi   farqlar   hajmi   bo'yicha   hisob-kitoblar   oqilona   bo'lsa
ishlaydi.
Taqqoslash   uchun,   ikkilik   qidiruv   har   doim   taxminiy   pozitsiyada   topilgan
kalit   va   qidirilayotgan   kalit   o'rtasidagi   taqqoslashga   qarab,   bir   yarmini   yoki
boshqasini   tashlab,   qolgan   qidiruv   maydonining   o'rtasini   tanlaydi   -   bu   kalitlar
uchun   raqamli   qiymatlarni   talab   qilmaydi,   shunchaki   ular   bo'yicha   umumiy
buyurtma.   Qolgan   qidiruv   maydoni   taxminiy   pozitsiyadan   oldingi   yoki   keyingi
qismga   qisqartiriladi.   Chiziqli   qidiruv   foydalanish   tenglik   har   qanday   tartibida
e'tiborsizlik, elementlar bir-by-biri boshidan solishtirsa faqat.
Interpolatsiya   qidiruvi   o'rtacha   hisobda   log(log(   n   ))   taqqoslashlarini   amalga
oshiradi   (agar   elementlar   bir   xilda   taqsimlangan   bo'lsa),   bu   erda   n   -   izlanadigan
elementlar   soni.   Eng   yomon   holatda   (masalan,   tugmachalarning   sonli   qiymatlari
eksponent   ravishda   ortib   borsa)   u   O   (   n   )   ga   teng  taqqoslashlarni   amalga   oshirishi
mumkin   .
Interpolyatsiya   -   ketma-ket   qidirishda   interpolyatsiya   qidirilayotgan
elementga  yaqin elementni   topish  uchun ishlatiladi,  so'ngra   aniq elementni  topish
uchun   chiziqli qidiruvdan   foydalaniladi. 
Ishlash
Foydalanish   katta-O   namoyish   ,   hajmi   bir   ma'lumotlar   majmui   ustidan
interpolasyonu   algoritm   faoliyatini   n   bo'lib   Ey   (   n   );   biroq   interpolyatsiya   uchun
ishlatiladigan chiziqli shkala  bo'yicha ma'lumotlarning bir  xil taqsimlanishi  farazi
ostida ishlash   O   (log log   n   ) bo'lishi mumkin.     Biroq,   yangi ma'lumotlar strukturasi
yordamida   o   (log log   n   ) vaqtida   Dinamik Interpolatsiya qidiruvi mumkin   .    
Interpolatsiyani   qidirishning   amaliy   samaradorligi,   har   bir   zond   uchun   zarur
bo'lgan   murakkabroq   hisob-kitoblar   sonining   kamayganidan   oshib   ketishiga
bog'liq.   Bu   diskdagi   katta   tartiblangan   fayldagi   yozuvni   topish   uchun   foydali
23 bo'lishi   mumkin,   bunda   har   bir   zond   diskni   qidirishni   o'z   ichiga   oladi   va
interpolyatsiya arifmetikasidan ancha sekinroqdir.
B-daraxtlar   kabi   indeks   tuzilmalari,   shuningdek,   diskka   kirish   sonini
kamaytiradi va qisman diskdagi ma'lumotlarni indekslash uchun ishlatiladi, chunki
ular   ko'p   turdagi   ma'lumotlarni   indekslashi   va   onlayn   r avishda   yangilanishi
mumkin   .   Shunday bo'lsa-da, interpolatsiya qidiruvi ma'lum bir tartiblangan, ammo
indekslanmagan   diskdagi   ma'lumotlar   to'plamlarini   qidirishga   majbur   bo'lganda
foydali bo'lishi mumkin.
Turli malumotlar to`plamiga moslashish
Agar   ma'lumotlar   to'plami   uchun   tartiblash   kalitlari   bir   xil   taqsimlangan
raqamlar   bo'lsa,   chiziqli   interpolyatsiyani   amalga   oshirish   oson   va   kerakli
qiymatga juda yaqin indeks topadi.
Boshqa   tomondan,   nom   bo'yicha   tartiblangan   telefon   kitobi   uchun
interpolatsiyani   qidirishga   to'g'ridan-to'g'ri   yondashuv   qo'llanilmaydi.   Xuddi   shu
yuqori darajadagi printsiplar hali ham amal qilishi mumkin: ismlardagi harflarning
nisbiy chastotalaridan foydalangan holda telefon kitobidagi ismning o'rnini taxmin
qilish va undan tekshiruv joyi sifatida foydalanish mumkin.
Ba'zi interpolyatsiya qidiruvi ilovalari teng kalit qiymatlari mavjud bo'lganda
kutilganidek   ishlamasligi   mumkin.   Interpolatsiya   qidiruvining   eng   oddiy   amalga
oshirilishi   bunday   ishga   tushirishning   birinchi   (yoki   oxirgi)   elementini   tanlashi
shart emas.
Telefondagi   ismlarni   qandaydir   raqamga   aylantirish   raqamlarning   bir   xil
taqsimlanishini   ta'minlamaydi   (nomlarni   saralash   va   ularni   №1,   ism   №2   va
hokazolarni chaqirish kabi katta harakatlar bundan mustasno) va bundan tashqari,
bu   Ma'lumki,   ba'zi   nomlar   boshqalarga   qaraganda   ancha   keng   tarqalgan   (Smit,
Jons,)   Xuddi   shunday   lug'atlarda   ham,   ba'zi   harflar   bilan   boshlangan   so'zlar
boshqalarga   qaraganda   ko'proq.   Ba'zi   noshirlar   bir   qarashda   segmentlangan
24 interpolyatsiyani   amalga   oshirish   uchun   har   bir   harf   uchun   markerlarni   ko'rsatish
uchun   tayyorlashga   yoki   hatto   sahifalarning   yon   tomonlarini   kesishga   harakat
qilishadi.
Quyidagi   C++   kod misoli oddiy amalga oshirishdir.   Har bir bosqichda u zond
o'rnini   hisoblab   chiqadi,   so'ngra   ikkilik   qidiruvda   bo'lgani   kabi,   kerakli   qiymatni
o'z ichiga olgan kichikroq intervalni  aniqlash uchun yuqori  yoki  pastki  chegarani
harakatga keltiradi.   Har bir bosqichda oraliq o'lchamini ikki baravar kamaytirishni
kafolatlaydigan   ikkilik   qidiruvdan   farqli   o'laroq,   noto'g'ri   interpolyatsiya   O(   n   )
ning   samaradorligini kamaytirishi mumkin   .
Yuqoridagi kodni har bir takrorlash taqqoslanganda besh olti marta     ortiqcha
bir  necha  amallardan,   ikkilik qidiruv algoritmi   iteratsiyada  boshiga  bir  taqqoslash
bilan   yozilgan   va   faqat   arzimas   butun   son   arifmetikasidan   foydalanishimiz
mumkin.   Shunday qilib, u yigirmatadan ko'p bo'lmagan taqqoslashlar bilan million
elementlardan   iborat   massivni   qidiradi   (massiv   elementlari   saqlanadigan   operativ
xotiraga   kirishni   o'z   ichiga   oladi)   Buni   engish   uchun,   yuqorida   yozilganidek,
interpolyatsiya qidiruviga uchtadan ko'p bo'lmagan takrorlash ruxsat etiladi.
Interpolation search
     function search( key : typekey; var r : dataarray ) : integer;
     var high, j, low : integer;
     begin
     low := 1;
     high := n;
     while (r[high].k >= key) and (key > r[low].k) do
          begin
25           j := trunc( (key-r[low].k) / (r[high].k-r[low].k) *
                         (high-low) ) + low;
          if      key > r[j].k then low  := j+1
          else if key < r[j].k then high := j-1
                               else low  := j
          end;
     if r[low].k = key then search := low  {*** found(r[low]) ***}
                       else search := -1;  {*** notfound(key) ***}
     end;
Ikkilik   qidiruv   shundan   iboratki,   har   bir   bosqichda   ob'ektlar   to'plami   ikki
qismga bo'linadi va to'plamning kerakli ob'ekt joylashgan qismi ishda qoladi.   Yoki
masalaning   shakllantirilishiga   qarab,   element   paydo   bo‘lishining   birinchi   yoki
oxirgi indeksini olganimizda jarayonni to‘xtatishimiz mumkin.   Oxirgi shart - chap
qo'l / o'ng qo'l ikkilik qidiruv.  
26 Xulosa
Kur   ishini   bajarishda   men   misol   tariqasida   massiv   elementlarini   oldim.
Massivnig elementini topish uchun interpolatsion qidiruv tizimidan foydalandim. 
Bunda bizga tartiblangan massiv berilgan bo`lsin.
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
1 5 8 10 12 15 20 26 30 40 55 69 77 82 100
      Berilgan   massiv   elementlaridan   30   ni   topishimim   kerak.   Bunda   dastur
massiv   elementlarining   indekislarini   30   elementigacha   (indeksi   8)   bir   guruh,   30
elemanidan boshlab qolganlarini bir guruh  qilib 2 ga (0 dan 7 gacha)va (8 dan 14
gacha)   bo`lib   oladi.   Birinchi   guruhda   (0   dan   7   gacha)   30   elementining   indeksi   8
qatnashmaganligi   uchun   birinchi   guruh   o`chirib   yuboriladi.   Shu   tartibda   qidirish
davom ettiriladi. indekislar bir guruh, (10 dan 14 gacha ) ikkinchi guruh. Ikkinchi
guruhda 8- indeksi bo`lmaganigi uchun bu guruh ham o`chiriladi. Natijada (8 va 9)
indekislarning elementlari  (30 va 40 )  taqqoslanadi  va qidiruv natijasi  sifatida 30
nichiqaradi.  
Xulosa   qilib   shuni   aytishimiz   mumkinki   interpolatsion   qidiruvda   massiv
elementlari   bir   necha   guruhlarga   bo`linadi   va   qidirilayotgan   element   yo`g`i
o`chiriladi. Bir necha takrorlanishdan so`ng qidiruv natijasi elon qilinadi.
                                                       
27 Foydalanilgan adabiyotlar    
1. M.O‘.Ashurov,   Sh.A.Sattarova,   Sh.U.Usmonqulov.   Algoritmia   г.   -T.:
«Fan  va texnologiya», 2018,244 bet.
2. Polatov A.M.  Algoritmlar va C++ tilida dasturlash asoslari . Toshkent.
“Universitet” - 2017. 123 bet
3. Madraximov   Sh.F.,   Ikramov   A.M.,   Babajanov   M.R.   C++   tilida
programmalash   bo’yicha   masalalar   to’plami.   O’quv   qo’llanma.   T.,
O’zbekiston Milliy universiteti, “Universitet” nashriyoti, 2014. - 160 b
4. Holmatov   TX,   Toyloqov   NI   Amaliy,   dasturlash   va   kompyuterning
matematika ta'minoti.   T. Mexnat, 2000 y.
5. Akbaraliyev   B.B.,   Yusupova   Z.D.,   “Ma’lumotlar   tuzilmasi   va
algoritimlar”, Toshkent 2013. 
6. Xayitmatov O’.T., Inogomjonov E.E., Sharipov B.A., Ro’zmetova N., 
Rahimboboeva D,” MA'LUMOTLAR TUZILMASI VA 
ALGORITMLARI”, Toshkent – 2011
Foydalanilgan internet saytlar
1) wikipedia   
2) https://neerc.ifmo.ru/wiki/index.php?ti     
3) https://e-maxx.ru/algo       
28

“ALGORITM VA MA’LUMOTLAR STRUKTURASI” FANIDAN “INTERPOLATSION QIDIRUV ” MAVZUSIDA TAYYORLAGAN KURS ISHI

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 2

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. 3

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. 4

Interpolatsiya qidiruvi odatda ikkilik qidiruvdan samaradorlik jihatidan ustun bo'lib, o'rtacha log (log (N)) operatsiyalarini talab qiladi. Shunday qilib, uning 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. 5