logo

“Lingvistikaning ba’zi bir misollari. Algoritimlarni loyhalash va tahlil qilish

Загружено в:

13.08.2023

Скачано:

0

Размер:

153.931640625 KB
O`zbekiston  Respublikasi
Oliy va o`rta maxsus ta’lim vazirligi
     KURS ISHI
Mavzu: “Lingvistikaning ba’zi bir misollari. 
Algoritimlarni loyhalash va tahlil qilish”
Samarqand -2023 Reja:
1.Kirish
2. Matematik lingvistika
3. Algoritimlarni loyhalash va tahlil qilish
    a. Algoritm tushunchasi.
    b. Algoritmlarni loyihalash.
    c. Algoritmlarni loyihalashning asosiy bosqichlari.
    d. Algoritm tahlili tushunchasi.
    e. Boshlang’ich bеrilganlar sinflari.
    f. Algoritm tahlining asosiy tushunchalari.
4.Xulosa
5.Amaliy ish
6.Foydalanilgan adabiyotlar Kirish
Matematik lingvistika  -1) tilshunoslikning tilni tadqiq etish va o rganishdaʻ
matematik   usullardan   foydalanuvchi   bo limi;   2)   mat.ning   tabiiy   tillar   bilan   ba zi	
ʻ ʼ
bir   jihatlardan   o xshash   bo lgan   mavhum   strukturalarni   o rganuvchi   bo limi.	
ʻ ʻ ʻ ʻ
Matematik   lingvistika   tilshunoslik   bo limi   sifatida   tabiiy   tillar   hodisalarini   va	
ʻ
ularni   tadqiq   etish   jarayonlarini   mavhumiy-semiotik   modellashtirish   usulidan
foydalanadi;   matematik   fan   sifatida   esa   ana   shu   modellarning   eng   umumiy
xossalarini   tadqiq   etadi   va   ularning   tuzilish   usullarini   o rganadi.   Har   ikkala	
ʻ
ma nodagi   Matematik   lingvistika   ayni   bir   tushunchaviy   apparatdan   foydalanadi,	
ʼ
ular   orasida   shunchalik   yaqin   bog liqlik   mavjudki,   uni   ma lum   shartlar   bilan	
ʻ ʼ
yagona   semiotik   fan   sohasi   deb   hisoblash   mumkin.Matematik   lingvistika   20-
asrning   50-yillarida   paydo   bo lgan.   Uning   asosiy   tushunchalari   —   asos   qilib	
ʻ
olingan   belgi-ishoralar   (alifbo,   lug at)   to plami   va   ma lum   alifbo   belgi-ishoralari	
ʻ ʻ ʼ
(so z   shakllar,   iboralar   to plami)   izchilliklari   (zanjirlari)   to plami   kabi	
ʻ ʻ ʻ
tushunchalardir.   Bu   asosiy   tushunchalar   tilning   har   bir   sathida   qo llanadi.   O z	
ʻ ʻ
maqsad-vazifasiga   ko ra,   Matematik   lingvistika   eng   avvalo   nazariy   tilshunoslik	
ʻ
vositasi   hisoblanadi.   Ayni   paytda   uning   usul   va   yo llari   amaliy   lingvistik	
ʻ
tadqiqotlarda — matnga avtomatik ishlov berishda, avtomatik tarjimada, inson va
EHM   o rtasidagi   aloqa   bilan   bog liq   tadqiqotlarda   keng   qo llanmoqda.   EHM	
ʻ ʻ ʻ
larning   paydo   bo‘lishi   (   XX   asrning   2-yarmi)   bilan   ALGORITMtushunchasi
PROGRAMMALASHTIRISH   tushunchasi   bilan   bog‘landi.Ko‘plab   algoritmik
tillar  paydo bo‘ldi: Fortran, Paskal, Beysik….XII  asrda Yevropada al  – Xorezmi.
matematik   traktatining   lotincha   tarjimasi   chiqdi.   O‘sha   paytlar   Algoritm   deganda
o‘nlik   sanoq   sistemasida   arifmetik   amallarning   bajarilash   qoidalari   nazarda
tutilgan.   Hozirgi   davrda   algoritm   barcha   soxalarda   qo‘llanib   kelinmoqda.Ingliz
matematigi   Alan   Tyuring   1935   –   1936   yillarda   «mantiqiy   hisoblash   mashinasi»
nazariyasini  yaratdi.  Ishlab  chiqilgan  «Tyuring  Mashina»si   bo‘lajak   matematiklar
va   kompyuterщiklar   uchun   majburiy   o‘qitiladigan   bo‘ldi.   London
mehmonxonalarining birida : «Bu yerda kodlarning buzuvchisi va informatikaning
pioneri   Alan   Tyuring   (1912   –   1954),   tug‘ilgan»   deb   yozib   qo‘yilgan.Rus
matematigi   Andrey   Markov   1947   yil   «normal   algoritm»   tushunchasini   kiritdi   va
tizimlashgan   va   qat’iy   algoritmlar   umumiy   nazariyasini   yaratdi.   Belgini   qayta
ishlashga mo‘ljallangan zamonaviy tillar (Prolog) Markovning «normal algoritm»
lariga asoslanadi.O‘nli sanoq sistemasida Butun sonlar va o‘nli kasr bilan arifmetik
amallarning   bajarilish   qoidasi   birinchi   bo‘lib,   buyuk   olim   Muxammad   ibn   Muso
al-Xorazmi   (arabchadan   tarjimasi   «Muxammad   Muso   o‘g‘li   Xorazmdan»,   qisqa
qilib   Al-Xorazmiy   deyiladi)   tomonidan   ishlab   chiqilgan.Al-Xorazmiy   IX   asrda
Xiva   shahrida   yashab   ijod   qilgan.   Arab   tilida   yozilgan   asarlari   yo‘qolib   ketgan, ammo XII asrda lotin tiliga tarjima qilingan nusxalari saqlanib qolingan. Shu orqali
G arbiy   Yevropa   O‘nli   sanoq   sistemasida   Butun   sonlar   va   o‘nli   kasr   bilanʻ
arifmetik amallarning bajarilish qoidasi bilan tanishgan.
           Algoritm  ta’rifi. Elektron hisoblash mashinalarining vujudga kelishiga qadar
algoritmga har xil ta’rif berib kelindi. Lekin ularning barchasi ma’no jihatdan bir-
biriga juda yaqin bo‘lib, bu ta’rif hozirgi kunda quyidagicha talqin qilinadi.Ta’rif.
Algoritm deb, biror masalani yechish uchun ma’lum qoidaga asosan bajariladigan
amallarning   chekli   ketma-ketligiga   aytiladi   yoki   aniq   natija   beruvchi   sodda
hisoblashlar   ketma-ketligi.Yoki   boshqacha   aytsak   algoritm-bu   to‘g‘ri   aniqlangan
hisoblash   jarayoni   bo‘lib,   natijada   kirishda   berilgan   m-tlarni   chiquvchi   m-tlarga
aylantirib beradi, ya’ni algoritm kiruvchi m-tlarni chiquvchi m-tlarga aylantiruvchi
hisoblash qadamlari ketma-ketligidan iborat jarayondir. Masalan,  amaliyotda juda
ko‘p   uchraydigan   masalalardan   biri   bu   -elementlar   ketma-ketligidan   ma’lum
birlarini   aniqlash   masalasi   ham   aniq   algoritm   asosida   yechiladi.   Konkret   masala:
(4,6,-9,43,-11,7,91,-15)   sonlar   ketma-ketligidan   manfiylarini   aniqlash   masalasida,
kiruvchi   ketma-ketlikdan   chiquvchi   (-9,-11,-15)   ketma-ketlikni   hosil   qilish   kerak
bo‘ladi. Bunday masalalar ko‘pincha oraliq masala sifatida uchraydi. Ma’lumki, bu
masalani bir necha hil algoritmlar yordamida echish mumkin. Bunday masalalarni
juda ko‘p keltirish mumkin.Algoritmlarni loyihalash. Algoritmni tanlash qo‘yilgan
masalaning   shartlari   va   boshqa   bir   nechta   parametrlar   asosida   amalga   oshiriladi:
ular elementlar soni, elementlar joylashish tartibi, EHM axitekturasi, elementlarga
qo‘yiladigan   masala   shartlari   va   b.   bo‘lishi   mumkin.   Shuning   uchun,   algoritmni
loyihalashda   masalaning   qo‘yilishi,   qo‘llash   mumkin   bo‘lgan   algoritmlar   sinflari
va   yuqoridagi   parametrlar   juda   chuqur   o‘rganilishi   kerak.   Algoritm   korrekt
deyiladi, agar  unng natijasi  barcha kiruvchi  mt  lar  uchun  aniq chiquvchi  mt  larni
tashkil  etsa.  Bu holda ihlatilgan korrekt  algoritm  berilgan masalani  yechib beradi
deyiladi.   Agar   algoritm   nokorrekt   bo‘lsa,   uning   natijasi   ba’zi   bir   kiruvchi   mt   lar
uchun   noto‘g‘ri   bo‘ladi   yoki   umuman   natija   bermasligi   mumkin.   Ba’zi   hollarda,
ya’ni   xatoliklarni   tekshirib   turish   imkoni   bo‘lganda,   nokorrekt   algoritmlar   ham
foydali   bo‘lishi   mumkin.   Ko‘pincha   korrekt   algoritmlardan   foydalaish   maqsadga
muvofiq   hisoblanadi.Algoritm   samaradorligi.   Javob   berilishi   kerak   bo‘lgan
birinchi   jiddiy   savol:   qanday   qilib   “samarali   algoritm”   tushunchasini   aniqlash
mumkin?   Bir   qarashda   samaradorlikning   ishchi   ta’rifi   quyidagicha   ko‘rinishi
mumkin.1- ta’rif: algoritm samarador deb ataladi, agar ma’lumotlar kiritilganda uni
amalga oshirish tezkor bajarilsa.Albatta, samaradorlik nisbiy tushuncha bo‘lib, bir
nechta   algoritmlarni   solishtirish   orqali   aniqlanadi.Xossalari:Tushunarlilik   –
algoritmda   ijrochiga   berilayotgan   ko‘rsatmalar   aniq   mazmunda
bo‘lishi;Diskretlilik   –   algoritmlarni   chekli   qadamlardan   tashkil   qilib   bo‘laklash imkoniyati   ;Cheklilik   –   bajarilayotgan   algoritm   chekli   qadamlarda   natijaga   olib
kelishi;Natijaviylik - natijaning bo‘lishi;Ommaviylik – har bir algoritm mazmuniga
ko‘ra   bir   turdagi   masalalarning   barchasi   uchun   ham   o‘rinli   bo‘lishi   .Formallik   –
komandalarni   mexanik   bajarish   imkoniyati.Bu   xossa   robotlar,   kompyuterlar   va
boshqa qurilmalarda komandalarning ketma-ket bajarilishini ta’minlaydi.Algoritm
turlari : Chiziqli algoritm - deb hech qanday shartsiz faqat ketma-ket bajariladigan
jarayonlarga aytiladi.
                Tarmoqlanuvchi   algoritm   -   deb   ma’lum   shartlarga   muvofiq   bajariladigan
ko‘rsatmalardan   tuzilgan   algoritmga   aytiladi.Takrorlanuvchi   algoritm   -   deb   biron
bir   shart   tekshirilishi   yoki   biron   parametrning   har   xil   qiymatlari   asosida   takroriy
xisblashlarni   bajaradigan  algoritmga   aytiladi.Chiziqli   algoritm   -   deb   hech   qanday
shartsiz   faqat   ketma-ket   bajariladigan   jarayonlarga   aytiladi.   Chiziqli   algoritm
strukturasiTarmoqlanuvchi   va   siklik   algoritmlarAlgoritmlarning   qo‘llanish
soxalari.   Algoritmlarni   amalda   juda   ko‘p   yo‘nalihlarda   qo‘llash   mumkin,
masalan:Inson genomini o‘qish masalasi-ya’ni inson DNK siga kiruvchi 100 ming
genlar   ketma-ketligini   identifikasiya   ilish;   Internet;   Elektron   tijorat;   Ishlab
chiqarish   va   elektron   tijoratda   resurslardan   optimal   foydalanish   va   b.Algoritmni
ishlab   chiqish   va   tahlil   qilish   usullari.   Yuqoridan   pastga   qarab   algoritmni
loyihalash yoki ketma-ket (bosqichma-bosqich) algoritmni loyihalash usuli - bu asl
muammo   (algoritm)   bir   qator   yordamchi   pastki   qismlarga   bo‘linganida
(subalgoritmlar)   sodda   va   elementar   operasiyalar   nuqtai   nazaridan   hal   qilingan
holda algoritmlarni tuzish usuli hisoblanadi ( proseduralar).
"Pastdan-yuqoriga" usuli, aksincha, oldindan aniqlangan subalgoritmlarning to‘g‘ri
to‘plamiga   tayanib,   funksional   ravishda   to‘liqroq   bajariladigan   kichik   vazifalarni
tuzadi, ulardan umumiyroq narsalarga o‘tadi va hokazo, biz echimni yoza oladigan
darajaga   yetguncha.   Ushbu   usul   pastki   qavatdagi   dizayn   usuli   sifatida
tanilgan.Algoritmlarning   tarkibiyli   hosil   qilish   prinsiplari   (algoritmlarni   ishlab
chiqishning tarkibiy usullari) algoritmlarni asosiy tarkibiy algoritmik birliklaridan
hosil   qilish,   ularning   ketma-ket   ulanishi   yoki   bir-birlariga   joylashtirilishi
algoritmni   o‘qilishini   va  bajarilishini   kafolatlaydigan  qoidalarni   yuqoridan   pastga
va   ketma-ketlikda   bajarish   tamoyillaridir.Strukturalangan   algoritm   -   bu   asosiy
algoritmik   tuzilmalarni   aniqlash   va   joylashtirish   sifatida   taqdim   qilingan
algoritmdir.   Strukturalangan   algoritmda   statik   holat   (algoritmni   yangilashdan
oldin) va dinamik holat (yangilangandan keyin) bir xil mantiqiy tuzilishga ega, uni
yuqoridan   pastgacha   kuzatib   borish   mumkin   ("u   ham   o‘qiladi,   ham   bajariladi").
Algoritmlarning strukturali  rivojlanishi  bilan uning tuzilishi  va bajarilishining har
bir   bosqichida   algoritmning   to‘g‘riligini   kuzatish   mumkin.Algoritmlarni
(dasturlarni) loyihalash va ishlab chiqishda keng qo‘llaniladigan usullardan biri bu modulli  usul. Modul  bu ma’lum bir algoritm yoki  uning ba’zi bir bloklari bo‘lib,
ularni   ajratib   va   yangilash   mumkin   bo‘lgan   ma’lum   nomga   ega.   Ba’zida   modul
barcha   algoritmlar   yordamchi   bo‘lsa   ham,   yordamchi   algoritm   deb   ataladi.Modul
xususiyatlari: funksional yaxlitlik va to‘liqlik (har bir modul bitta vazifani bajaradi,
lekin   to‘liq   va   to‘liq   bajaradi);   avtonomiya   va   boshqa   modullardan   mustaqillik
(vorislik   modulining   avvalgi   modul   ishlashidan   mustaqilligi;   bundan   tashqari,
ularning aloqasi faqat parametrlarni uzatish / qabul qilish va boshqarish darajasida
amalga oshiriladi);Algoritmlarning modulli dizaynining afzalliklari:-turli ijrochilar
tomonidan   katta   hajmli   algoritmni   (algoritmik   kompleks)   ishlab   chiqish
imkoniyati;   -eng   ko‘p   ishlatiladigan   algoritmlar   (subalgoritmlar)   kutubxonasini
yaratish   va   yuritish   qobiliyati;   algoritmlarni   sinash   va   ularning   to‘g‘riligini
asoslash; dizaynni soddalashtirish va algoritmlarni o‘zgartirish; algoritmlarni (yoki
algoritmlarning   komplekslarini)   ishlab   chiqish   (loyihalash)   murakkabligini
kamaytirish;   algoritmlarni   amalga   oshirishda   hisoblash   jarayonining
kuzatilishi.Algoritmni sinash - bu maxsus belgilangan testlar yoki test misollarida
algoritmning   to‘g‘riligi   yoki   noto‘g‘riligini   tekshirish   -   ma’lum   ma’lumotlar   va
natijalar   bilan   bog‘liq   muammolar   (ba’zan   ularni   yaqinlashtirish   etarli).   Testlar
to‘plami   minimal   va   to‘liq   bo‘lishi   kerak,   ya’ni   kirish   ma’lumotlar   to‘plamining
har   bir   alohida   turini,   ayniqsa   alohida   holatlarda,   tekshirishni   ta’minlaydi.
Algoritmlarning   ishlash   vaqtlari:Yilda   matematika   va   Kompyuter   fanlari,   an
algoritm  (tinglang)  ning  cheklangan   ketma-ketligi  aniq  belgilangan,   kompyuterda
qo‘llaniladigan yo‘riqnomalar, odatda muammolar sinfini hal qilish yoki hisoblash
uchun.  Algoritmlar   har   doim   aniq  va   ijro   etish   uchun  texnik   xususiyatlar   sifatida
ishlatiladi   hisob-kitoblar,   ma’lumotlarni   qayta   ishlash,   avtomatlashtirilgan
fikrlashva boshqa vazifalar.Sifatida samarali usul, algoritm cheklangan miqdordagi
makon   va   vaqt   ichida   ifodalanishi   mumkin,   va   aniq   belgilangan   rasmiy   tilda
hisoblash   uchun   a   funksiya.   Dastlabki   holatdan   va   dastlabki   kirishdan   boshlab
(ehtimol   bo‘sh),   ko‘rsatmalar   a   ta’riflaydi   hisoblash   bu,   qachon   ijro   etildi,
cheklangan   orqali   keladi   oxir-oqibat   "mahsulot"   ishlab   chiqaradigan   aniq
belgilangan   ketma-ket   holatlar   soni   va   yakuniy   holatida   tugatish.   Bir   holatdan
ikkinchisiga   o‘tish   shart   emas   deterministik;   sifatida   ma’lum   bo‘lgan   ba’zi
algoritmlar   tasodifiy   algoritmlar,   tasodifiy   kiritishni   qo‘shib   qo‘ying.Algoritm
tushunchasi   antik   davrdan   beri   mavjud.   Arifmetik   kabi   algoritmlar   bo‘linish
algoritmi, qadimiy tomonidan ishlatilgan Bobil matematiklari v. Miloddan avvalgi
2500   va   Misr   matematiklari   v.   Miloddan   avvalgi   1550   yil.   Yunoniston
matematiklari   keyinchalik   .da   algoritmlardan   foydalanilgan   Eratosfen   elagi   tub
sonlarni   topish   uchun,   va   Evklid   algoritmi   topish   uchun   eng   katta   umumiy
bo‘luvchi   ikkita   raqamdan.   Arab   matematiklari   kabi   al-Kindi   9-asrda   ishlatilgan
kriptografik   uchun   algoritmlar   kodni   buzish,   asoslangan   chastota   tahlili.So‘z algoritm o‘zi 9-asr matematikasi nomidan kelib chiqqan Muhoammad ibn Muso al-
Xuvrizmi,   kimning   nisba   (uni   kimligini   aniqlash)   Xorazm)   lotinlashtirildi
Algoritmi   sifatida.   Algoritmning   zamonaviy   konsepsiyasiga   aylanadigan
narsalarning   qisman   rasmiylashtirilishi   echishga   urinishlar   bilan   boshlandi
Entscheidungsproblem   (qaror   muammosi)   tomonidan   qo‘yilgan   Devid   Xilbert
1928   yilda.   Keyinchalik   rasmiylashtirishlar   "samarali   hisoblash"   yoki   "samarali
usul".   Ushbu   rasmiylashtirishlarga   quyidagilar   kiradi   Gödel–Herbrand–Kleyen
rekursiv funksiyalar 1930, 1934 va 1935 yillarda, Alonzo cherkovi"s lambda hisobi
1936   yil,   Emil   Post"s   Formulyasiya   1   1936   yil   va   Alan   Turing"s   Turing
mashinalari 1936–37 va 1939 yillar."Algoritm" so‘zi nisba lotinlashtirishda, uning
geografik   kelib   chiqishini   va   Fors   tili   matematik   Muhammad   ibn   Muso   al-
Xorazmiy   ga   algoritm.   Al-Xorazmiy   (Arablashgan   Fors   tili   780–850)   matematik,
astronom,   geograf,   va   olim   Donolik   uyi   yilda   Bag‘dod,   uning   ismi   "tug‘ilgan"
degan ma’noni anglatadi Xorazm’tarkibiga kirgan mintaqa Buyuk Eron va hozirda
O‘zbekiston.
Taxminan   825   yilda   al-Xorazmiy   an   Arab   tili   traktat   Hind-arab   raqamlar
tizimiga   tarjima   qilingan   Lotin   12   asr   davomida.   Qo‘lyozma   jumla   bilan
boshlanadi Diksit Algorizmi (’Al-Xorazmiy shunday aytgan’), bu erda "Algorizm"
tarjimon   bo‘lgan   Lotinlashtirish   Al-Xorazmiy   nomidan.[21]   Al-Xorazmiy   O‘rta
asrlarning   oxirlarida   Evropada   eng   ko‘p   o‘qilgan   matematik,   birinchi   navbatda
uning   boshqa   bir   kitobi   orqali   Algebra.   Oxirgi   o‘rta   asr   lotin   tilida,   algoritm,
Inglizcha   ’algoritm’,  uning   ismining  buzilishi   shunchaki   "o‘nlik   sanoq   sistemasi"
ni   anglatardi.[23]   XV   asrda   yunoncha   Rryumθ   (arifmos),   ’raqam’   (qarz
’arifmetik’),   lotincha   so‘z   o‘zgartirilgan   algoritmva   tegishli   "algoritm"   inglizcha
atamasi   birinchi   marta   17-asrda   tasdiqlangan;   zamonaviy   ma’no   19-asrda   paydo
bo‘lgan.Ingliz tilida u dastlab taxminan 1230 yilda, keyin esa ishlatilgan Chaucyer
1391   yilda.   Ingliz   tili   frantsuzcha   atamani   qabul   qildi,   ammo   19-asr   oxirigacha
"algoritm"   zamonaviy   ingliz   tilidagi   ma’noga   ega   bo‘ldi.So‘zning   yana   bir   erta
ishlatilishi   -   1240   yildan   boshlab,   qo‘llanmada   Karmen   de   Algorismo   tomonidan
tuzilgan Aleksandr de Viledu. Bu bilan boshlanadi:Hayec algorismus ars prayesens
dicitur,   qua   bilan   /   Talibus   Indorum   fruimur   bis   quinquye   figuris.bu   quyidagiga
tarjima   qilinadi:Algoritm   -   bu   hozirgi   paytda   biz   hind   figuralarini   ishlatadigan
san’at, ularning soni beshdan ikki marta.She’r bir necha yuz satrdan iborat bo‘lib,
yangi   uslubdagi   hind   zarlari   bilan   hisoblash   san’atini   umumlashtiradi   (Tali
Indorum)   yoki   hind   raqamlari"Algoritm"   ta’rifi   bo‘yicha   turli   xil   qarashlarni
batafsil   taqdim   etish   uchun   qarang   Algoritm   tavsiflari.Norasmiy   ta’rif
"operasiyalar   ketma-ketligini   aniq   belgilaydigan   qoidalar   to‘plami"   bo‘lishi
mumkin,   barcha   kompyuter   dasturlarini   (shu   jumladan   raqamli   hisob-kitoblarni amalga   oshirmaydigan   dasturlarni)   o‘z   ichiga   oladi   va   (masalan)   har   qanday
belgilangan   byurokratik   prosedura   yoki   oshpaz   kitobi   reseptUmuman   olganda,
dastur   oxir-oqibat   to‘xtab   qolgandagina   algoritm   bo‘ladi[30]   -   Garchi;   ..   bo‘lsa
ham   cheksiz   ilmoqlar   ba’zan   kerakli   bo‘lishi   mumkin.Algoritmning   prototipik
misoli Evklid algoritmi, bu ikkita butun sonning maksimal  umumiy bo‘luvchisini
aniqlash uchun ishlatiladi; misol (boshqalar ham bor) tomonidan tasvirlangan oqim
sxemasi   yuqorida   va   keyingi   qismda   misol   sifatida.Boolos,   Jeffri   va   1974,   1999
quyidagi   iqtibosda   "algoritm"   so‘zining   norasmiy   ma’nosini   taklif   eting:Hech   bir
inson   etarlicha   tez,   etarlicha   uzoq   yoki   etarlicha   kichik   yozolmaydi   ("cheksiz   va
kichikroq   cheksiz   ...   siz   molekulalar,   atomlar,   elektronlar   ustida   yozishga   urinib
ko‘rgan bo‘lar edingiz). ularning nomlarini bir nechta yozuvlarda birin ketin yozish
orqali o‘rnatiladi. Ammo odamlar ma’lum darajada cheksiz to‘plamlar holatida bir
xil   darajada   foydali   narsa   qilishlari   mumkin:   Ular   berishi   mumkin   ni   aniqlash
bo‘yicha   aniq   ko‘rsatmalar   n   to‘plamning   uchinchi   a’zosi,   o‘zboshimchalik   bilan
cheklangan uchun n. Bunday ko‘rsatmalar aniq bir shaklda berilishi kerak ularning
ortidan hisoblash mashinasi kelishi mumkin edi, yoki tomonidan belgilar bo‘yicha
juda oddiy operasiyalarni bajarishga qodir bo‘lgan odam.
An "son-sanoqsiz cheksiz to‘plam" uning elementlari butun sonlar bilan bitta-bitta
yozishmalarga kiritilishi mumkin bo‘lgan narsadir. Shunday qilib, Boolos va Jefri
algoritm   an-dan   butun   sonlarni   "yaratadigan"   jarayon   uchun   ko‘rsatmalarni
nazarda   tutishini   aytmoqdalar   o‘zboshimchalik   bilan   nazariy   jihatdan
o‘zboshimchalik   bilan   katta   bo‘lishi   mumkin   bo‘lgan   "kirish"   tamsayılari   yoki
butun   sonlari.   Masalan,   algoritm   algebraik   tenglama   bo‘lishi   mumkin   y   =   m   +   n
(ya’ni ikkita o‘zboshimchalik bilan "kirish o‘zgaruvchilari" m va n mahsulot ishlab
chiqaradigan   y),   ammo   turli   mualliflarning   tushunchani   aniqlashga   urinishlari
shundan   dalolat   beradiki,   bu   so‘z   bundan   ham   ko‘proq   narsani   anglatadi
(qo‘shimcha   misol   uchun):Aniq   ko‘rsatmalar   ("kompyuter"   tushunadigan   tilda)
tez,   samarali,   "yaxshi"   uchun   "kompyuter"   ning   "harakatlari"   ni   ko‘rsatadigan
jarayon (kerakli ichki ma’lumotlar va imkoniyatlar bilan jihozlangan mashina yoki
odam) o‘zboshimchalik bilan kiritilgan tamsayılar / belgilarni topish, dekodlash va
keyin ishlov berish m va n, belgilar + va = … Va "samarali "oqilona" vaqtda ishlab
chiqarish,   chiqish-butun   son   y   belgilangan   joyda   va   belgilangan
formatda.Tushunchasi   algoritm   tushunchasini   aniqlash   uchun   ham   ishlatiladi
aniqlik-   tushuntirish   uchun   markaziy   tushunchadir   rasmiy   tizimlar   ning   kichik
to‘plamidan   boshlab   vujudga   keladi   aksiomalar   va   qoidalar.   Yilda   mantiq,
algoritmni   bajarishni   talab   qiladigan   vaqtni   o‘lchash   mumkin   emas,   chunki   u
odatiy   jismoniy   o‘lchov   bilan   bog‘liq   emas.   Davom   etayotgan   ishni   tavsiflovchi
bunday   noaniqliklardan,   ta’rifining   mavjud   emasligi   kelib   chiqadi   algoritm   bu atamaning   aniq   (qandaydir   ma’noda)   va   mavhum   ishlatilishiga   mos
keladi.Algoritmlar   kompyuterlarning   ma’lumotlarni   qayta   ishlashida   muhim
ahamiyatga   ega.   Ko‘pgina   kompyuter   dasturlarida   ishchilarning   ish   haqini
hisoblash yoki o‘quvchilarning hisobot kartalarini bosib chiqarish kabi belgilangan
vazifani   bajarish   uchun   kompyuter   bajarishi   kerak   bo‘lgan   aniq   ko‘rsatmalarni   -
aniq tartibda batafsil bayon qiluvchi algoritmlar mavjud. Shunday qilib, algoritmni
a tomonidan simulyasiya qilinishi mumkin bo‘lgan har qanday operasiyalar ketma-
ketligi   deb   hisoblash   mumkin   Turing   to‘liq   tizim.   Ushbu   tezisni   tasdiqlaydigan
mualliflar   orasida   Minskiy   (1967),   Savage   (1987)   va   Gurevich   (2000)
mavjud:Minskiy:   "Ammo   biz   Turing   bilan   birga"   tabiiy   ravishda   "samarali   deb
atash mumkin bo‘lgan har qanday prosedurani (oddiy) mashina tomonidan amalga
oshirilishini   davom   ettiramiz.   Garchi   bu   o‘ta   tuyulishi   mumkin   bo‘lsa   ham,
argumentlar ... uning foydasiga rad etish qiyin ".Gurevich: "... Turingning o‘zining
tezis   foydasiga   norasmiy   argumenti   kuchliroq   tezisni   oqlaydi:   har   bir   algoritmni
Tyuring   mashinasi   tomonidan   simulyasiya   qilish   mumkin   ...   Savage   [1987]   ga
ko‘ra,   algoritm   Turing   mashinasi   tomonidan   aniqlangan   hisoblash
jarayonidir".Turing   mashinalari   tugamaydigan   hisoblash   jarayonlarini   belgilashi
mumkin.   Algoritmlarning   norasmiy   ta’riflari   odatda   algoritm   har   doim   tugashini
talab   qiladi.   Ushbu   talab   rasmiy   prosedura   algoritmini   umumiy   holatda   imkonsiz
yoki   yo‘qligini   hal   qilish   vazifasini   bajaradi   -   bu  katta   teorema   tufayli.  hisoblash
nazariyasi nomi bilan tanilgan muammoni to‘xtatish.
Odatda,   algoritm   ma’lumotni   qayta   ishlash   bilan   bog‘liq   bo‘lsa,   ma’lumotlarni
kirish   manbasidan   o‘qish,   chiqish   moslamasiga   yozish   va   keyingi   ishlov   berish
uchun saqlash mumkin. Saqlangan ma’lumotlar algoritmni bajaruvchi sub’ektning
ichki holatining bir  qismi  sifatida qaraladi. Amalda davlat bir  yoki  bir nechtasida
saqlanadi  ma’lumotlar  tuzilmalariUshbu hisoblash  jarayonlarining ba’zilari  uchun
algoritm qat’iy belgilangan bo‘lishi kerak: yuzaga kelishi mumkin bo‘lgan barcha
sharoitlarda   uning   qo‘llanilish   uslubida   ko‘rsatilgan.   Bu   shuni   anglatadiki,   har
qanday   shartli   qadamlar   muntazam   ravishda,   har   holda   alohida   ko‘rib   chiqilishi
kerak;   har   bir   ish   uchun   mezon   aniq   (va   hisoblash   mumkin)   bo‘lishi
kerak.Algoritm   aniq   qadamlarning   aniq   ro‘yxati   bo‘lganligi   sababli,   hisoblash
tartibi   har   doim   algoritmning   ishlashi   uchun   hal   qiluvchi   ahamiyatga   ega.
Ko‘rsatmalar   odatda   aniq   ro‘yxatlangan   deb   taxmin   qilinadi   va   "yuqoridan"
boshlanib,   "pastga"   tushgan   deb   ta’riflanadi   -   bu   g‘oyani   rasmiy   ravishda
tasvirlaydigan   fikr   boshqaruv   oqimi.Hozirga   qadar   algoritmni   rasmiylashtirish
bo‘yicha munozaralar quyidagilarni o‘z zimmasiga olgan majburiy dasturlash. Bu
eng   keng   tarqalgan   tushuncha   -   vazifani   diskret,   "mexanik"   vositalar   bilan
tavsiflashga urinish. Ushbu rasmiylashtirilgan algoritmlarning yagona konsepsiyasi tayinlash   jarayoni,   bu   o‘zgaruvchining   qiymatini   belgilaydi.   Bu   "intuitivligidan
kelib chiqadi"xotira"skretchpad sifatida. Bunday topshiriqning namunasini quyida
topish   mumkin.Algoritmni   tashkil   etadigan   ba’zi   bir   muqobil   tushunchalar   uchun
qarang funksional dasturlash va mantiqiy dasturlash.
Algoritmlarni ifodalash
Algoritmlarni   ko‘pgina   belgilar,   shu   jumladan,   ifodalash   mumkin   tabiiy
tillar,   psevdokod,   oqim   jadvallari,   drakon-jadvallar,   dasturlash   tillari   yoki
boshqaruv   jadvallari   (tomonidan   qayta   ishlangan   tarjimonlar).   Algoritmlarning
tabiiy   tildagi   ifodalari   keng   va   noaniq   bo‘lib,   murakkab   yoki   texnik   algoritmlar
uchun   kamdan-kam   qo‘llaniladi.   Psevdokod,   oqim   jadvallari,   drakon-jadvallar   va
boshqaruv jadvallari - bu tabiiy tilga asoslangan bayonotlarda uchraydigan ko‘plab
noaniqliklardan   qochadigan   algoritmlarni   ifodalashning   tuzilgan   usullari.
Dasturlash tillari birinchi  navbatda algoritmlarni kompyuter  tomonidan bajarilishi
mumkin   bo‘lgan   shaklda   ifodalash   uchun   mo‘ljallangan,   lekin   ko‘pincha
algoritmlarni   aniqlash   yoki   hujjatlashtirish   usuli   sifatida   ishlatiladi.Vakillarning
xilma-xilligi   mavjud   va   berilganni   ifodalash   mumkin   Turing   mashinasi   dastur
mashinalar jadvallari ketma-ketligi sifatida (qarang cheklangan holatdagi mashina,
davlat o‘tish jadvali va boshqaruv jadvali ko‘proq uchun), oqim sxemalari sifatida
va drakon-jadvallar (qarang holat diagrammasi ko‘proq uchun), yoki ibtidoiy shakl
sifatida   mashina   kodi   yoki   yig‘ilish   kodi   "to‘rtliklar   to‘plamlari"   deb   nomlangan
(qarang Turing mashinasi  ko‘proq).Algoritmlarni quyidagicha Turing mashinasini
tavsiflashning qabul qilingan uchta darajasiga ajratish mumkin:1 Yuqori darajadagi
tavsif.
“… Dastur tafsilotlarini inobatga olmagan holda algoritmni tasvirlash uchun nasr.
Ushbu   darajada,   biz   mashinaning   lentasini   yoki   boshini   qanday   boshqarishini
eslatib   o‘tishning   hojati   yo‘q.   "2   Amalga   oshirish   tavsif“...   nasr   Turing
mashinasining   boshidan   foydalanish   uslubini   va   lentada   ma’lumotlarni   saqlash
usulini   aniqlash   uchun   ishlatiladi.   Ushbu   darajada   biz   davlatlar   yoki   o‘tish
funksiyalari   haqida   batafsil   ma’lumot   bermaymiz.   "3   Rasmiy   tavsifEng   batafsil
"eng   past   daraja"   Turing   mashinasining   "holat   jadvali"   ni   beradi.Uchala   darajada
tasvirlangan   oddiy   "Qo‘shish   m   +   n"   algoritmiga   misol   uchun   qarang   Algoritm
misollar.Yilda   kompyuter   tizimlari,   algoritm   asosan   misolidir   mantiq   dasturiy
ta’minot ishlab chiquvchilari tomonidan mo‘ljallangan "maqsadli" kompyuter (lar)
uchun   samarali   bo‘lishi   uchun   dasturiy   ta’minotda   yozilgan   chiqish   berilgan
(ehtimol bekor) kiritish. Optimal algoritm, hattoki eski apparatda ishlaydi, maqbul
bo‘lmaganidan   yuqori   (yuqori)   natijalarga   olib   keladi   vaqtning   murakkabligi)
samaraliroq   qo‘shimcha   qurilmalarda   ishlaydigan   xuddi   shu   maqsad   uchun algoritm; shuning uchun algoritmlar, xuddi kompyuter texnikasi kabi, texnologiya
hisoblanadi."Elegant" (ixcham) dasturlar, "yaxshi" (tezkor) dasturlar : "Oddiylik va
nafislik"   tushunchasi   norasmiy   ravishda   paydo   bo‘ladi   Knuth   va   aniq   ichida
Chaitin:Knut: "... biz xohlaymiz yaxshi estetik ma’noda ba’zi bir algoritmlar. Bitta
mezon   -   bu   algoritmni   bajarish   uchun   sarflangan   vaqt….   Boshqa   mezon   -
algoritmning   kompyuterlarga   moslashuvchanligi,   soddaligi   va   nafisligi   va
boshqalar.   "Chaitin:   "...   dastur"   oqlangan   "bo‘lib,   demak,   u   o‘zi   ishlab
chiqaradigan   mahsulotni   ishlab   chiqarish   uchun   eng   kichik   dasturdir"Chaitin
o‘zining   ta’rifiga   quyidagicha   qo‘shiladi:   "Men   sizga   dasturning   nafisligini
isbotlay   olmasligingizni   ko‘rsataman’"-   shunga   o‘xshash   dalil   hal   qiladi
Muammoni   to‘xtatish   (o‘sha   erda).Algoritm   va   funksiyalarni   algoritm   bilan
hisoblash mumkin: Berilgan funksiya uchun bir nechta algoritmlar mavjud bo‘lishi
mumkin.   Bu   dasturchi   uchun   mavjud   bo‘lgan   ko‘rsatmalar   to‘plamini
kengaytirmasdan   ham   to‘g‘ri.   Rojersning   ta’kidlashicha,   "bu   ...   tushunchasini
farqlash   muhimdir   algoritm,   ya’ni   prosedura   va   tushunchasi   algoritm   bilan
hisoblanadigan funksiya, ya’ni prosedura bo‘yicha xaritalash. Xuddi shu funksiya
bir nechta turli algoritmlarga ega bo‘lishi mumkin ".Afsuski, yaxshilik (tezkorlik)
va   nafislik   (ixchamlik)   o‘rtasida   o‘zaro   kelishuv   bo‘lishi   mumkin   -   nafis   dastur
hisoblashni   bajarish   uchun   kamroq   nafisga   qaraganda   ko‘proq   qadam   tashlashi
mumkin.   Evklid   algoritmidan   foydalanadigan   misol   quyida
keltirilgan.Kompyuterlar (va kompyuterlar), hisoblash modellari: Kompyuter (yoki
inson "kompyuteri")) cheklangan turdagi mashina, "diskretli deterministik mexanik
qurilma"   uning   ko‘rsatmalariga   ko‘r-ko‘rona   amal   qiladigan.   Melzak   va
Lambekning   ibtidoiy   modellari   ushbu   tushunchani   to‘rt   elementga   qisqartirdi:
alohida,   ajralib   turadigan   joylar,   alohida,   ajratib   bo‘lmaydigan   hisoblagichlar
(agent   va   ko‘rsatmalar   ro‘yxati   samarali   agentning   qobiliyatiga
nisbatan.Algoritmni   simulyasiya   qilish:   kompyuter   (komputer)   tili:   Knut
o’quvchiga "algoritmni o’rganishning eng yaxshi usuli - uni sinab ko’rish ... darhol
qalam   va   qog’ozni   olib,   misol   orqali   ishlash"   ni   maslahat   beradi.   Ammo   haqiqiy
narsani   simulyasiya   qilish   yoki   bajarish   haqida   nima   deyish   mumkin?   Dasturchi
algoritmni   simulyator   /   kompyuter   /   komputer   qila   oladigan   tilga   tarjima   qilishi
kerak   samarali   ijro   etish.   Tosh   bunga   misol   keltiradi:   kvadrat   tenglamaning
ildizlarini   hisoblashda   hisoblashchi   kvadrat   ildiz   otishni   bilishi   kerak.   Agar   ular
bajarilmasa,   unda   algoritm   samarali   bo‘lishi   uchun   kvadrat   ildiz   chiqarib   olish
uchun   bir   qator   qoidalarni   taqdim   etishi   kerak.Bu   shuni   anglatadiki,   dasturchi
maqsadli   hisoblash   agentiga   (kompyuter   /   komputer)   nisbatan   samarali   bo‘lgan
"tilni"   bilishi   kerak.Ammo   simulyasiya   uchun   qanday   modeldan   foydalanish
kerak? Van Emde Boas "biz asoslasak ham kuzatadi murakkablik nazariyasi beton
mashinalar   o‘rniga   mavhumlikda   modelni   tanlashda   o‘zboshimchalik   saqlanib qoladi. Aynan shu nuqtada simulyasiya kiradi ". Tezlikni o‘lchashda ko‘rsatmalar
to‘plami   muhim   ahamiyatga   ega.   Masalan,   Evklidning   qolgan   qismini   hisoblash
algoritmidagi   kichik   dastur,   agar   dasturchi   bo‘lsa,   juda   tez
bajariladi.modul"ko‘rsatma   faqat   ayirishdan   ko‘ra   mavjud   (yoki   yomonroq:   faqat
Minskiyning" kamayishi  ").Tarkibiy dasturlash, kanonik tuzilmalar: Per Cherkov-
Turing   tezisi,   har   qanday   algoritmni   ma’lum   bo‘lgan   model   tomonidan   hisoblash
mumkin   Turing   tugadiVa   Minskiy   namoyishlari   uchun   Turing   to‘liqligi   faqat
to‘rtta  ko‘rsatmani   talab  qiladi   -  shartli  GOTO,  sharsiz   GOTO,  topshiriq,  HALT.
Kemeny   va   Kurtzning   ta’kidlashicha,   "intizomsiz"   so‘zsiz   GOTO   va   shartli   IF-
THEN   GOTOlardan   foydalanish   natijaga   olib   kelishi   mumkin   "spagetti   kodi",
dasturchi tuzilgan dasturlarni faqat shu ko‘rsatmalardan foydalangan holda yozishi
mumkin; boshqa tomondan" yomon tuzilgan dasturlarni tuzilgan tilda yozish ham
mumkin   ".   Tausvort   uchtasini   ko‘paytiradi   Bohm-Jakopini   kanonik   tuzilmalari:
SEKUYeNCYe, IF-THEN-BOSHQA va WHILE-DO, yana ikkita: DO-WHILE va
Case. Tuzilgan dasturning qo‘shimcha afzalligi shundaki, u o‘zini o‘zi qarz beradi
to‘g‘riligining   dalillari   foydalanish   matematik   induksiya.Kanonik   oqim   sxemasi
belgilari: A deb nomlangan grafik yordamchi oqim sxemasi, algoritmni tavsiflash
va   hujjatlashtirish   usulini   taklif   qiladi   (va   bitta   kompyuter   dasturi).   Minsky
mashinasining   dastur   oqimi   singari,   oqim   sxemasi   har   doim   sahifaning   yuqori
qismidan   boshlanadi   va   pastga   tushadi.   Uning   asosiy   ramzlari   atigi   to‘rttadan
iborat:   dastur   oqimini   ko‘rsatuvchi   yo‘naltirilgan   o‘q,   to‘rtburchak
(SEQUYeNCYe, GOTO), olmos (IF-THEN-ELSE) va nuqta (OR-galstuk). Böhm-
Jakopini   kanonik   tuzilmalari   ushbu   ibtidoiy   shakllardan   yasalgan.   Sub-tuzilmalar
to‘rtburchaklar   ichida   "joylashishi"   mumkin,   lekin   faqat   bitta   ustki   tuzilishdan
chiqish   sodir   bo‘lganda.   Belgilar   va   ulardan   kanonik   tuzilmalarni   qurish   uchun
foydalanish   diagrammada   ko‘rsatilgan.Algoritm   tahlili   tushunchasiAlgoritm
tahlilini, qo’yilgan masalani ushbu algoritm bilan еchish qancha vaqt talab qilishi
darajasi dеb tasavvur  qilish mumkin. Har bir qaralayotgan algorimtni N o’lchovli
boshlang’ich   ma'lumotlar   massividagi   masalalarning   qanchalik   tеz   еchilishi   bilan
baholaymiz.   Masalan,   saralash   algoritmi   N   ta   qiymatdan   iborat   ro’yxatni   o’sish
tartibida   joylashtirish   uchun   qancha   taqqoslash   talab   qiladi   yoki   N*N   o’lchamli
ikkita   matritsani   ko’paytirishda   qancha   arifmеtik   amallar   zarurligini   hisoblash1.
Bitta   masalani   turli   algoritmlar   bilan   еchish   mumkin.   Algoritmlar   tahlili   bizga
algoritmni tanlash uchun qurol bo’ladi. To’rtta qiymatdan eng kattasini tanlaydigan
ikkita algoritmni qaraymiz:
largest = a if b > largest then
largest = b
end if
return a
if s > largest then
largest = s end if
if d > largest then
largest = d end if
return largest
if a > b then if a > s then if a > d then
return a
else
return d end if
else
if s > d then return s
else
return d end if end if
else
if b > s then if b > d then
return b
else
return d end if
else
if s > d then
return s else
return d
end if end if end if
Ko’rinib   turibdiki,   qaralayotgan   algoritmlarning   har   birida   uchta   taqqoslash
bajariladi.   Birinchi   algoritmni   o’qish   va   tushunish   oson,   ammo   kompyutеrda
bajarilish nuqtai nazaridan ularning murakkablik darajalari tеng. Bu ikki algoritm
vaqt   nuqtai   nazaridan   tеng,   lеkin   birinchi   algoritm   largest   nomli   qo’shimcha
o’zgaruvchi   hisobiga   ko’proq   xotira   talab   qiladi.   Agarda   son   yoki   bеlgilar
taqqoslansa, ushbu qo’shimcha o’zgaruvchi katta ahamiyatga ega bo’lmaydi, lеkin
boshqa   turdagi   ma'lumotlar   bilan   ishlaganda   bu   muhim   ahamiyatga   ega.   Ko’plab
zamonaviy   dasturlash   tillari   katta   va   murakkab   ob'еktlarni   yoki   yozuvlarni
taqqoslash   opеratorlarini   aniqlash   imkonini   bеradi.   Bunday   hollarda   qo’shimcha
o’zgaruvchilarni joylashtirish katta joy talab qiladi. Algoritmlarning effеktivligini
tahlili   qilishda   bizni   birinchi   navbatda   vaqt   masalasi   qiziqtiradi,   ammo   xotira
muhim rol o’ynaydigan vaziyatda uni ham muhokama qilamiz. Algoritmlaring turli
xossalari   bitta   masalani   еchuvchi   ikki   turdagi   algoritmlarning   effеktivligini
taqqoslash   uchun   xizmat   qiladi.   Biz   shuning   uchun   hеch   qachon   matritsalarni
ko’paytirish   algoritmi   bilan   saralash   algoritmini   emas,   balki   ikkita   turli   saralash
algoritmlarini   bir-biri   bilan   taqqoslaymiz.Algoritm   tahlilining   natijasi   –
bеlgilangan algoritmning kompyutеrdan qancha vaqt yoki takrorlash talab qilishini
aniq   hisoblovchi   formula   emas.   Bunday   ma'lumot   muhim   emas,   bu   holatda
kompyutеr turi, u bitta yoki undan ortiq foydalanuvchi tomonidan ishlatilyaptimi,
uning protsеssori va chastotasi qanaqa, protsеssor  chipida komandalar to’liqmi va
kompilyator   bajarilayotgan   kodni   qay   darajada   amalga   oshirmoqda   kabi
tomonlarni   nazarda   tutish   kеrak.   Bu   shartlar   algoritm   bajarilish   natijasida
dasturning   ishlash   tеzligiga   ta'sir   qiladi.   Yuqoridagi   shartlar   hisobiga   dasturni
boshqa   tеz   ishlaydigan   kompyutеrga   o’tkazilganda   algoritm   yaxshi   ishlaganday
bajarilishi   tеzroq   amalga   oshadi.   Aslida   esa   unday   emas,   biz   shuning   uchun
tahlilimizda   kompyutеrning   imkoniyatlarini   inobatga   olmaymiz.Oddiy   va   katta
bo’lmagan dasturlarda bajariladigan amallar sonini N ning funktsiyasi ko’rinishida
aniq hisoblash mumkin. Aksariyat holatlarda bunga zaruriyat qolmaydi. 8 .4 § da
kеltirilgan N =5 ta va N =250 ta amal bajariladigan ikki algoritm orasida N ning
еtarlicha   katta   qiymatlarida   dеyarli   farq   bo’lmaydi.   Shunga   qaramay,   biz
algoritmlarni bajariladigan amallar soniga qarab tahlil qilamiz.
Algoritm   tomonidan   bajariladigan   jarayonlar   borki,   biz   ularning   hammasini
hisoblab   o’tirmaymiz,   buning   sababi   shundaki,   hatto   uning   eng   kichik   sozlashi
ham samaradorlikning sеzilmas yaxshilanishiga olib kеladi. Masalan, fayldagi turli bеlgilar   sonini   hisoblovchi   algoritmni   qaraymiz.   Bu   masala   еchimi   uchun
algoritmning taxminiy ko’rinishi quyidagicha bo’ladi:
for all 256 bеlgilarni do
hisoblagichni nolga tеnglash end for
while agar faylda bеlgi qolsa do
navbatdagi bеlgini ko’rsat va hisoblagichni bittaga oshir end while do
hisoblagichni nolga tеnglashtirish end for
while faylda bеlgi mavjud bo’lsa do
navbatdagi bеlgini ko’rsat va hisoblagichni bittaga oshir
end while
Ushbu algoritmni ko’rib chiqamiz. U takrorlanish bajarilishida 256 ta o’tish qiladi.
Agar   bеrilgan   faylda   N   ta   bеlgi   bo’lsa   unda   ikkinchi   takrorlanishda   N   ta   o’tish
qilinadi.   «Bu   qanday   hisoblash?»   dеgan   savol   tug’iladi.   For   siklida   avval   sikl
o’zgaruvchisi   bajariladi,   kеyin   har   bir   o’tishda   uning   sikl   chеgarasidan
chiqmayotganligi   tеkshiriladi   va   o’zgaruvchi   qiymatini   oshiradi.   Bu   esa   sikl
bajarilishida   257   yuklash   bajariladi   (biri   sikl   o’zgaruvchisi,   256   tasi   hisoblagich
uchun   ),   ya'ni   256   ta   oshirish   va   257   ta   sikl   chеgarasidan   chiqmaganligini
tеkshirish   (bitta   amal   siklni   to’xtatish   uchun   qo’shilgan).   Ikkinchi   siklda   N   +   1
marta   shart   tеkshiriladi   (+1   fayl   bo’sh   bo’lgandagi   oxirgi   tеkshiruv),   va   N
hisoblagichni oshirish. Jami amallar:
Oshirish
N + 256
Yuklash
257
tеkshirish
N + 258
Shunday qilib 500 bеlgidan iborat fayl bеrilsa algoritmda 1771 ta amal bajariladi,
ulardan   770   tasi   natija   bеradi   (43%).   Endi   N   ning   qiymati   oshganda   nima
bo’lishini   ko’ramiz.   Agar   fayl   50   000   bеlgidan   iborat   bo’lsa,   unda   algoritm   100
771   amal   bajaradi,   ularning   770   tasi   natija   uchun   (jami   amallar   sonining   1%   ini
tashkil   etadi).   Еchimga   qaratilgan   amallar   soni   oshmayapti,   lеkin   N   katta
bo’lganda ularning foizi juda kam.
Endi boshqa tomoniga e'tibor qaratamiz. Kompyutеrda ma'lumotlar bilan shunday
ishlashga   mo’ljallanganki,   katta   xajmdagi   ma'lumotlar   blokini   ko’chirish   va
yuklash   bir   xil   tеzlikda   amalga   oshiriladi.   Shuning   uchun   biz   avval   16   ta
hisoblagichga   boshlan?ich   qiymat   0   ni   yuklaymiz,   kеyin   qolgan   hisoblagichlarni
to’ldirish   uchun   shu   blokdan   15   ta   nusxa   olamiz.Bu   esa   sikl   bajarilish   davomida
tеkshirishlar   sonini   33   ga,   yuklashlar   sonini   33   va   oshirishlar   sonini   31   ga kamayishiga olib kеladi. Dеmak amal bajarilishlar soni 770 dan 97 gacha kamaydi,
ya'ni   87%.   Agar   erishilgan   natijani   50000   bеlgidan   iborat   fayl   ustida   bajarsak,
tеjamkorlik   0.7%   ni   tashkil   qiladi   (100771   ta   amal   o’rniga   100098   amal
bajaramiz).Agarda   barcha   amallarni   sikldan   foydalanmay   31   ta   yuklashlar   orqali
bajarganimizda,   vaqtni   yanada   tеjagan   bo’lardik,   ammo   bu   usul   0.07   foyda
kеltiradi. Ishimiz unumli bo’lmaydi. Ko’rib turganimizdеk, algoritmning bajarilish
vaqti   bilan   bo?liq   barcha   amallar   bеfoyda.   Tahlil   tili   bilan   aytganda,   boshlan?ich
ma'lumotlar hajmining ortishiga aloxida e'tibor  qaratish kеrak.Algoritmlarni  tahlil
qilishning boshqa   yaxshiroq usuli  -  uni   biror  yuqori  bosqichli  til  Pascal,   C,  C++,
JAVA   da   yozish   yoki   oddiy   psеvdokodlarda   yozishdir.   Barcha   algoritmlarning
asosiy   boshqaruv   strukturasini   ifodalaganda   psеvdokodlarning   xossalari
ahamiyatga   ega   emas.   Ixtiyoriy   til   bizning   talabimizga   javob   bеradi,   chunki   for
yoki   while   shaklidagi   sikllar,   if,   case   yoki   switch   ko’rinishidagi   tarmoqlanish
mеxanizmlari barcha dasturlash tillarida mavjud. Har gal biz bitta aniq algoritmni
ko’rib   chiqishimizga   to’?ri   kеladi   –   unda   birdan   ortiq   funktsiya   yoki   programma
fragmеnti   kiritilgan   bo’ladi,   shuning   uchun   yuqorida   kеltirilgan   tillarning   tеzligi
umuman   muhim   emas.   Psеvdokodlardan   foydalanishimizning   sababi
shunda.Ko’plab   dasturlash   tillarida   mantiqiy   ifodaning   qiymatlari   qisqartirilgan
shaklda   hisoblanadi.   Bu   A   and   V   ifodadagi   V   hadning   qiymati   qachonki   A   rost
bo’lsagina   hisoblanadi,   aks   holda   natija   V   ga   bog’liq   bo’lmagan   tarzda   yolg’on
bo’ladi.   Xuddi   shunday   A   or   B   ifodada   A   ning   qiymati   rost   bo’lsa,   B   hadning
qiymati   hisoblanmaydi.   Ko’rinib   turibdiki,   murakkab   shartlarning   1   yoki   2   ga
tеngligidagi   taqqoslashlarining   sonini   hisoblash   shart   emas.Boshlang’ich
bеrilganlar   sinfiAlgoritmlarning   tahlilida   kiruvchi   ma'lumotlarning   roli   yuqori,
chunki   algoritm   harakatlarining   kеtma-kеtligi   kiruvchi   ma'lumotlar   bilan
bеlgilanadi.   Masalan,   N   ta   elеmеntdan   tashkil   topgan   ro’yxatning   eng   katta
elеmеntini topish uchun quyidagi algoritmdan foydalanish mumkin:
largest = list [l]
for i =2 to N do
if (list [i] > largest) then
largest = list[i]
end if
end for
Agar   ro’yxat   kamayish   tartibida   bo’lsa,   u   holda   sikl   boshlanishidan   avval   bitta
o’zlashtirish   bajariladi,   sikl   tanasida   esa   o’zlashtirish   bo’lmaydi.   Agar   ro’yxat
o’sish   tartibida   bo’lsa,   u   holda   N   ta   o’zlashtirish   bajariladi   (tsikl   boshlanishidan avval   bitta   va   N-1   ta   siklda).   Biz   tahlil   qilish   davomida   kiruvchi   qiymatlar
to’plamining   turli   imkoniyatlarini   ko’rib   chiqishimiz   kеrak,   agar   bitta   to’plam
bilan   chеgaralansak,   bu   еchim   eng   tеz   (yoki   eng   sеkin)   bo’lgan   to’plam   bo’lib
chiqishi mumkin. Natijada biz algoritm haqidagi yolg’on tasavvurga ega bo’lamiz.
Buning   o’rniga   kiruvchi   to’plamlar   turining   barchasini   ko’rib   chiqamiz.   Biz
kiruvchi to’plamlarni har bir to’plamdagi algoritm holatiga bog’liq holda sinflarga
bo’lib   chiqamiz.   Bunday   bo’linish   ko’rib   chiqilayotgan   to’plamlar   miqdorini
kamaytirish imkonini bеradi. Masalan, 10 ta sondan iborat ro’yxat uchun eng katta
elеmеntni   topish   algoritmini   qo’llaymiz.   Birinchi   soni   eng   katta   bo’lgan   362  880
kiruvchi to’plamlar mavjud, ularni bitta sinfga joylashtirish mumkin. Agar qiymati
bo’yicha   eng   katta   son   ikkinchi   o’rinda   turgan   bo’lsa,   u   holda   algoritm   ikkita
o’zlashtirishni amalga oshiradi. Eng kata son ikkinchi o’rinda turgan to’plam 362
880. Ularni boshqa sinfga kiritish mumkin. 1 dan N gacha bo’lgan sonlar orasida
eng   katta   sonning   o’zgarish   holida   o’zlashtirishlar   sonining   qanday   o’zgarishini
ko’rishimiz   mumkin.   Shunday   qilib,   barcha   kiruvchi   to’plamlarni   bajarilgan
o’zlashtirishlar soni bo’yicha N ta turli sinfga bo’lish kеrak. Ko’rib turganingizdеk,
har   bir   sinfda   joylashgan   to’plamlarni   birma-bir   yozish   yoki   yozib   olish   shart
emas.   Faqatgina   har   bir   to’plamdagi   sinflar   miqdori   va   ish   hajmini   bilish   еtarli.
Kiruvchi   bеrilganlarning   mumkin   bo’lgan   to’plami   N   kattalashganda   judayam
katta   bo’lishi   mumkin.   Masalan,   10   ta   turli   soni   ro’yxatda   3   628   800   usulda
joylashtirish   mumkin.   Bu   usullarning   barchasini   ko’rib   chiqishning   imkoni   yo’q.
Biz   buning   o’rniga   algoritm   bajarilishiga   ko’ra   ro’yxatni   sinflarga   bo’lamiz.
Yuqorida   ko’rsatilgan   algoritm   uchun   bo’linish   eng   katta   qiymatning   joylashishi
o’rniga asoslanadi. Natijada 10 ta turli sinf hosil bo’ladi. Boshqa algoritm uchun,
masalan,   eng   katta   va   eng   kichik   sonni   topish   algoritmida   bo’linish   eng   katta   va
eng kichik sonning joylashuviga asoslanadi. Bunday bo’linishda 90 ta sinf bo’ladi.
Sinflarni ajratib bo’lgach, har bir sinfdan bitta to’plamda algoritm holatini ko’rish
mumkin.   Agar   sinflar   to’g’ri   tanlangan   bo’lsa,   u   holda   bir   sinfdagi   kiruvchi
bеrilganlar   to’plamida   algoritm   bir   xil   miqdordagi   amallarni   bajaradi,   boshqa
sinfning   to’plamlari   uchun   esa   amallar   miqdori   boshqacha   bo’ladi.Boshlang’ich
ma'lumotlarning sinflari. Algoritmni tahlil qilishda kiruvchi ma'lumotlarni tanlash
uning bajarilishiga ta'sir qilishi mumkin. Aytaylik, ba'zi saralash algoritmlari, agar
kirish   ro’yxati   saralangan   bo’lsa,   juda   t е z   ishlashi   mumkin,   boshqa   algoritmlar
shunday ro’yxatda uncha yaxshi bo’lmagan natijani ko’rsatadi. Tasodifiy ro’yxatda
esa   natija   buning   t е skarisi   bo’lishi   mumkin.   Shuning   uchun   biz   ma'lumotlarning
bir kirish ro’yxatidagi algoritmlar harakatini tahlil qilish bilan ch е garalanmaymiz.
Biz   algoritmni   ham   eng   t е z,  ham   eng   s е kin  ishlashini   ta'minlovchi   ma'lumotlarni
qidiramiz.   Bundan   tashqari,   barcha   mavjud   ma'lumotlar   to’plamidagi
algoritmlarning   o’rtacha   samarasini   ham   baholaymiz.O’sish   tеzliklari.   Algoritm bilan bajariladigan jarayonlar sonini aniq bilish algoritmlarni tahlil qilishda muhim
rol  o’ynamaydi.  Kiruvchi   ma'lumotlarning  hajmi  ko’payganida  bu  sonning   o’sish
tеzligi   muhimroq   hisoblanadi.   U   algoritmning   o’sish   tеzligi   dеb   ataladi.   Agar   1-
rasmga   diqqat   bilan   qarasak,   funktsiya   grafiklarining   quyidagi   xususiyatlarini
ko’rsatish mumkin. x2 funktsiya avval sеkin o’sadi, lеkin x o’sganda uning o’sish
tеzligi   ham   oshadi.   x   funktsiyasining   o’sish   tеzligi   o’zgaruvchining   hamma
qiymatlari   oralig’ida   doimiydir.   2   log   x   funktsiyasi   umuman   o’smaydi,   lеkin   bu
yolg’on   tasavvur.   Haqiqatda   esa   u   o’sadi,   faqat   juda   sеkin.O’sish   tеzliklarini
tasniflash.   Algoritm   murakkabligining   o’sish   tеzligi   muhim   rol   o’ynaydi   va   biz
o’sish   tеzligi   formulasi   kata   ustunlikka   ega   hadi   bilan   aniqlanishini   ko’rdik.
Shuning   uchun   biz   sеkin   o’sadigan   kichik   hadlarga   e'tibor   qaratmaymiz.   Barcha
kichik hadlarni olib tashlab, murakkablikning o’sish tеzligi hisoblanuvchi algoritm
yoki   funktsiyaning   tartibiga   ega   bo’lamiz.   Algoritmlarni   ular   murakkabligining
o’sish   tеzligiga   qarab   guruhlarga   ajratish   mumkin.   Biz   3   toifani   kiritamiz:
murakkabligi   mazkur   funktsiya   kabi   tеz   o’suvchi   algoritmlar,   murakkabliklari
o’sha   tеzlikda   o’suvchi   algoritmlar   va   murakkabligi   bu   funktsiyadan   sеkin
o’suvchi   algoritmlar.Katta   omega.   f   singari   tеz   o’suvchi   funktsiyalar   sinfini   biz
Ω(f) orqali bеlgilaymiz (katta omеga dеb o’qiladi). Agar hamma qiymatlarda erkin
o’zgaruvchan kattalik n, ba'zi kata chеgarada n0 , g(п) > cf(n) qiymati ba'zi musbat
s   son   uchun   bo’lsa,   g   funktsiyasi   shu   sinfga   tеgishli   bo’ladi.   Ω(f)   sinfi   o’zining
quyi   chеgarasi   bilan   izohlansa,   undagi   hamma   funktsiyalar   f   kabi   tеz   o’sadi.   Biz
algoritmlarning   samaradorligi   bilan   qiziqamiz,   shuning   uchun   Ω(f)sinfi   bizni   u
darajada   qiziqtirmaydi:   masalan,   Ω,(п2)   га   п2   dan   tеz   o’suvchi   hamma
funktsiyalar kiradi, aytaylikn3 ва2n .Katta О. Spеktrning boshqa tarafida O(f) sinfi
joylashgan  (katta  O  dеb  o’qiladi).  Bu  sinf   f   dan  tеz  o’smaydigan  funktsiyalardan
tashkil topgan. Funktsiya O(f) sinflari uchun yuqori chеgarani hosil qiladi. Formal
nuqtai   nazardan   f   funktsiyasi   O(f)   sinfiga   tеgishli,   agar   barcha   n   uchun   g(п)   ≤
cf(n), ba'zi chеgara katta O va ba'zi musbat s konctanta uchun bo’lsa. Bu sinf biz
uchun juda muhim. Ikkita algoritmdan qaysi birining murakkabligi katta O sinfiga
tеgishligi   bizni   qiziqtiradi.Katta   teta.   Θ   orqali   biz   f   singari   tеzlikda   o’suvchi
funktsiyalar sinfini bеlgilaymiz (katta tеta dеb o’qiladi). Formal nuqtai nazardan bu
sinf   ikki   avvalgi   sinflarning   kеsishuvidan   iborat,   =   Ω   (f)   ∩   O(f).   Algoritmlarni
taqqoslaganda   bizni   o’rganilgan   masalalardan   tеzroq   еchuvchilari   qiziqtiradi.
Shuning   uchun   agar   topilgan   algoritm   Θ   (f)   sinfiga   tеgishli   bo’lsa,   biz   uni   ko’rb
chiqmaymiz.Katta  O sinfi   . Bеrilgan  funktsiya  O(f)   ga tеgishli  ekanligini   ikki  xil
yo’l   bilan   tеkshirish   mumkin:   yuqoridagi   tavsif   orqali   yoki   quyidagi   tavsif
yordamida:=   с   ixtiyoriy   c   konstanta   uchun.   (23)Bu   shuni   anglatadiki,   g(п)/f(n)
ning munosabatlar chеgarasi mavjud bo’lsa va u chеksizlikdan kichik bo’lsa, g€O
(f)   bo’ladi.  Ba'zi   funktsiyalar   uchun  buni   tеkshirish   oson   emas.   Lopital   qonuniga ko’ra,   bunday   holda   funktsiyalar   chеgarasini   ularning   hosilasi   chеgarasida
almashtirish mumkin. Xulosa
Xulosa   qilib   aytganda   Algoritm   bilan   ishlash   barcha   turdagi   dasturlash
tillarida   ishlash   imkoniyatini   yengillashtirib   beradi.   Har   bir   dasturning   dastlab
algaritmini yaratib olgan maqul. Agar biz dasturimizning ketma ketligini bilmasak,
u dastur biz o’ylagandan ko’proq hajmni egallashi mumkin ekan. Men C++ dasturi
strukturasi   haqida,   belgilar   bayoni,   algoritm   va   rekursiv   funksiya     tushunchasi,
ma’lumotlarni   kiritish   va   chiqarish   operatorlari   hamda   dasturda   ishlatiladigan
toifalar, ifodalar va ko’nikmalarga ega bo`ldim. Algoritmlash va dasturlash tillari
bo’yicha   yozilgan   bir   necha   kitoblar   bilan   tanishib   chiqdim   va   ulardan   o’zimga
kerakli   malumotlarni   oldim.   Kurs   ishimda   programmalash   texnologiyalari
Lingvistikaning   ba’zi   bir   misollari.Algoritimlarni   loyhalash   va   tahlil   qilish
masalalari   qaralgan.Biz   kundalik   hayotimizda   ham   bazi   bir   algoritmlardan
foydalanar   ekanmiz   avvalo   algoritmni   mohiyatini   anglab   olishimiz
kerakdir.Algoritmni   bir   qancha   xususiyatlari   mavjud   bo’lib   bular   tushunarlilik,
ommaviylik,   diskritlilik,   natijaviylilik,   umumiylik.   Mana   shunday   xususiyatlar
to’liq bo’lsagina biz algoritmlardan juda osonlik bilan foydalanishimiz mumkin. Amaliy ish
// Topoligik chop etish uchun c++ dasturiga kiramiz
// DAG ni saralaymiz
#include <bits/stdc++.h>
using namespace std;
 
// Grafni ifodalash uchun sinf yaratamiz
class Graph {
    // qadamlar soni
    int V;
 
    // qo’shni ro’yxatlar ro’yxatini o’z ichiga olgan massiv ko’rsatgichi
    list<int>* adj;
 
    // A function used by topologicalSort
    void topologicalSortUtil(int v, bool visited[],
                             stack<int>& Stack);
 
public:
    // Konstruktor
    Graph(int V);
 //grafikga chekka qo’shish funksiyasi
       void addEdge(int v, int w);
 
    // topologic tartibni chop etish
    // to’liq grafik     void topologicalSort();
};
 
Graph::Graph(int V)
{
    this->V = V;
    adj = new list<int>[V];
}
 
void Graph::addEdge(int v, int w)
{
    // v ro’yxatiga w qo’shing
    adj[v].push_back(w);
}
 //topologic void tomonidan ishlatiladigan rekursiv funksiya
void Graph::topologicalSortUtil(int v, bool visited[],
                                stack<int>& Stack)
{
    // joriy tugunni tashrif buyurilgan deb belgilang
    visited[v] = true;
 
    // barcha uchlar uchun takrorlash
  
    list<int>::iterator i;
    for (i = adj[v].begin(); i != adj[v].end(); ++i)
        if (!visited[*i])             topologicalSortUtil(*i, visited, Stack);
 
    // stack uchun joy ajratish
    // natijani saqlash
    Stack.push(v);
}
 
//topologic tartiblash funksiyasi
// It uses recursive topologicalSortUtil()
void Graph::topologicalSort()
{
    stack<int> Stack;
 
    // barcha uchlarini tashrif buyurilmagan deb belgilang
    bool* visited = new bool[V];
    for (int i = 0; i < V; i++)
        visited[i] = false;
 //rekursiv yordamchi funksiyani chaqirish
      // topologic saqlash uchun
    // hammasidan boshlab saralash
    // birma bir uchlari
    for (int i = 0; i < V; i++)
        if (visited[i] == false)
            topologicalSortUtil(i, visited, Stack);
 
    // Print contents of stack     while (Stack.empty() == false) {
        cout << Stack.top() << " ";
        Stack.pop();
    }
     
    delete [] visited;
}
 
// haydochi kodi
int main()
{
    //yuqoridagi diagrammada berilgan garafikni yarating
    Graph g(6);
    g.addEdge(5, 2);
    g.addEdge(5, 0);
    g.addEdge(4, 0);
    g.addEdge(4, 1);
    g.addEdge(2, 3);
    g.addEdge(3, 1);
 
    cout << "Following is a Topological Sort of the given "
            "graph \n";
 
    // funksiya chaqiruvi
    g.topologicalSort();
      return 0;
}
Izoh.
Bu kod natijasi bo’yicha quyida berilgan 543210 grafining topologik turi keltirildi.
Bu yerda grafning topologic turi saralandi. Foydalanilgan adabiyotlar
1. Markushevich A. I. Teoriya analiticheskix funktsiy. V 2-x t. – M.: Nauka, 1968. 
T.
2. – 624s 2. Goluzin G.M. Geometricheskaya teoriya funktsii kompleksnogo 
peremennogo. – M. : Nauka, 1976.– 540 s. 
3. B. V. SHabat. Vvedenie v kompleksnıy analiz. 1–chast. M.N. 1989.
 4. G. Xudayberganov, A. Vorisov, X. Mansurov. Kompleks analiz. Toshkent, 
«Universitet», 1998. 
5. G. Xudayberganov, A. Vorisov, X. Mansurov. Kompleks analiz.Karshi. 
«Nasaf», 2003. 
6. Virt N. Algoritmı strukturı dannıx programmı.-M.:Mir, 1985.-405s. 
7. Aripov M.M., Imomov T., Irmuxamedov Z.M. va boshqalar. Informatika. 
Axborot texnologiyalari. Toshkent, 1-qism. 2002, 2-qism. 2003 
8. http://ziyonet.uz 
9. www.google.uz

O`zbekiston Respublikasi Oliy va o`rta maxsus ta’lim vazirligi KURS ISHI Mavzu: “Lingvistikaning ba’zi bir misollari. Algoritimlarni loyhalash va tahlil qilish” Samarqand -2023

Reja: 1.Kirish 2. Matematik lingvistika 3. Algoritimlarni loyhalash va tahlil qilish a. Algoritm tushunchasi. b. Algoritmlarni loyihalash. c. Algoritmlarni loyihalashning asosiy bosqichlari. d. Algoritm tahlili tushunchasi. e. Boshlang’ich bеrilganlar sinflari. f. Algoritm tahlining asosiy tushunchalari. 4.Xulosa 5.Amaliy ish 6.Foydalanilgan adabiyotlar

Kirish Matematik lingvistika -1) tilshunoslikning tilni tadqiq etish va o rganishdaʻ matematik usullardan foydalanuvchi bo limi; 2) mat.ning tabiiy tillar bilan ba zi ʻ ʼ bir jihatlardan o xshash bo lgan mavhum strukturalarni o rganuvchi bo limi. ʻ ʻ ʻ ʻ Matematik lingvistika tilshunoslik bo limi sifatida tabiiy tillar hodisalarini va ʻ ularni tadqiq etish jarayonlarini mavhumiy-semiotik modellashtirish usulidan foydalanadi; matematik fan sifatida esa ana shu modellarning eng umumiy xossalarini tadqiq etadi va ularning tuzilish usullarini o rganadi. Har ikkala ʻ ma nodagi Matematik lingvistika ayni bir tushunchaviy apparatdan foydalanadi, ʼ ular orasida shunchalik yaqin bog liqlik mavjudki, uni ma lum shartlar bilan ʻ ʼ yagona semiotik fan sohasi deb hisoblash mumkin.Matematik lingvistika 20- asrning 50-yillarida paydo bo lgan. Uning asosiy tushunchalari — asos qilib ʻ olingan belgi-ishoralar (alifbo, lug at) to plami va ma lum alifbo belgi-ishoralari ʻ ʻ ʼ (so z shakllar, iboralar to plami) izchilliklari (zanjirlari) to plami kabi ʻ ʻ ʻ tushunchalardir. Bu asosiy tushunchalar tilning har bir sathida qo llanadi. O z ʻ ʻ maqsad-vazifasiga ko ra, Matematik lingvistika eng avvalo nazariy tilshunoslik ʻ vositasi hisoblanadi. Ayni paytda uning usul va yo llari amaliy lingvistik ʻ tadqiqotlarda — matnga avtomatik ishlov berishda, avtomatik tarjimada, inson va EHM o rtasidagi aloqa bilan bog liq tadqiqotlarda keng qo llanmoqda. EHM ʻ ʻ ʻ larning paydo bo‘lishi ( XX asrning 2-yarmi) bilan ALGORITMtushunchasi PROGRAMMALASHTIRISH tushunchasi bilan bog‘landi.Ko‘plab algoritmik tillar paydo bo‘ldi: Fortran, Paskal, Beysik….XII asrda Yevropada al – Xorezmi. matematik traktatining lotincha tarjimasi chiqdi. O‘sha paytlar Algoritm deganda o‘nlik sanoq sistemasida arifmetik amallarning bajarilash qoidalari nazarda tutilgan. Hozirgi davrda algoritm barcha soxalarda qo‘llanib kelinmoqda.Ingliz matematigi Alan Tyuring 1935 – 1936 yillarda «mantiqiy hisoblash mashinasi» nazariyasini yaratdi. Ishlab chiqilgan «Tyuring Mashina»si bo‘lajak matematiklar va kompyuterщiklar uchun majburiy o‘qitiladigan bo‘ldi. London mehmonxonalarining birida : «Bu yerda kodlarning buzuvchisi va informatikaning pioneri Alan Tyuring (1912 – 1954), tug‘ilgan» deb yozib qo‘yilgan.Rus matematigi Andrey Markov 1947 yil «normal algoritm» tushunchasini kiritdi va tizimlashgan va qat’iy algoritmlar umumiy nazariyasini yaratdi. Belgini qayta ishlashga mo‘ljallangan zamonaviy tillar (Prolog) Markovning «normal algoritm» lariga asoslanadi.O‘nli sanoq sistemasida Butun sonlar va o‘nli kasr bilan arifmetik amallarning bajarilish qoidasi birinchi bo‘lib, buyuk olim Muxammad ibn Muso al-Xorazmi (arabchadan tarjimasi «Muxammad Muso o‘g‘li Xorazmdan», qisqa qilib Al-Xorazmiy deyiladi) tomonidan ishlab chiqilgan.Al-Xorazmiy IX asrda Xiva shahrida yashab ijod qilgan. Arab tilida yozilgan asarlari yo‘qolib ketgan,

ammo XII asrda lotin tiliga tarjima qilingan nusxalari saqlanib qolingan. Shu orqali G arbiy Yevropa O‘nli sanoq sistemasida Butun sonlar va o‘nli kasr bilanʻ arifmetik amallarning bajarilish qoidasi bilan tanishgan. Algoritm ta’rifi. Elektron hisoblash mashinalarining vujudga kelishiga qadar algoritmga har xil ta’rif berib kelindi. Lekin ularning barchasi ma’no jihatdan bir- biriga juda yaqin bo‘lib, bu ta’rif hozirgi kunda quyidagicha talqin qilinadi.Ta’rif. Algoritm deb, biror masalani yechish uchun ma’lum qoidaga asosan bajariladigan amallarning chekli ketma-ketligiga aytiladi yoki aniq natija beruvchi sodda hisoblashlar ketma-ketligi.Yoki boshqacha aytsak algoritm-bu to‘g‘ri aniqlangan hisoblash jarayoni bo‘lib, natijada kirishda berilgan m-tlarni chiquvchi m-tlarga aylantirib beradi, ya’ni algoritm kiruvchi m-tlarni chiquvchi m-tlarga aylantiruvchi hisoblash qadamlari ketma-ketligidan iborat jarayondir. Masalan, amaliyotda juda ko‘p uchraydigan masalalardan biri bu -elementlar ketma-ketligidan ma’lum birlarini aniqlash masalasi ham aniq algoritm asosida yechiladi. Konkret masala: (4,6,-9,43,-11,7,91,-15) sonlar ketma-ketligidan manfiylarini aniqlash masalasida, kiruvchi ketma-ketlikdan chiquvchi (-9,-11,-15) ketma-ketlikni hosil qilish kerak bo‘ladi. Bunday masalalar ko‘pincha oraliq masala sifatida uchraydi. Ma’lumki, bu masalani bir necha hil algoritmlar yordamida echish mumkin. Bunday masalalarni juda ko‘p keltirish mumkin.Algoritmlarni loyihalash. Algoritmni tanlash qo‘yilgan masalaning shartlari va boshqa bir nechta parametrlar asosida amalga oshiriladi: ular elementlar soni, elementlar joylashish tartibi, EHM axitekturasi, elementlarga qo‘yiladigan masala shartlari va b. bo‘lishi mumkin. Shuning uchun, algoritmni loyihalashda masalaning qo‘yilishi, qo‘llash mumkin bo‘lgan algoritmlar sinflari va yuqoridagi parametrlar juda chuqur o‘rganilishi kerak. Algoritm korrekt deyiladi, agar unng natijasi barcha kiruvchi mt lar uchun aniq chiquvchi mt larni tashkil etsa. Bu holda ihlatilgan korrekt algoritm berilgan masalani yechib beradi deyiladi. Agar algoritm nokorrekt bo‘lsa, uning natijasi ba’zi bir kiruvchi mt lar uchun noto‘g‘ri bo‘ladi yoki umuman natija bermasligi mumkin. Ba’zi hollarda, ya’ni xatoliklarni tekshirib turish imkoni bo‘lganda, nokorrekt algoritmlar ham foydali bo‘lishi mumkin. Ko‘pincha korrekt algoritmlardan foydalaish maqsadga muvofiq hisoblanadi.Algoritm samaradorligi. Javob berilishi kerak bo‘lgan birinchi jiddiy savol: qanday qilib “samarali algoritm” tushunchasini aniqlash mumkin? Bir qarashda samaradorlikning ishchi ta’rifi quyidagicha ko‘rinishi mumkin.1- ta’rif: algoritm samarador deb ataladi, agar ma’lumotlar kiritilganda uni amalga oshirish tezkor bajarilsa.Albatta, samaradorlik nisbiy tushuncha bo‘lib, bir nechta algoritmlarni solishtirish orqali aniqlanadi.Xossalari:Tushunarlilik – algoritmda ijrochiga berilayotgan ko‘rsatmalar aniq mazmunda bo‘lishi;Diskretlilik – algoritmlarni chekli qadamlardan tashkil qilib bo‘laklash

imkoniyati ;Cheklilik – bajarilayotgan algoritm chekli qadamlarda natijaga olib kelishi;Natijaviylik - natijaning bo‘lishi;Ommaviylik – har bir algoritm mazmuniga ko‘ra bir turdagi masalalarning barchasi uchun ham o‘rinli bo‘lishi .Formallik – komandalarni mexanik bajarish imkoniyati.Bu xossa robotlar, kompyuterlar va boshqa qurilmalarda komandalarning ketma-ket bajarilishini ta’minlaydi.Algoritm turlari : Chiziqli algoritm - deb hech qanday shartsiz faqat ketma-ket bajariladigan jarayonlarga aytiladi. Tarmoqlanuvchi algoritm - deb ma’lum shartlarga muvofiq bajariladigan ko‘rsatmalardan tuzilgan algoritmga aytiladi.Takrorlanuvchi algoritm - deb biron bir shart tekshirilishi yoki biron parametrning har xil qiymatlari asosida takroriy xisblashlarni bajaradigan algoritmga aytiladi.Chiziqli algoritm - deb hech qanday shartsiz faqat ketma-ket bajariladigan jarayonlarga aytiladi. Chiziqli algoritm strukturasiTarmoqlanuvchi va siklik algoritmlarAlgoritmlarning qo‘llanish soxalari. Algoritmlarni amalda juda ko‘p yo‘nalihlarda qo‘llash mumkin, masalan:Inson genomini o‘qish masalasi-ya’ni inson DNK siga kiruvchi 100 ming genlar ketma-ketligini identifikasiya ilish; Internet; Elektron tijorat; Ishlab chiqarish va elektron tijoratda resurslardan optimal foydalanish va b.Algoritmni ishlab chiqish va tahlil qilish usullari. Yuqoridan pastga qarab algoritmni loyihalash yoki ketma-ket (bosqichma-bosqich) algoritmni loyihalash usuli - bu asl muammo (algoritm) bir qator yordamchi pastki qismlarga bo‘linganida (subalgoritmlar) sodda va elementar operasiyalar nuqtai nazaridan hal qilingan holda algoritmlarni tuzish usuli hisoblanadi ( proseduralar). "Pastdan-yuqoriga" usuli, aksincha, oldindan aniqlangan subalgoritmlarning to‘g‘ri to‘plamiga tayanib, funksional ravishda to‘liqroq bajariladigan kichik vazifalarni tuzadi, ulardan umumiyroq narsalarga o‘tadi va hokazo, biz echimni yoza oladigan darajaga yetguncha. Ushbu usul pastki qavatdagi dizayn usuli sifatida tanilgan.Algoritmlarning tarkibiyli hosil qilish prinsiplari (algoritmlarni ishlab chiqishning tarkibiy usullari) algoritmlarni asosiy tarkibiy algoritmik birliklaridan hosil qilish, ularning ketma-ket ulanishi yoki bir-birlariga joylashtirilishi algoritmni o‘qilishini va bajarilishini kafolatlaydigan qoidalarni yuqoridan pastga va ketma-ketlikda bajarish tamoyillaridir.Strukturalangan algoritm - bu asosiy algoritmik tuzilmalarni aniqlash va joylashtirish sifatida taqdim qilingan algoritmdir. Strukturalangan algoritmda statik holat (algoritmni yangilashdan oldin) va dinamik holat (yangilangandan keyin) bir xil mantiqiy tuzilishga ega, uni yuqoridan pastgacha kuzatib borish mumkin ("u ham o‘qiladi, ham bajariladi"). Algoritmlarning strukturali rivojlanishi bilan uning tuzilishi va bajarilishining har bir bosqichida algoritmning to‘g‘riligini kuzatish mumkin.Algoritmlarni (dasturlarni) loyihalash va ishlab chiqishda keng qo‘llaniladigan usullardan biri bu