logo

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

Загружено в:

08.08.2023

Скачано:

0

Размер:

57.275390625 KB
O`zbekiston  Respublikasi
Oliy va o`rta maxsus ta’lim vazirligi
Sharof Rashidov
nomidagi Samarqand Davlat
Universiteti Matematika fakul’teti
                     “ Amaliy matematika “  yo`nalishi
     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 ALGORITM
tushunchasi 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 strukturasi
Tarmoqlanuvchi va siklik algoritmlar
Algoritmlarning 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:
n=
n
n*logn
n^2
n^3
1,5^n
2^n
n!
10
<1 s <1 s
<1 s
<1 s
<1 s
<1 s
<4 s
30
<1 s
<1 s
<1 s
<1 s
<1 s
18min
10^25y
50
<1s
<1s
<1s
<1s
11min
36y
Juda ko`p
100
<1s
<1s <1s
<1s
12892y
10^17y
----
1000
<1s
<1s
<1s
18min
---
----
----
10000
<1s
<1s
2min
12kun
--
---
---
100000
<1s
<2s
3soat 32y
---
---
---
1 mln.
<1s
20s
12kun
31710y
---
---
---
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 resept
Umuman 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 tuzilmalari
Ushbu 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 tavsifi
“... 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 tavsif
Eng 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 tushunchasi Algoritm 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 sinfi	
е
Algoritmlarning 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.	
е е
1–rasm. O’sish funktsiylaraning grafigiklari.
1-jadval. Turli murakkablik sinflarida algoritmlarning bajaradigan amallari soni
n
log2n
n
nlog2n
n2
n3
2n2
1
0.0
1.0
0.0
1.0
1.0
2.0
2
1.0
2.0
2.0
4.0
8.0 4.0
5
2.3
5.0
11.6
25.0
125.0
32.0
10
3.3
10.0
33.2
100.0
1000.0
1024.0
15
3.9
15.0
58.6
225.0
3375.
32768.0
20
4.3
20.0 86.4
400.0
8000.0
1048576.0
30
4.9
30.0
147.2
900.0
27000.0
1073741824.0
40
5.3
40.0
212.9
1600.0
64000.0
1099511627776.0
50
5.6
50.0
282.2
2500.0
125000.0
1125899906842620.0 60
5.9
60.0
354.4
3600.0
216000.0
1152921504606850000.0
70
6.1
70.0
429.0
4900.0
343000.0
1180591620717410000000.0
80
6.3
80.0
505.8
6400.0
512000.0
1208925819614630000000000.0
90
6.5
90.0
584.3 8100.0
729000.0
1237940039285380000000000000.0
100
6.6
100.0
664.4
10000.0
1000000.0
1267650600228230000000000000000.0
masalan, agar biz algoritmni tahlil qilganda, uning x3-30x taqqoslash qilishini bilsak,
algoritmning murakkabligi x3 kabi o’sadi, d ymiz. Buning sababi shundaki, 100 ta е
kiruvchi raqamlarda x3 va orasidagi farq atiga 0,3 % ni tashkil qiladi. K yingi bo’limda	
е
biz bu fikrni formallashtiramiz.
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. Amaliy ish
// A C++ program to print topological
// sorting of a DAG
#include <bits/stdc++.h>
using namespace std;
 
// Class to represent a graph
class Graph {
    // No. of vertices'
    int V;
 
    // Pointer to an array containing adjacency listsList
    list<int>* adj;
 
    // A function used by topologicalSort
    void topologicalSortUtil(int v, bool visited[],
                             stack<int>& Stack);
 
public:
    // Constructor
    Graph(int V);
 
    // function to add an edge to graph
    void addEdge(int v, int w);
      // prints a Topological Sort of
    // the complete graph
    void topologicalSort();
};
 
Graph::Graph(int V)
{
    this->V = V;
    adj = new list<int>[V];
}
 
void Graph::addEdge(int v, int w)
{
    // Add w to v’s list.
    adj[v].push_back(w);
}
 
// A recursive function used by topologicalSort
void Graph::topologicalSortUtil(int v, bool visited[],
                                stack<int>& Stack)
{
    // Mark the current node as visited.
    visited[v] = true;
 
    // Recur for all the vertices     // adjacent to this vertex
    list<int>::iterator i;
    for (i = adj[v].begin(); i != adj[v].end(); ++i)
        if (!visited[*i])
            topologicalSortUtil(*i, visited, Stack);
 
    // Push current vertex to stack
    // which stores result
    Stack.push(v);
}
 
// The function to do Topological Sort.
// It uses recursive topologicalSortUtil()
void Graph::topologicalSort()
{
    stack<int> Stack;
 
    // Mark all the vertices as not visited
    bool* visited = new bool[V];
    for (int i = 0; i < V; i++)
        visited[i] = false;
 
    // Call the recursive helper function
    // to store Topological
    // Sort starting from all     // vertices one by one
    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;
}
 
// Driver Code
int main()
{
    // Create a graph given in the above diagram
    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";
 
    // Function Call
    g.topologicalSort();
 
    return 0;
} 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 Sharof Rashidov nomidagi Samarqand Davlat Universiteti Matematika fakul’teti “ Amaliy matematika “ yo`nalishi 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 ALGORITM tushunchasi 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.