Lingvistikaning ba’zi bir misollari. Algoritimlarni loyhalash va tahlil qilish
![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](/data/documents/44f40fb3-5674-4e30-9d0f-f1b1bd22fb6c/page_1.png)
![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](/data/documents/44f40fb3-5674-4e30-9d0f-f1b1bd22fb6c/page_2.png)
![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.](/data/documents/44f40fb3-5674-4e30-9d0f-f1b1bd22fb6c/page_3.png)
![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](/data/documents/44f40fb3-5674-4e30-9d0f-f1b1bd22fb6c/page_4.png)
![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.](/data/documents/44f40fb3-5674-4e30-9d0f-f1b1bd22fb6c/page_5.png)
![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.](/data/documents/44f40fb3-5674-4e30-9d0f-f1b1bd22fb6c/page_6.png)
![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](/data/documents/44f40fb3-5674-4e30-9d0f-f1b1bd22fb6c/page_7.png)
![<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](/data/documents/44f40fb3-5674-4e30-9d0f-f1b1bd22fb6c/page_8.png)
![<1s
<1s
12892y
10^17y
----
1000
<1s
<1s
<1s
18min
---
----
----
10000
<1s
<1s
2min
12kun
--
---
---
100000
<1s
<2s
3soat](/data/documents/44f40fb3-5674-4e30-9d0f-f1b1bd22fb6c/page_9.png)
![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.](/data/documents/44f40fb3-5674-4e30-9d0f-f1b1bd22fb6c/page_10.png)
![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.](/data/documents/44f40fb3-5674-4e30-9d0f-f1b1bd22fb6c/page_11.png)
![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,](/data/documents/44f40fb3-5674-4e30-9d0f-f1b1bd22fb6c/page_12.png)
![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".](/data/documents/44f40fb3-5674-4e30-9d0f-f1b1bd22fb6c/page_13.png)
![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](/data/documents/44f40fb3-5674-4e30-9d0f-f1b1bd22fb6c/page_14.png)
![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.](/data/documents/44f40fb3-5674-4e30-9d0f-f1b1bd22fb6c/page_15.png)
!["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](/data/documents/44f40fb3-5674-4e30-9d0f-f1b1bd22fb6c/page_16.png)
![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](/data/documents/44f40fb3-5674-4e30-9d0f-f1b1bd22fb6c/page_17.png)
![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](/data/documents/44f40fb3-5674-4e30-9d0f-f1b1bd22fb6c/page_18.png)
![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
е](/data/documents/44f40fb3-5674-4e30-9d0f-f1b1bd22fb6c/page_19.png)
![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](/data/documents/44f40fb3-5674-4e30-9d0f-f1b1bd22fb6c/page_20.png)
![), 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
е](/data/documents/44f40fb3-5674-4e30-9d0f-f1b1bd22fb6c/page_21.png)
![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](/data/documents/44f40fb3-5674-4e30-9d0f-f1b1bd22fb6c/page_22.png)
![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
е е](/data/documents/44f40fb3-5674-4e30-9d0f-f1b1bd22fb6c/page_23.png)
![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](/data/documents/44f40fb3-5674-4e30-9d0f-f1b1bd22fb6c/page_24.png)
![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](/data/documents/44f40fb3-5674-4e30-9d0f-f1b1bd22fb6c/page_25.png)
![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](/data/documents/44f40fb3-5674-4e30-9d0f-f1b1bd22fb6c/page_26.png)
![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](/data/documents/44f40fb3-5674-4e30-9d0f-f1b1bd22fb6c/page_27.png)
![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 .
Ω п га п е ва](/data/documents/44f40fb3-5674-4e30-9d0f-f1b1bd22fb6c/page_28.png)
![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.
е](/data/documents/44f40fb3-5674-4e30-9d0f-f1b1bd22fb6c/page_29.png)
![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.](/data/documents/44f40fb3-5674-4e30-9d0f-f1b1bd22fb6c/page_30.png)
![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);](/data/documents/44f40fb3-5674-4e30-9d0f-f1b1bd22fb6c/page_31.png)
![// 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](/data/documents/44f40fb3-5674-4e30-9d0f-f1b1bd22fb6c/page_32.png)
![// 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](/data/documents/44f40fb3-5674-4e30-9d0f-f1b1bd22fb6c/page_33.png)
![// 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);](/data/documents/44f40fb3-5674-4e30-9d0f-f1b1bd22fb6c/page_34.png)
![cout << "Following is a Topological Sort of the given "
"graph \n";
// Function Call
g.topologicalSort();
return 0;
}](/data/documents/44f40fb3-5674-4e30-9d0f-f1b1bd22fb6c/page_35.png)
![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](/data/documents/44f40fb3-5674-4e30-9d0f-f1b1bd22fb6c/page_36.png)
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.