logo

Izlash algoritimlari. Chiziqli izlash

Yuklangan vaqt:

08.08.2023

Ko'chirishlar soni:

0

Hajmi:

39.404296875 KB
Mavzu: Izlash algoritimlari. Chiziqli izlash.
Reja:
1. Kirish.
2. Asosiy qisim.
1. Algoritm haqida tushuncha va algoritm turlari.
2. Izlash algoritmlari.
3. Chiziqli izlash algoritimi
3. Xulosa.
4. Foydalanilgan adabiyotlar ro’yxati.  Kirish
Hozirgi     kunda     biror     bir     sohada     ishni     boshlash     va     uni
boshqarishni   kompyutersiz tasavvur  qilish  qiyin.  XXI  asr  savodxon
kishisi     bo’lishi     uchun     kompyuter     savodxon   bo’lish,     axborot
texnologiyalarini     puxta     egallamoq     lozim.     Har     bir     mutaxassis,     u
qaysi  sohada    ishlashdan    qat’iy    nazar,    o’z   vazifasini    zamon    talabi
darajasida  bajarishi  uchun axborotni  ishlab  chiqaruvchi  vositalar  va
ularni     ishlatish     uslubiyotini     bilish     va   ishlash   ko’nikmalarga   ega
bo’lishi zarur. 
Inson hayoti davomida katta-kichik vazifalar yoki masa- laiarni hal
etishni   o‘z   oldiga   maqsad   qilib   qo‘yadi.   Odatda,   u   o‘z   maqsadiga
erishishi   uchun   bajarishi   lozim   bo'lgan   amal   yoki   ishlarini   hayotiy
tajribasi   yoki   o'zlashtirgan   bilimiga   asos-   lanib   ma'lum   bir   tartibga
keltiradi. Bunga hayotimizdan xilma- xil misollar keltirish mumkin.
Misol. Ko‘chadan o'tish maqsad qilib qo‘yilgan bo'lsin. IJ holda
ko‘chadan   o'tayotgan   kishi   hammamizga   odatiy   hol   bo‘lib   qolgan
quyidagi harakatlarni bajarishi lozim bo'ladi:
1)   chap   tarafga   qaralsin,   agar   transport   vositasi   yo‘q   bo‘lsa,   2-
bandga o'tilsin, aks holda 1-bandga o'tilsin; 
2)   o‘ng   tarafga   qaralsin,   agar   transport   vositasi   yo‘q   bo‘lsa,   3-
bandga o'tilsin, aks holda 1-bandga o'tilsin; 
3) ko'chadan o'tilsin. 1. Algoritm haqida tushuncha va algoritm turlari.
Algoritm   deganda,   biror   maqsadga   erishishga   qaratilgan   ijrochi
bajarishi uchun mo'ljallangan ko‘rsatma (buyruq)laming aniq,tushunarli
va chekli ketma-ketligi tushuniladi.
Bu algoritm tushunchasining matematik ta'rifi bo’lmasa ham intuitiv
ma'noda  algoritmning   mazmunini  ochib  beruvchi  tavsifidir.  Algoritmni
intuitiv   ma’noda   bir   necha   misollarda   izohlaymiz.   Biror-bir   narsani
taqiqlovchi qoidalar algoritm bo’laolmaydi, masalan: «Chekish mumkin
emas»,   «Begonalarning   kirishi   taqiqlanadi»,   «Kirish»,   «Chekish   uchun
joy»   kabi   birorbir   narsaga   ruxsat   etuvchi   qoidalar   ham   algoritmga   xos
emas.   Lekin   «Svetoforni   yashil   rangida   o‘ting»   juda   sodda   bo'lsa   ham
algoritmdir.   Demak,   yuqorida   keltirilgan   misollardagi   ko‘r-   satmalar
ketma-ketligi algoritm va bu algoritmlarni bajarayotgan inson — ijrochi
bo’lar   ekan.   Algoritm   ijrochisi   faqat   insonmi,   degan   savol   berishingiz
tabiiy. Bu savolga javob quyidagicha:
Algoritm   ijrochisi   —   algoritmda   ko'rsatilgan   buyruq   yoki
ko‘rsatmalarni  bajara  oladigan  abstrakt  yoki  real  (texnik  yoki  biologik)
sistema.
Ijrochi   bajara  olishi   uchun  algoritm  unga  tushunarli   bo’lishi  lozim.
Algoritm   ijrochi   tushunadigan   tilgagina   emas,   balki   uning   bilim   va
malakasiga   ham   mos   bo’lishi   kerak.   Aks   holda   ijrochi   birorta   ham
ko'rsatmani bajara olmasligi mumkin.
Ijrochi   bajara   olishi   mumkin   bo’lgan   ko‘rsatma   yoki   buyruq-   lar
to‘plami   ijrochining   ko‘rsatmalar   sistemasi   deyiladi.   Masalan,   «16
sonidan   kvadrat   ildiz   chiqarilsin»   ko'rsatmasi   2-sinf   o'quvchisining
ko'rsatmalar   sistemasiga   tegishli   bo’lmaydi,   lekin   8-sinf   o'quvchisining
ko‘rsatmalar   sistemasiga   tegishli   bo’ladi.   Algoritm   ijrochiga   tushunarli
bo’lishi   uchun   ijrochining   imkoniyatlarini   bilish   lozim.   Agar   ijrochi
inson   bo’lsa,   u   holda   algoritm   insonning   imkoniyatlaridan   kelib   chiqib
tuzilishi   kerak.   Bunda   ko‘zlangan   maqsad   va   algoritmdan   kelib   chiqib
inson   tushunadigan   til,   insonning   bilimi,   hayotiy   tajribasi,   kasbiy
malakasi,   yoshi,   qolaversa,   jismoniy   imkoniyatlari   hisobga   olinishi zarur.   Agar   ijrochi   texnik   vosita   (masalan,   kompyuter,   elektron   soat,
dastgohlar)   bo’lsa,   u   holda   algoritm   shu   texnik   vositaning
imkoniyatlaridan kelib chiqib tuzilishi kerak.
Agar   ijrochi   koinpyuter   hisoblanib,   uning   dasturiy   ta‘mi-   notida
berilgan   («Karra   jadvalini   hosil   qilish»)   algoritmni   bajara   oladigan
dastur (masalan,  elektron  jadvallardan  birortasi  ham) bo'lmasa,  u holda
hech qanday natijaga erishib bo'lmaydi. Demak, berilayotgan har qanday
ko‘rsatma   ijrochining   ko‘r-   satmalar   sistemasidan   olinishi,   ya'ni   ijrochi
uni  qanday   bajarishni  bilishi  kerak   ekan.  Bu   algoritmning   tushunarlilik
xossasini ifodalaydi. Shuni ta‘kidlash joizki, informatikada algoritmning
asosiy ijrochisi sifatida kompyuter xizmat qiladi.
Algoritmning   tavsifida   «biror   maqsadga   erishishga
qaratilgan»jumlasi   qo‘llanilgan.   Bu   maqsadni   yuqorida   keltirilgan
misollarda   ko'rishimiz   mumkin:   ko'chadan   o‘tish,   g'ishtlar   sonini
hisoblash,   yig‘indini   hisoblash.   Bular   algoritmning   natijaviylik
(cheklilik)   xossasi   bilan   bog‘liq.   Bu   xossaning   mazmuni   shundan
iboratki, har qanday algoritm ijrochi chekli qadamdan so‘ng oxir-oqibat
ma’lum bir yechimga olib kelishi kerak. Shuni ta'kidlash joizki, algoritm
awaldan ko‘zlangan  maqsadga erishishga olib kelmasligi ham mumkin.
Bunga ba'zan algoritmning noto‘g‘ri tuzilgani yoki boshqa xatolik sabab
bo'lishi  mumkin.  Ikkinchi  tomondan,  qo'yilgan  masala ijobiy  yechimga
ega bo‘lmasligi  ham mumkin. Lekin salbiy  natija ham natija deb qabul
qilinadi.
Demak,   algoritm   doimo   chekli   qadamdan   iborat   bo'lishi   va   biror
natija   berishi   kerak   ekan.   Bu   algoritmni   diskretlilik   (uzluklilik,
alohidalik) xossasiga olib keladi. Algoritmda masalani yechish jarayoni
alohida   olingan   sodda   ko‘rsatmalar   ketma-   ketligini   qadam-baqadam
bajarishdan iborat boMishi kerak. Bu xossa misollardan yaqqol ko‘rinib
turibdi.   «Angliyada   avto-   mobilni   yo’lning   chap   qismida   haydang»
qoidasi talabnoma bo’lgani bilan uzluksizlik xarakteriga ega va shuning
uchun   ham   algoritm   hisobiga   qo'shilmaydi.   E'tiboringizni   yana   bir
narsaga   qaratamiz.   Keltirilgan   misollarda   quyidagi   jumlalar   bor: «Ko‘chadan   o‘tish»   (ariqdan   yoki   dengizdan   emas),   “Eni   6   metr   va
bo‘yi 10 metr bo‘lgan joyni” (kilometr emas), «eni 12 santimetr va bo‘yi
25 santimetrli g‘ishtlar» (eni 5 santimetrva bo‘yi 100 santimetrli g'ishtlar
emas).   Bu   jumlalar   va   qavs   ichida   yozilganlarni   taqqoslasangiz,
olinadigan   natija   shu   jumlalardagi   «qiymat»larga   chambarchas   bog'liq
ekanligini   tushunasiz.   Agar   bu   «qiymatlar»   o'zgarsa,   masalan,   qavs
ichidagilarga,   olinadigan   natija   umuman   boshqacha   bo'lishini   ko'rish
qiyin   emas.   Qiymat   so‘zini   qo‘shtirnoq   ichiga   olganimizga   sabab,   siz
doimo   qiymat   so'zini   faqat   sonlar   bilan   bog'Iab   o'rganib   kelgansiz.
Lekin,   bilingki,   biror   masala   uchun   qiymat   har   xil   turdagi   obyektlar
bo'lishi   mumkin   ekan.   Demak,   har   bir   algoritmning   natijasi   awaldan
berilgan,   ya’ni   boshlang'ich   qiymatiarga   bog'liq   bo'lar   ekan.
Boshlang'ich   qiymatlar   turli   natijalarga   olib   kelishiga   yana   bir   hayotiy
misolga   o'zingiz   javob   bera   olasiz:   sizga   va   mehmonga   kelgan
do‘stlarin-   gizga   pishiralayotgan   palovga   20   gramm   tuz   solish   o'rniga
200 gramm tuz solishsa natija bir xil bo’ladimi? Har bir algoritm — bu
amallami   belgilovchi   qoida   bo'lib,   ulaming   zanjiri   natijasida   biz
boshlang‘ich   qiymatlardan   izlangan   natijaga   kelamiz.   Bunday   amallar
zanjiri   algoritmik   jarayon,   har   bir   amal   —   algoritmning   qadami   deb
ataladi.   Yana   boshlang‘ich   qiymat   va   natija   bo'lishi   mumkin   bo'lgan
narsalarning   tahliliga   qaytamiz.   Ko'rdikki,   har   bir   algoritm   uchun
boshlang’ich   qiymatlaming   turli   hollarini   tanlash   mumkin.   Masalan,
g'ishtlar masalasi algoritmi uchun boshlangMch qiymatlarni tavsiflashda
«santimeir» so‘zlarini «uzunlik o‘lchovlari» kabi tushunish mumkin. Bu
holda   hosil   bo’ladigan   natijaning   miqdori   o‘zgaradi,   xolos.   Ko‘p
algoritmlar   boshlang’ich   qiymatlarning   turli   hollari   uchun   o‘z   kuchini
saqlab   qoladi.   Qo‘shish   algoritmini   ixtiyoriy   natural   sonlar   jufti   uchun
qo’llash   mumkin.   Awal   aytib   o’tilgan   algoritmlarning   aniqlangan   bu
xossasi   (ulami   boshlang’ich   qiymatlarning   juda   ko‘p   sondagi   hollariga
qo’llash mumkinligi) ommaviylik deb ataladi. 
Algoritmlarning   juda   ko‘p   xususiy   hollarda   ishlashi   shunday   o‘ta
muhim   va   ahamiyatli   xossa,   shu   sababli   ancha   vaqtgacha   uni
algoritmning  ilmiy  ta'rifiga kiritilishi  shart  deb  hisoblandi.  Bu  ko'pgina
qoidalarni   fan   sohasidan   chiqarib   tashlar   (ularni   «oz   miqdordagi» ommaviyligi   tufayli)   va   ham   ilmiy   tadqiqotni,   ham   uiarning   natijasini
amaliyotda   qoMlashni   qiyinlashtirar   (balki   bu   ilmiy   boMmagan   hol
bo‘lsa-chi?),   bu   esa   jiddiy   noqulaylikka   sabab   bo'ladi.   BoshlangMch
qiymatlarning   faqat   bitta   —   yagona   holiga   qo’llash   mumkin   bo’lgan
algoritm   ham   katta   ahamiyat   kasb   etadi.   Ularga   turli   xil   avtomatlardan
(masalan,   agar   aniq   bir   tangaga   moslangan   gazeta   sotadigan   avtomat,
yoki telefonavtomat) foydalanish algoritmlari tegishlidir, aniq bir joydan
boshlanadigan   va   belgilangan   joyga   olib   boradigan   yo‘nalish   bo‘yicha
borish   algoritmi   va   boshqalar.   «Ommaviylik»   atamasining   mavhumligi
mashhur, ba'zan uyum paradoksi deb ataluvchi, Evkulid paradoksi orqali
tasdiqlanadi.   Paradoks   mazmunini   o'zimizga   savol   berib   va   javobini
berib   tezda   aniqlab   olishimiz   mumkin.   Bitta   tosh   —   uyummi?   Yo‘q.
Ikkita   tosh-chi?   Yana   yo‘q.   Uchtasi-chi?   Oxir-oqibat,   biz   yoki   uyum
mavjud   emas   degan   xulosaga,   yoki   shunday   sondagi   toshlar   to'plami
borki,   undan   bitta   oshsa   uyum   hosil   bo’lishiga   olib   keladi,   deb   e'tirof
etishga   majbur   bo’lamiz.   U   yoki   bu   fikr   ham   haqiqatga   ziddir   va   bu
uyum   atamasining   mavhumligining   natijasi   bo’lib   hisoblanadi.   Nima
bo’lganda   ham   ommaviylik   xossasidan   oddiygina   «bo‘yin   tovlash»
mumkin   emas.   Uni   ta'riflashni   ozgina   o‘zgartirish   hamda   shuning
asosida   yuqorida   aytib   o'tilgan   mavhumlikni   yo'qotish   zarur.
«Ommaviylik»   atamasiga   qanday   mazmun   kiritish   kerak?   Bu   savolga
javob   shunday.   Har   bir   algoritm   uchun   biror-bir   obyektlar   (narsalar,
buyumlar   va   hokazo)   sinfi   mavjud   va   ularning   barchasi   boshlang'ich
qiymat sifatida olinishi mumkin, deb hisoblash zarur. Manfiymas butun
sonlami   qo‘shish   algoritmi   uchun   manfiymas   butun   sonlarning   barcha
juftligi; avtomatdan «Toshkent oqshomi» gazetasini sotib olish algoritmi
uchun   —   yagona   obyekt   —   tanga   shunday   sinf   boMa   oladi.
Algoritmning ommaviyligi — mos sinfning barcha obyektlarini qo’llash
mumkinligidir,   ya'ni,   ularning   qandaydir   miqdorining   (chekli   yoki
cheksiz)   qo'llash   mumkin   emasligi   emas.   Mumkin   bo‘lgan,   ya’ni   joiz
obyektlarning  miqdori  chekli  yoki cheksizligi,  yoki  miqdori nolga teng
bo'lishi — bu shu sinfning xususiyatidir. Agar algoritm yordamida joiz
boshlang‘ich   qiymat   asosida   izlangan   natijani   olish   mumkin   bo‘lsa   u
holda algoritmni  joiz boshlang‘ich  qiymatga qo‘llash  mumkin deyiladi. Agar   boshlang‘ich   qiymat   joiz   bo‘lsa   ham   natija   olish   mumkin
bo’lmasa,   u   holda   unga  algoritm   qo‘llash   mumkin   emas   deyiladi.   Endi
joiz   boshlang‘ich   qiymatlar   sinfi   qanday   ekanligini   ko‘rib   chiqamiz.
Boshlang‘ich   qiymatlar   ba‘zan   narsa   yoki   buyumlar,   sonlar   ekanini
ko‘rdik.   Bu   fikr   olingan   natijalar   uchun   ham   o'rinli.   Bu   narsalar
orasidagi umumiylik nimada? Algoritm — bu qoidalar va demakki, ular
qandaydir   tillarda   ifodalangan,   degan   fikrni   e’tiborga   olsak,   bu
umumiylik ko'rinadi.
Bir   necha   marta   bu   qoidalarning   aniq   bajarilishi   qanchalik   muhim
ekanligi   haqida   gapirib   o‘tdik.   Lekin   bunday   aniq   bajarilishi
boshlang‘ich qiymatlar (ular bilan birga izlangan natijalar ham) biror-bir
tilda,   balki   yan-   gisida,   batamom   tavsiflanishga   imkon   bersagina
mumkin. Bu holda har bir boshlang‘ich qiymatga, har bir oraliq natijaga
va   nihoyat,   izlangan   natijaga   qandaydir   gap   mos   keladi.   Yana,   mazkur
gapning «Mazmun»i bir qiymatli bo'lishi zarur. Matematikada ko'pincha
maxsus   usul   qo‘llanadi.   Bu   usul   shundan   iboratki,   biror-bir   obyekt
boshqa   tabiatli   obyekt   bilan   almashtiriladi,   bunda   yangi   obyektlarga
birlamchilari   bilan   bir   qiymatli   mos   bo‘ladi.   Ko'rilayotgan   holda
boshlang‘ich qiymatlar tilining gaplari bilan boshlang'ich qiymatlarning
o‘zi   orasida   bir   qiymatli   moslik   mavjud.   Shu   sababli,   algoritmni
matematik   ta'riflashda   boshlang‘ich   qiymatlar   va   izlangan   natijalar
tilning  gaplari  deb hisoblanishi  mumkin. Bunday  almashtirish  amaliyot
nuqtayi   nazaridan   mumkinmi?   Albatta,   mumkin.   Chunki,   algoritmning
o‘zida boshlang‘ich qiy- matlar emas, ulaming nomi, jarayonni bajarish
uchun esa amaliar va hosil bo’ladigan natijalarning nomini bilish yetarli.
Keltirilgan   usul   algoritm   ta'rifini   tor   ma'noda   bo'lishiga   olib
keladi,   deyish   mumkin.   Bunday   fikr   asoslidir.   Lekin   bu   torayish
muhim   emas,   chunki   u   algoritmlar   beradigan   imkoniyatlami
kamaytira   olmaydi.   Bu   kabi   yondashish   boshlang'ich   qiymatlar   va
natijalar   turlarini   nisbatan   kamaytiradi,   ammo   ular   awalgidek   turli
fizik   tabiatga   ega   bo‘lishi   mumkin,   lekin   biz   uchun   bu,   ulami
nazariy   qaraganimizda,   turli   tillardagi   gaplar   kabidir.   Narsalarning
turlanishini   biz   tillarning   turlanishiga   keltirdik.   To‘g‘ri,   tillar   ham kam   emas.   Ularni   cheksiz   to‘plam   (faqat   mavjudlari   emas,   balki
mavjud   bo‘lishi   mumkin   bo'lganlari   ham,   ya'ni   mumkinlari   ham)
deb hisoblash  mumkin.  Lekin har bir algoritm  faqat  ikkita til  bilan
bogMangan:   bittasida   u   ta'riflangan,   ikkinchisining   gaplari
boshlang‘ich   qiymatlar   hollarini   uning   uchun   mumkin
bo'lganlaridir. Birinchi tilni, odatda, algoritmik til deb, ikkin- chisini
— operandlar tili deb atashadi. Operandlar deb shunday obyektlarga
aytiladiki,   ular   ustida   algoritm   talab   qilgan   amallar   bajariladi.
Operandlar   tilining   barcha   gaplari   joiz   deb   hisob-   lanadi,   bu   tilga
tegishli   bo'lmagan   biror-bir   belgilar   birikmasi   ta'rif   bo‘yicha   joiz
emas.
   Ma’lumotlarni tuzilmadan qidirish   
Kompyuterda     ma’lumotlarni     qayta     ishlashda     qidiruv     asosiy
amallardan     biri   hisoblanadi.     Uning     vazifasi     berilgan     argument
bo’yicha     massiv     ma’lumotlari   ichidan     mazkur     argumentga     mos
ma’lumotlarni     topish     yoki     bunday     ma’lumot   yo’qligini   aniqlashdan
iborat. Ixtiyoriy  ma’lumotlar  majmuasi  jadval  yoki fayl  deb    ataladi.
Ixtiyoriy     ma’lumot     (yoki     tuzilma     elementi)     boshqa     ma’lumotdan
biror  bir  belgisi  orqali  farq  qiladi.  Mazkur  belgi  kalit  deb  ataladi.
Kalit     noyob   bo’lishi,   ya’ni   mazkur   kalitga   ega     ma’lumot     jadvalda
yagona     bo’lishi     mumkin.     Bunday         noyob         kalitga     boshlang’ich
(birinchi)   kalit   deyiladi.   Ikkinchi   kalit   bir jadvalda   takrorlansada   u
orqali       ham       qidiruvni       amalga       oshirish       mumkin.   Ma’lumotlar
kalitini     bir     joyga   yig’ish     (boshqa     jadvalga)     yoki     yozuv     sifatida
ifodalab     bitta     maydonga     kalitlarni   yozish     mumkin.     Agar     kalitlar
ma’lumotlar   jadvalidan   ajratib   olinib   alohida   fayl sifatida   saqlansa,
u     holda     bunday     kalitlar   tashqi   kalitlar   deyiladi.   Aks   holda,   ya’ni
yozuvning     bir     maydoni   sifatida     jadvalda   saqlansa     ichki     kalit
deyiladi.  Kalitni    berilgan    argument    bilan    mosligini  aniqlovchi
algoritmga   berilgan argument   bo’yicha   qidiruv   deb   ataladi.   Qidiruv
algoritmi       vazifasi       kerakli   ma’lumotni       jadvaldan       topish       yoki
yo’qligini    aniqlashdan        iboratdir.        Agar       kerakli    ma’lumot    yo’q
bo’lsa,  u  holda  ikkita  ishni amalga oshirish mumkin:  
1. Ma’lumot yo’qligini indikatsiya qilish (belgilash)   2. Jadvalga ma’lumotni qo’yish.  
Faraz  qilaylik,  k  –  kalitlar  massivi.  Har  bir  k(i)  uchun  r(i)  –
ma’lumot     mavjud.   Key   –   qidiruv   argumenti.   Unga   rec   -   informatsion
yozuv mos qo’yiladi.    Jadvaldagi    ma’lumotlarning    tuzilmasiga    qarab
qidiruvning  bir  necha  turlari  mavjud.  
2.2.  Ketma-ket qidiruv algoritmi 
Mazkur   ko’rinishdagi        qidiruv        agar       ma’lumotlar        tartibsiz
yoki         ular   tuzilishi     noaniq     bo’lganda     qo’llaniladi.     Bunda
ma’lumotlar  butun  jadval  bo’yicha operativ  xotirada  kichik  adresdan
boshlab,     to     katta     adresgacha     ketma-ket     qarab   chiqiladi.     Massivda
ketma-ket    qidiruv    (search    o’zgaruvchi    topilgan    element  tartib
raqamini     saqlaydi).         Ketma-ket     qidiruv     algoritmi     C++     tilida
quyidagicha bo’ladi:  
int qidiruv(int key){  
for (int i=0;i<="" p="">
  if (k[i]==key) { search = i;return search;}  
  search = -1;  
  return search;  
}}  
Massivda  ketma-ket  qidiruv  algoritmi  samaradorligini  bajarilgan
taqqoslashlar soni  M  bilan  aniqlash  mumkin.  Mmin  =  1,  Mmax  =
n.     Agar   ma’lumotlar   massiv   yacheykasida   bir   xil   ehtimollik   bilan
taqsimlangan bo’lsa,  u holda 
(n  +  1)/2  bo’ladi.  
Agar    kerakli    element    jadvalda    yo’q    bo’lib,   uni    jadvalga
qo’shish       lozim   bo’lsa,   u   holda   yuqorida   keltirilgan   algoritmdagi
oxirgi  ikkita operator quyidagicha almashtiriladi.  
n=n+1;  
k[n-1]:=key;  
r[n-1]:=rec;   search:=n-1;  
return search;   
Agar ma’lumotlar jadvali bir bog’lamli ro’yhat ko’rinishida berilgan
bo’lsa,   u   holda   ketma-ket   qidiruv   ro’yhatda   amalga   oshiriladi.
Birbog’lamli ro’yhatning ko’rinishi Chiziqli   bir   bog’lamli   ro’yhatdan
key     kalitga     mos     elementni     ketma-ket   qidiruv   usuli   yordamida   izlab
topish dasturi.
Node *q=NULL;  
Node *p=lst;  
while (p !=NULL){   
      if (p->k == key){  
          search = p;  
          return search;  
          }  
  q = p;  
  p = p->nxt;  
}  
Node *s=new Node;;  
s->k=key; 
s->r=rec; 
s->nxt= NULL;  
if (q == NULL){ s->nxt=lst; lst = s; }  
               else q->nxt = s;  
search= s;  
return search;  
Ro’yhatli     tuzilmaning     afzalligi     shundan     iboratki,     ro’yhatga
elementni   qo’shish   yoki   o’chirish   tez   amalga   oshadi,   bunda   qo’shish
yoki   o’chirish   element   soniga     bog’liq     bo’lmaydi,     massivda     esa elementni     qo’shish     yoki     o’chirish     o’rta   hisobda     barcha
elementlarning  yarmini  siljitishni  talab  qiladi.  Ro’yhatda qidiruvning
samaradorligi taxminan massivniki bilan bir xil bo’ladi.
Teng bo’lish orqali qidiruv (ikkilik qidiruv) algoritmi 
Faraz qilaylik,   o’sish tartibida tartiblangan sonlar massivi berilgan
bo’lsin.   Ushbu   usulning   asosiy   g’oyasi   shundan   iboratki,   tasodifiy
qandaydir   AM   element   olinadi   va   u   X   qidiruv   argumenti   bilan
taqqoslanadi.   Agar   AM=X   bo’lsa,   u   holda   qidiruv   yakunlanadi;   agar
AM<=""   p="">   bo’lgan     barcha     elementlar     kelgusi     qidiruvdan
chiqarib     yuboriladi.     Xuddi   shuningdek,     agar     AM     >X     bo’lsa,     u
holda     indekslari     M     dan     katta     bo’lgan     barcha   elementlar   kelgusi
qidiruvdan   chiqarib   yuboriladi.   M     ixtiyoriy     tanlanganda     ham     taklif
qilinayotgan   algoritm   korrekt   ishlaydi. Shu   sababali   M   ni   shunday
tanlash     lozimki,     tadqiq     qilinayotgan     algoritm   samaraliroq     natija
bersin,     ya’ni     uni     shunday     tanlaylikki,     iloji     boricha     kelgusi
jarayonlarda  ishtirok  etuvchi  elementlar  soni  kam  bo’lsin.  Agar  biz
o’rtacha   elementni,   ya’ni   massiv   o’rtasini   tanlasak   yechim   mukammal
bo’ladi.   Misol   uchun   butun   sonlardan   iborat,   o’sish   bo’yicha
tartiblangan massivdan ikkilik qidiruv usuli yordamida key kalitga mos
elementni izlash dasturini ko’rib chiqamiz.   
Dastur kodi: 
#include  
using namespace std;  
int main(){  
    int n;cout<<"n=";cin>>n;  
    int k[n];  
    for(int i=0;i>k[i];  
    int key, search;  
    cout<<"qidirilayotgan elementni kiriting=";cin>>key;  
int low = 0;  
int hi = n-1; int j=0;   while (low <= hi){  
    int mid = (low + hi) / 2;j++;  
    if (key == k[mid]){  
        search = mid;  
        cout<<"qidirilayotgan  element  "<
"<
        system("pause");  
        exit(0);  
    }  
    if (key < k[mid])   
             hi = mid - 1;  
      else low = mid + 1;  
    }  
    search=-1;  
    cout<
topilmadi\n";  
system("pause");  
}       
Dastur natijasi 
n=6  
1 2 3 4 5 6  
qidirilayotgan   elementni   kiriting=6     qidirilayotgan   element   6   o'rinda
turibdi va u 3 ta solishtirishda toplidi.
2.4.  Qidiruv jadvalini qayta tartibga keltirish 
Umuman       olganda,       jadvalda       har       bir       elementni       qidirish
ehtimolligini   qandaydir   bir   qiymat   bilan   izohlash   mumkin.   Faraz
qilaylik jadvalda qidirilayotgan element    mavjud.    U    holda    qidiruv amalga         oshirilayotgan         jadvalni         diskret     holatga     ega         tizim
sifatida    qarash    mumkin    hamda    unda    qidirilayotgan elementni
topish  ehtimolligi  –  bu  tizim  i-chi  holati  ehtimolligi  p(i)  deb  olish
mumkin.   Jadvalni     diskret     tizim     sifatida     qaraganimizda,     undagi
taqqoslashlar     soni   diskret   tasodifiy   miqdorlar   qiymatlarini   matematik
kutilmasini   ifodalaydi.   Ma’lumotlar   jadvalda   quyidagi   ko’rinishda
tartiblangan   bo’lishi   lozim:   Bu         shart         taqqoslashlar         sonini
kamaytirib,         samaradorlikni         oshiradi.     Sababi,   ketma-ket     qidiruv
birinchi     elementdan     boshlanganligi     uchun     eng     ko’p     murojaat
qilinadigan   elementni   birinchiga   qo’yish   lozim.     Qidiruv         jadvalini
qayta    tartibga    keltirishning    eng    ko’p    ishlatiladigan  ikkita  usuli
mavjud. Ularni bir bog’lamli ro’yhatlar misolida ko’rib chiqamiz.  
1. Topilgan elementni ro’yhat boshiga qo’yish orqali qayta tartibga
keltirish.  
2. Transpozitsiya usuli. 
5.5.     Topilgan   elementni   ro’yhat   boshiga   qo’yish   orqali     qayta
tartibga keltirish 
Ro’yxatni   qayta   tartibga   keltirish     Topilgan   element   2.2-
rasmdagidek   birdaniga   ro’yhat   boshiga   joylashtiriladi.   Tuzilmadan   har
safar   birorta   element   izlab   topilsa   va   u   ro’yhat   boshiga   olib   borib
qo’yilaversa,     natijada     oxirgi     izlangan     elementlar     ro’yhat     boshiga
joylashib    qoladi  va   biz    oxirgi    vaqtlarda    izlangan    elementlarni    tez
izlab     topish     imkoniga     ega   bo’lamiz.       Boshida         q         ko’rsatkich
bo’sh,    p    esa    ro’yhat    boshini    ko’rsatadi;    p  ikkinchi  elementni
ko’rsatganda,     q     birinchini     ko’rsatadi.     Ro’yhat     boshi   ko’rsatkichi
(table) birinchi   elementni   ko’rsatadi.   Ro’yhatda   key   kalitli   element
topilsa,         u         p     ko’rsatkich     bilan,     undan     oldingi     element     esa     q
ko’rsatkich     bilan   belgilanadi.     Shu     topilgan     p     elementni     ro’yhat
boshiga  joylashtiriladi.  
Dastur  kodi
node *q=NULL;  
node *p=table;  
while (p !=NULL){         if (key == p->k){  
if (q == NULL) { //o‘rinlashtirish shart emas  
             search = p;  
 exit(0);  
 }  
        q->nxt = p->nxt;  
 p->nxt = table;  
        table = p;  
        exit(0);  
      }  
     q = p;  
    p = p->nxt;  
}  
search = NULL;   
             exit(0);  
5.6.  Transpozitsiya usuli  
Ushbu  usulda  topilgan  element  ro’yhatda  bitta  oldingi  element
bilan     o’rin   almashtiriladi.     Agarda     mazkur   elementga   ko’p   murojaat
qilinsa,   bittadan oldinga surilib   borib  natijada   ro’yhat  boshiga  kelib
qoladi.  Ushbu   usulning  afzalligi shundaki,  tuzilmada   ko’p  murojaat
qilinadigan     elementlar     ro’yhat     boshiga     bitta   qadam   bilan   intiladi.
Ushbu   usulning   qulayligi   u   nafaqat   ro’yhatda,   balki   tartiblanmagan
massivda ham  samarali  ishlaydi  (sababi  faqatgina  ikkita  yonma-yon
turgan     element     o’rin   almashtiriladi).     Bu  usulda   uchta   ko’rsatkichdan
foydalanamiz
p – ishchi ko’rsatkich  
q – yordamchi ko’rsatkich, p dan bitta qadam orqada bo’ladi  
s – yordamchi ko’rsatkich, p dan ikkita qadam orqada bo’ladi       Transpozitsiya  usuli  bilan  ro’yhatni  qayta  tartibga  keltirish  Biz
tomonimizdan  topilgan  uchinchi  element  ro’yhat  boshiga  bir  qadam
suriladi     (ya’ni         ikkinchi         bo’lib         qoladi).         Birinchi         element
ko’rsatkichi    uchinchi elementga    joylashtiriladi,    ikkinchi    element
ko’rsatkichi         to’rtinchi,         shunday   qilib     uchinchi     element     ikkinchi
joyga  joylashib  qoladi.  Agar  mazkur  elemenga yana bir bor murojaat
qilinsa, u holda u ro’yhat boshida bo’lib qoladi.  
node *s=NULL;  
node *q=NULL;  
node *p=table;  
while (p != NULL){ 
    if (key == p->k){ //transponerlaymiz  
          if( q ==NULL){//o‘rinlashtirish shart emas    
            search=p;  
            exit(0);  
           }           
          q->nxt=p->nxt;  
          p->nxt=q;  
          if (s == NULL) table = p;  
          else s->nxt = p;  
    search=p;  
    exit(0);  
    }  
    s=q;  
    q=p;  
    p=p->nxt;  
}                 search=NULL;   
              exit(0);  
Ishni bajarishga oid namuna 
Talabalar     ma’lumotlaridan     –     FIO     va     adresdan     iborat     jadval
berilgan.  Binar  qidiruvdan  foydalanib  TTJ  da  yashaydigan  talabalar
ro’yhatini  hosil  qiling. 
Algoritm  
1. Jadvalga n ta talaba FIO va adreslarini kiritamiz.  
2.  Binar    qidiruvni    jadvalning    birorta    maydonida    amalga
oshirish    uchun jadvalni    shu    maydoni    bo’yicha    tartiblab    olish
kerak.    Shuning    uchun  masalaning qo’yilishida  adresi  TTJ  bo’lgan
talabalarni     topish     kerakligi     sababli     jadval     ma’lumotlarini         adres
maydoni         bo’yicha         saralab         olamiz.         Masalani     yechishda
to’g’ridan-to’g’ri tanlash orqali saralashdan foydalanilgan.  
3.   key   kalitga   mos   elementni   izlash   chegaralarini   aniqlab   olamiz.
Dastlab u [0,n] oralig’ida, ya’ni low=0,hi=n.  
4.   Agar   low<=hi   bo’lsa,   oraliq   o’rtasini   hisoblaymiz.
mid=(low+hi)/2  
5. Agar   mid   o’rnida   turgan   talaba   adresi   TTJ   bo’lsa,   element
topildi,   search=mid va 7-qadamga o’tiladi, aks holda keyingi qadamga
o’tiladi.  
6. Agar  “TTJ”  so’zi  alifbo  bo’yicha  mid  o’rnida  turgan  talaba
adresi     qiymatidan   kichik  bo’lsa,   izlash  quyi  chegarasi   o’zgaradi,  ya’ni
mid o’rnida turgan  elementdan bitta oldingi elementgacha olinadi, ya’ni
hi=mid-1.   Aks holda, yuqori   chegara   o’zgaradi   –   mid   dan   keyingi
elementdan  to  oxirgi  elementlar  oralig’i  olinadi, ya’ni low=mid+1. 4-
qadamga o’tiladi.  
7. Agar   topilgan   elementdan   oldin   turgan   elementning   (mid-1)
ham     adres   maydoni     TTJ     bo’lsa,     search--,     ya’ni     bitta     oldingi
elementga     o’tamiz     va     shu   qadamni   boshidan   bajaramiz.   Aks   holda
keyingi qadamga o’tiladi. 8. Joriy  (search  ko’rsatayotgan)  elementdan
boshlab  adresi  “TTJ”  ga  teng bo’lgan  talaba  ma’lumotlarini  ekranga chiqaramiz.  Agar  adresi  “TTJ”  dan  farq qiladigan talaba chiqib qolsa,
algoritm tugallanadi.  
Dastur kodi  
#include   
using namespace std;  
int main(){  
int n;cout<<"n=";cin>>n; 
struct Guruh{  
       string fio,adres;  
       }talaba[n];  
       for(int i=0;i<="" p="">
               cout<>talaba[i].fio;  
               cout<<"adres=";cin>>talaba[i].adres;  
               }  
             //jadval   binar   qidiruv   olib   boriladigan   maydoni   bo‘yicha
tartiblangan                    
//bo‘lishi kerak  
       for(int i=0;i<="" p="">
       for(int j=i+1;j
               if(talaba[i].adres>talaba[j].adres){  
               Guruh h=talaba[i];  
               talaba[i]=talaba[j];  
               talaba[j]=h;  
               }  
         for(int i=0;i<="" p="">
                 cout<
                 cout<<="" p=""> int low = 0,hi = n-1,search=-1,q=0;  
string key="TTJ";  
while(low<=hi){  
    int mid = (low + hi) / 2;  
    q++;  
    if (key == talaba[mid].adres){  
        search = mid;  
        break;  
    }  
    if (key < talaba[mid].adres)   
             hi = mid - 1;  
 else low = mid + 1;  
}  
    if(search!=-1)  cout<<"qidirilayotgan  el  "<
turibdi va "<
    else {cout<
          system("PAUSE");  
          return EXIT_SUCCESS;  
          }  
          while(talaba[search-1].adres==key) search--;  
          while(talaba[search].adres==key) {  
                    cout<
"<
                    search++; 
 }  
          system("pause");   }  
Dastur natijasi:  
n=5  
1-talabaning fio=fam1  
adres=Toshkent  
2-talabaning fio=fam2  
adres=TTJ  
3-talabaning fio=fam3  
adres=ijarada  
4-talabaning fio=fam4  
adres=uchastkada  
5-talabaning fio=fam5  
adres=TTJ  
fam2 TTJ  
fam5 TTJ  
fam1 Toshkent  
fam3 ijarada  
fam4 uchastkada  
qidirilayotgan el 1-orinda turubdi va 2 ta solishtirishda topildi  
fam2 TTJ  
fam5 TTJ
Chiziqli izlash algoritimi .
Chiziqli   qidirish   —   juda   oddiy   qidirish   algoritmi   hisoblanadi.
Ushbu   turdagi   qidiruvda   barcha   elementlar   bo yicha   ketma-ket   qidiruvʻ
amalga   oshiriladi.   Har   bir   element   tekshiriladi   va   agar   mos   keladigan narsa   topilgan   bo lsa,   u   qaytarib   beriladi,   aks   holda   qidirish   ma lumotʻ ʼ
to plash oxirigacha davom etadi.	
ʻ
Bu   algoritm   chiziqli   ma’lumotlar   tuzilmalaridan   (masalan,   array)
biror bir shart yoki qiymat bo’yicha element qidirishga mo’ljallangan.
Chiziqli qidirish algoritmi qanday ishlaydi
Aytib   o’tganimizdek,   bu   algoritm   juda   ham   sodda   ishlaydi   va
tasavvur qilishga ham oson.
Arrayning birinchi elementidan tekshirish boshlanadi.
Element olinadi va u berilgan shartga tekshirib ko’riladi.
Agar   shartni   qanoatlantirsa,   uning   qiymati   yoki   joylashgan   o’rni
(qiymati yoki shunchaki true) qaytariladi va algoritm tugaydi.
Shart   qanoatlantirilmasa,   keyingi   elementga   o’tiladi   va   2-qadamga
qaytiladi
Array tugab, element topilmasa, buni anglatuvchi qandaydir qiymat
qaytariladi (-1 yoki false…)
Ko’rinishidan   ko’pdek   tuyulsa   ham,   aslida   bu   algoritm   hayotdagi
odatiy   qidirish   bilan   bir   xil   ishlaydi.   Keling   uni   visual   holda   tasavvur
qilamiz.
Algoritm   implementatsiyasiga   o’zingiz   mustaqil   harakat   qilib
ko’ring, yoki keyingi videodarsimizga o’ting.
Algoritm murakkabligi
Chiziqli   qidirish   algoritmining   vaqt   bo’yicha   murakkabligi   uning
nomidan   ham   ma’lum,   ya’ni   chiziqli   O(n).   Ya’ni,   eng   yomon   holat
sifatida   element   array   bo’lmagan   holat   qaraladi   va   bunda   algoritm
maksimum n ta qadam ish bajarishi kerak bo’ladi.
Xotira jihatidan, algoritm ortiqcha joy talab qilmaydi.
Chiziqli   qidirish   algoritmi   ko’pincha   real   hayotdagi   holatlar   uchun
ancha   sekinlik   qiladi.   Shuning   uchun   ham   bunday   holatlarda   undan
boshqa   tezroq   ishlaydigan   algoritmlar   qo’llanilishi   kerak   bo’ladi
(masalan,   ikkilik   qidirish).   Lekin,   bu   algoritmning   ham   ikkilik
qidirishdan o’ziga yarasha avfzal tomonlari mavjud. Algoritm
Chiziqli qidirish ( Massiv A, Qiymat x)
Qadam 1: Set i to 1
Step 2: if i > n then go to Qadam 7
Qadam 3: if A[i] = x then go to step 6
Qadam 4: Set i to i + 1
Qadam 5: Go to Step 2
Qadam 6: Print Element x Found at index i and go to step 8
Qadam 7: Print element not found
Qadam 8: Chiqish
Chiziqli qidish dasturi
Live demo
#include <stdio.h>
#define MAX 20
// array of items on which linear search will be conducted.
int intArray[MAX] = 
{1,2,3,4,6,7,9,11,12,14,15,16,17,19,33,34,43,45,55,66};
void printline(int count) {
   int i;
   for(i = 0;i <count-1;i++) {
      printf("=");
   }
   printf("=\n");
}
// this method makes a linear search. 
int find(int data) {    int comparisons = 0;
   int index = -1;
   int i;
   // navigate through all items 
   for(i = 0;i<MAX;i++) {
      // count the comparisons made 
      comparisons++;
      // if data found, break the loop
      if(data == intArray[i]) {
         index = i;
         break;
      }
   }   
   printf("Total comparisons made: %d", comparisons);
   return index;
}
void display() {
   int i;
   printf("[");
   // navigate through all items 
   for(i = 0;i<MAX;i++) {
      printf("%d ",intArray[i]);
   }
   printf("]\n");
}
void main() {    printf("Input Array: ");
   display();
   printline(50);
   //find location of 1
   int location = find(55);
   // if element was found 
   if(location != -1)
      printf("\nElement found at location: %d" ,(location+1));
   else
      printf("Element not found.");
} Xulosa
Biznig   hayotimizda   algoritmlarning   qanchalik   muhim   ekanligini
ko’rdik.   Demak   bizning   o’rab   turgan   atrof   muhitdagi   har   qanday
jarayonlar   qaysidir   algoritm   asosida   amalga   oshadi.   O’z   o’rnida   bu
algaritmlarni   qo’llanilishi   va   natijalariga   qarab   turli   xil   turlari   ham
mavjud ekan. Biz yuqorida bir qanch  algoritm  turlari va ularni turli xil
dasturlash   tillarida   ishlash   jarayonini   ko’rdik.   Algoritm   deganda,   biror
maqsadga   erishishga   qaratilgan   ijrochi   bajarishi   uchun   mo'ljallangan
ko‘rsatma   (buyruq)laming   aniq,tushunarli   va   chekli   ketma-ketligi
tushuniladi.
Bu algoritm tushunchasining matematik ta'rifi bo’lmasa ham intuitiv
ma'noda  algoritmning   mazmunini  ochib  beruvchi  tavsifidir.  Algoritmni
intuitiv   ma’noda   bir   necha   misollarda   izohlaymiz.   Biror-bir   narsani
taqiqlovchi qoidalar algoritm bo’laolmaydi, masalan: «Chekish mumkin
emas»,   «Begonalarning   kirishi   taqiqlanadi»,   «Kirish»,   «Chekish   uchun
joy»   kabi   birorbir   narsaga   ruxsat   etuvchi   qoidalar   ham   algoritmga   xos
emas.   Lekin   «Svetoforni   yashil   rangida   o‘ting»   juda   sodda   bo'lsa   ham
algoritmdir.   Demak,   yuqorida   keltirilgan   misollardagi   ko‘r-   satmalar
ketma-ketligi algoritm va bu algoritmlarni bajarayotgan inson — ijrochi
bo’lar   ekan.   Algoritm   ijrochisi   faqat   insonmi,   degan   savol   berishingiz
tabiiy. Bu savolga javob quyidagicha:
Algoritm   ijrochisi   —   algoritmda   ko'rsatilgan   buyruq   yoki
ko‘rsatmalarni  bajara  oladigan  abstrakt  yoki  real  (texnik  yoki  biologik)
sistema. Foydalanilgan adabiyotlar ro’yxati
1. A New Fast and Efficient Image Codec Based on set Partitioning in
Hierarchical Trees.  William A.Pearlman.
2. Dvuxetapniy Transformatsionniy metod kodirovaniya izobrajeniya.
I.N.Ayzenberg, L.P.Yaroslavskiy.
3. Kodirovaniya izobrajeniy s posleduyushim vozmojnim optimalnim
dekodirovaniya.  A.V.Shokurov.
4. Prezintatsiya K.YU.Polyakov. Kodirovaniya informatsii.
5. A.V.Shokurov , “Tasvirlarni optimal dekodlashning so’nggi 
usullari ”, 2007
6. Amir Said , “Tasvirni iyerarxik daraxtga bo’lgan holda tez va 
unumli kodlash usullari ”, 1996
Internet manbalari
1. http://www.icst.pku.edu.cn/course/ImageProcessing/2009/
resource/cr1221.pdf
2. http://www.visionbib.com/bibliography/image-proc146.html
3. http://www.debugmode.com/imagecmp/
4. http://chernykh.net/content/view/810/891/
5. http://informatika.sch880.ru/p22aa1.html
6. http://www.sketchpad.net/default.htm
7. www.ziyonet.uz     .
8. www.kitob.uz     
9. www.inbox.uz

Mavzu: Izlash algoritimlari. Chiziqli izlash. Reja: 1. Kirish. 2. Asosiy qisim. 1. Algoritm haqida tushuncha va algoritm turlari. 2. Izlash algoritmlari. 3. Chiziqli izlash algoritimi 3. Xulosa. 4. Foydalanilgan adabiyotlar ro’yxati.

Kirish Hozirgi kunda biror bir sohada ishni boshlash va uni boshqarishni kompyutersiz tasavvur qilish qiyin. XXI asr savodxon kishisi bo’lishi uchun kompyuter savodxon bo’lish, axborot texnologiyalarini puxta egallamoq lozim. Har bir mutaxassis, u qaysi sohada ishlashdan qat’iy nazar, o’z vazifasini zamon talabi darajasida bajarishi uchun axborotni ishlab chiqaruvchi vositalar va ularni ishlatish uslubiyotini bilish va ishlash ko’nikmalarga ega bo’lishi zarur. Inson hayoti davomida katta-kichik vazifalar yoki masa- laiarni hal etishni o‘z oldiga maqsad qilib qo‘yadi. Odatda, u o‘z maqsadiga erishishi uchun bajarishi lozim bo'lgan amal yoki ishlarini hayotiy tajribasi yoki o'zlashtirgan bilimiga asos- lanib ma'lum bir tartibga keltiradi. Bunga hayotimizdan xilma- xil misollar keltirish mumkin. Misol. Ko‘chadan o'tish maqsad qilib qo‘yilgan bo'lsin. IJ holda ko‘chadan o'tayotgan kishi hammamizga odatiy hol bo‘lib qolgan quyidagi harakatlarni bajarishi lozim bo'ladi: 1) chap tarafga qaralsin, agar transport vositasi yo‘q bo‘lsa, 2- bandga o'tilsin, aks holda 1-bandga o'tilsin; 2) o‘ng tarafga qaralsin, agar transport vositasi yo‘q bo‘lsa, 3- bandga o'tilsin, aks holda 1-bandga o'tilsin; 3) ko'chadan o'tilsin.

1. Algoritm haqida tushuncha va algoritm turlari. Algoritm deganda, biror maqsadga erishishga qaratilgan ijrochi bajarishi uchun mo'ljallangan ko‘rsatma (buyruq)laming aniq,tushunarli va chekli ketma-ketligi tushuniladi. Bu algoritm tushunchasining matematik ta'rifi bo’lmasa ham intuitiv ma'noda algoritmning mazmunini ochib beruvchi tavsifidir. Algoritmni intuitiv ma’noda bir necha misollarda izohlaymiz. Biror-bir narsani taqiqlovchi qoidalar algoritm bo’laolmaydi, masalan: «Chekish mumkin emas», «Begonalarning kirishi taqiqlanadi», «Kirish», «Chekish uchun joy» kabi birorbir narsaga ruxsat etuvchi qoidalar ham algoritmga xos emas. Lekin «Svetoforni yashil rangida o‘ting» juda sodda bo'lsa ham algoritmdir. Demak, yuqorida keltirilgan misollardagi ko‘r- satmalar ketma-ketligi algoritm va bu algoritmlarni bajarayotgan inson — ijrochi bo’lar ekan. Algoritm ijrochisi faqat insonmi, degan savol berishingiz tabiiy. Bu savolga javob quyidagicha: Algoritm ijrochisi — algoritmda ko'rsatilgan buyruq yoki ko‘rsatmalarni bajara oladigan abstrakt yoki real (texnik yoki biologik) sistema. Ijrochi bajara olishi uchun algoritm unga tushunarli bo’lishi lozim. Algoritm ijrochi tushunadigan tilgagina emas, balki uning bilim va malakasiga ham mos bo’lishi kerak. Aks holda ijrochi birorta ham ko'rsatmani bajara olmasligi mumkin. Ijrochi bajara olishi mumkin bo’lgan ko‘rsatma yoki buyruq- lar to‘plami ijrochining ko‘rsatmalar sistemasi deyiladi. Masalan, «16 sonidan kvadrat ildiz chiqarilsin» ko'rsatmasi 2-sinf o'quvchisining ko'rsatmalar sistemasiga tegishli bo’lmaydi, lekin 8-sinf o'quvchisining ko‘rsatmalar sistemasiga tegishli bo’ladi. Algoritm ijrochiga tushunarli bo’lishi uchun ijrochining imkoniyatlarini bilish lozim. Agar ijrochi inson bo’lsa, u holda algoritm insonning imkoniyatlaridan kelib chiqib tuzilishi kerak. Bunda ko‘zlangan maqsad va algoritmdan kelib chiqib inson tushunadigan til, insonning bilimi, hayotiy tajribasi, kasbiy malakasi, yoshi, qolaversa, jismoniy imkoniyatlari hisobga olinishi

zarur. Agar ijrochi texnik vosita (masalan, kompyuter, elektron soat, dastgohlar) bo’lsa, u holda algoritm shu texnik vositaning imkoniyatlaridan kelib chiqib tuzilishi kerak. Agar ijrochi koinpyuter hisoblanib, uning dasturiy ta‘mi- notida berilgan («Karra jadvalini hosil qilish») algoritmni bajara oladigan dastur (masalan, elektron jadvallardan birortasi ham) bo'lmasa, u holda hech qanday natijaga erishib bo'lmaydi. Demak, berilayotgan har qanday ko‘rsatma ijrochining ko‘r- satmalar sistemasidan olinishi, ya'ni ijrochi uni qanday bajarishni bilishi kerak ekan. Bu algoritmning tushunarlilik xossasini ifodalaydi. Shuni ta‘kidlash joizki, informatikada algoritmning asosiy ijrochisi sifatida kompyuter xizmat qiladi. Algoritmning tavsifida «biror maqsadga erishishga qaratilgan»jumlasi qo‘llanilgan. Bu maqsadni yuqorida keltirilgan misollarda ko'rishimiz mumkin: ko'chadan o‘tish, g'ishtlar sonini hisoblash, yig‘indini hisoblash. Bular algoritmning natijaviylik (cheklilik) xossasi bilan bog‘liq. Bu xossaning mazmuni shundan iboratki, har qanday algoritm ijrochi chekli qadamdan so‘ng oxir-oqibat ma’lum bir yechimga olib kelishi kerak. Shuni ta'kidlash joizki, algoritm awaldan ko‘zlangan maqsadga erishishga olib kelmasligi ham mumkin. Bunga ba'zan algoritmning noto‘g‘ri tuzilgani yoki boshqa xatolik sabab bo'lishi mumkin. Ikkinchi tomondan, qo'yilgan masala ijobiy yechimga ega bo‘lmasligi ham mumkin. Lekin salbiy natija ham natija deb qabul qilinadi. Demak, algoritm doimo chekli qadamdan iborat bo'lishi va biror natija berishi kerak ekan. Bu algoritmni diskretlilik (uzluklilik, alohidalik) xossasiga olib keladi. Algoritmda masalani yechish jarayoni alohida olingan sodda ko‘rsatmalar ketma- ketligini qadam-baqadam bajarishdan iborat boMishi kerak. Bu xossa misollardan yaqqol ko‘rinib turibdi. «Angliyada avto- mobilni yo’lning chap qismida haydang» qoidasi talabnoma bo’lgani bilan uzluksizlik xarakteriga ega va shuning uchun ham algoritm hisobiga qo'shilmaydi. E'tiboringizni yana bir narsaga qaratamiz. Keltirilgan misollarda quyidagi jumlalar bor:

«Ko‘chadan o‘tish» (ariqdan yoki dengizdan emas), “Eni 6 metr va bo‘yi 10 metr bo‘lgan joyni” (kilometr emas), «eni 12 santimetr va bo‘yi 25 santimetrli g‘ishtlar» (eni 5 santimetrva bo‘yi 100 santimetrli g'ishtlar emas). Bu jumlalar va qavs ichida yozilganlarni taqqoslasangiz, olinadigan natija shu jumlalardagi «qiymat»larga chambarchas bog'liq ekanligini tushunasiz. Agar bu «qiymatlar» o'zgarsa, masalan, qavs ichidagilarga, olinadigan natija umuman boshqacha bo'lishini ko'rish qiyin emas. Qiymat so‘zini qo‘shtirnoq ichiga olganimizga sabab, siz doimo qiymat so'zini faqat sonlar bilan bog'Iab o'rganib kelgansiz. Lekin, bilingki, biror masala uchun qiymat har xil turdagi obyektlar bo'lishi mumkin ekan. Demak, har bir algoritmning natijasi awaldan berilgan, ya’ni boshlang'ich qiymatiarga bog'liq bo'lar ekan. Boshlang'ich qiymatlar turli natijalarga olib kelishiga yana bir hayotiy misolga o'zingiz javob bera olasiz: sizga va mehmonga kelgan do‘stlarin- gizga pishiralayotgan palovga 20 gramm tuz solish o'rniga 200 gramm tuz solishsa natija bir xil bo’ladimi? Har bir algoritm — bu amallami belgilovchi qoida bo'lib, ulaming zanjiri natijasida biz boshlang‘ich qiymatlardan izlangan natijaga kelamiz. Bunday amallar zanjiri algoritmik jarayon, har bir amal — algoritmning qadami deb ataladi. Yana boshlang‘ich qiymat va natija bo'lishi mumkin bo'lgan narsalarning tahliliga qaytamiz. Ko'rdikki, har bir algoritm uchun boshlang’ich qiymatlaming turli hollarini tanlash mumkin. Masalan, g'ishtlar masalasi algoritmi uchun boshlangMch qiymatlarni tavsiflashda «santimeir» so‘zlarini «uzunlik o‘lchovlari» kabi tushunish mumkin. Bu holda hosil bo’ladigan natijaning miqdori o‘zgaradi, xolos. Ko‘p algoritmlar boshlang’ich qiymatlarning turli hollari uchun o‘z kuchini saqlab qoladi. Qo‘shish algoritmini ixtiyoriy natural sonlar jufti uchun qo’llash mumkin. Awal aytib o’tilgan algoritmlarning aniqlangan bu xossasi (ulami boshlang’ich qiymatlarning juda ko‘p sondagi hollariga qo’llash mumkinligi) ommaviylik deb ataladi. Algoritmlarning juda ko‘p xususiy hollarda ishlashi shunday o‘ta muhim va ahamiyatli xossa, shu sababli ancha vaqtgacha uni algoritmning ilmiy ta'rifiga kiritilishi shart deb hisoblandi. Bu ko'pgina qoidalarni fan sohasidan chiqarib tashlar (ularni «oz miqdordagi»