Muhammad al-Xorazmiy nomidagi Toshkent Axborot Texnologiyalari Universiteti Urganch filiali
MUSTAQIL ISH
Fan nomi: Algoritmlarni loyihalash
Fakultet: Telekomunikatsiya Texnologiyalari
Guruh: 931-21
Mavzu: “Algoritmlarni eng yomon va o’rtacha xolatlarda baholash”
Bajardi: Xasanov Abbosbek
Tekshirdi: Kutliboyev Temur
Algoritm so‘zi va tushunchasi IX asrda yashab ijod etgan buyur alloma Muhammad al-Xorazmiy nomi bilan uzviy bog‘liq. Algoritm so‘zi Al-Xorazmiy nomini Yevropa olimlari tomonidan buzib talaffuz qilinishidan yuzaga kelgan. Al-Xorazmiy birinchi bo‘lib o‘nlik sanoq sistemasining tamoyillarini va undagi to‘rtta amallarni bajarish qoidalarini asoslab bergan.
Algoritmlarning turli ta’riflari mavjud. Rasmiy ta’riflardan biri bo’yicha
algoritm bu qo’yilgan masalani yechilishiga olib keluvchi aniq harakatlarning chekli ketma-ketligidir.
Bu tushunchadan algoritmning quyidagi xossalari kelib chiqadi:
Diskretlilik – ya’ni aniqlanayotgan jarayonni qadamba-qadam ko’rinishi.
Ommaviylik – algoritm o’xshash masalalar turkumini yechishi kerak.
Tushunarlilik – algoritmda beriladigan ko’rsatmalar foydalanuvchiga tushunarli bo’lib, uning talablariga javob berishi kerak.
Aniqlilik – algoritmda ma’lum tartibda amallarni bajarish nazarda tutilishi kerak va bajaruvchiga joriy qadam tugatilishi bilan qaysi qadam keyingi bo’lib bajarilishi aniq ko’rsatilishi kerak.
Natijaviylik. Har bir algoritm chekli sondagi qadamlardan so‘ng albatta natija berishi shart. Bajariladigan amallar ko‘p bo‘lsa ham baribir natijaga olib kelishi kerak. Chekli qadamdan so‘ng qo‘yilgan masala yechimga ega emasligini aniqlash ham natija hisoblanadi. Agar ko‘rilayotgan jarayon cheksiz davom etib natija bermasa, uni algoritm deb atay olmaymiz.
Algoritmik hal etilmaslik. Shunday masalalar borki uning yechimini olish uchun umumiy algoritm (Tyuring mashinasi) mavjud emas, bu masalalarni tavsiflovchi kirish ma’lumotlari qo’llaniladigan algoritmlar ishlamaydi yoki cheksiz davom etadi.
1-masala. 𝝅 sonida 𝑥 sonining taqsimlanishini hisoblash;
𝝅 = 3,141592 … , 𝑓9(1) = 5.
𝝅 = 48𝑎𝑟𝑐𝑡𝑔(1/18) + 24𝑎𝑟𝑐𝑡𝑔(1/57) − 20𝑎𝑟𝑐𝑡𝑔(1/239).
Ixtiyoriy 𝑛 uchun 𝑓𝑥(𝑛) funksiyani hisoblash masalasi.
2-masala. Mukammal sonlarni hisoblash;
Mukammal son – bu o’zining bo’luvchilari yig’indisidan tashkil topgan son, masalan:
𝑆(1) = 1 = 1
𝑆(2) = 6 = 1 + 2 +3
𝑆(3) = 28 = 1 + 2 + 4 + 7 + 14.
Ixtiyoriy berilgan 𝑛 soni uchun 𝑆(𝑛) ni hisoblash masalasi.
Algoritmni to’liq qurish bosqichlari bilan quyida tanishib chiqamiz:
Masalaning qo’yilishi
Modelni qurish
Algoritmni ishlab chiqish
Algoritm to’g’riligini tekshirish
Kodlashtirish
Dasturni tekshirish
Hujjatlashtirish
Algoritmlarni tuzish – bu ijodiy ish bo’lib, ixtiyoriy zaruriy algoritmni tuzish uchun umumiy usullar mavjud emas, kishining ijodiy qobiliyatiga bog’liq.
Albatta, algoritmni aniq sxema bo’yicha tuzish zarur bo’lib qoladigan sodda hollar ham mavjud. Bunday hollarda yechilish algoritmi avval biron kim tomonidan olingan masalalarni misol keltirish mumkin. Masalan, differensial tenglamalarni sonli integrallash uchun Eyler metodi. Bu metod masalani yechish uchun umumiy holda ifodalangan algoritmdir.
Algoritmlar sifatini baholash uchun mezonlarni ko’raylik. Mavjud mezonlar juda taxminlashgan. Masalan, algoritmni bajarishda bajaruvchining xotira uskunalari hajmi yetarli bo’lmasa, u algoritm yomon deb hisoblanadi. Boshqa mezon sifatida algoritmning bajarilishi uchun talab qilinadigan vaqtni ko’rsatish mumkin. Vaqtni baholash bajaruvchining fizik xarakteristikalari hisobga olinishi kerak. Chunki har bir operatsiya har xil o’zgaruvchilar bilan bajarilganda vaqt ham har xil bo’ladi. Bunchalik aniq ma’lumotni har bir foydalanuvchi uchun yig’ib bo’lmaganligi sababli odatda o’rtacha tezkorlik qabul qilinadi. Ketma-ket bajarilayotgan operatsiyalar sonini aniqlab, uni o’rtacha tezkorlikka ko’paytirsa, algoritm bajarilishining amalga yaqin bo’lgan vaqtini topishimiz mumkin.
Demak, algoritmlarni baholash uchun ikkita asosiy kretiriya mavjud ekan.
Algoritmni ishlash vaqti bo’yicha baholash
Algoritmni bajarish uchun xotiradan egallagan hajmi bo’yicha baholash
Algoritmlarni asimptotik (O()) baholash – algoritmda kiruvchi ma’lumotlarning bajariladigan amallar soniga ma’lum bir qonuniyatlar asosida mos qo’yilishidir. Bu qonuniyatlar kvadratik, factorial, logarifmik bo’lishi mumkin.
Agar kiruvchi ma'lumotlarning o'lchamlari oshsa, algoritmning bajarilish vaqti f(N) funksiyasi bilan bir xil tezlikda oshsa, algoritmda O(f(n)) murakkablik bor.
Agar kiruvchi ma'lumotlarning o'lchamlari oshsa, algoritmning bajarilish vaqti f(N) funksiyasi kvadratik tezlikda oshsa, algoritmda O(f(n^2)) murakkablik bor.
Uch asimptotik belgilar asosan algoritmlarning vaqt murakkabligini ifodalash uchun ishlatiladi :
Θ-notation ( teta );
O-notation ( O );
Ω notasi ( Omega ).
Hisoblash mashinalar tezligi oshishiga qaramasdan, ular yordamida yechilayotgan masalalar kattaligini oshishini algoritm qiyinligini tahlil orqali aniqlaydi.
Faraz qilaylik, A1,A2,…,A5 nomli 5 ta algoritm quyidagi vaqtli qiyinliklar bilan berilgan.
Algoritm
|
Vaqtli qiyinlik
|
A1
|
N
|
A2
|
|
A3
|
|
A4
|
|
A5
|
|
Bu yerda vaqtli qiyinlik – bu n kattalikdagi kirishlarni qayta ishlash uchun kerak bo’ladigan vaqt birliklar soni. Masalan, vaqt birligini 1 millisekund deb qabul qilaylik.
Bunda A1 algoritm bir sekundda 1000 kattalikdagi kirishni qayta ishlash mumkin, A5 algoritmi esa kirish kattalikdagina 9 dan oshirib bilmaydi.
Keyingi jadval 1 sekundda, 1 minutda, 1 soatda 5 ta algoritmlarni har birining yordamida yechiladigan masalaning kattaligi keltirilgan.
Algoritm
|
Vaqt qiyinlik
|
Masalaning maksimal o’lchami
|
|
|
|
|
1 sek
|
1 min
|
1 soat
|
A1
|
|
1000
|
60*100
|
|
A2
|
|
140
|
4893
|
|
A3
|
|
31
|
244
|
1897
|
A4
|
|
10
|
39
|
153
|
A5
|
|
9
|
15
|
21
|
“O-yozuv” usulning kamchiligi shundaki – konkret berilganlar uchun dastur bajarilishiga aniq sarflanayotgan vaqtni hisoblab bilmaymiz, faqatgina qadamlar bajarilish soni bo’lganini bildik. Lekin bu usul bilan tahlil qilish qulay, va berilgan amaliy masala uchun dasturni samaradorligini aniqlaydigan dastlabki hisoblashlar uchun algoritmning isahlash vaqtini assimptotik bahosini beradi.
Samaradorlikni baholashga misollar
Masala, Qalam va qog’oz yordamida, quyidagi 16 ta kvadratdan iborat shaklni yasash kerak.
1
|
2
|
3
|
4
|
5
|
6
|
7
|
8
|
9
|
10
|
11
|
12
|
13
|
14
|
15
|
16
|
Algoritm bahosi O(n)
Bu jarayon 4 ta qadamda bajarildi. Demak algoritm bahosi O(logN)
Agar biz dasturimizda bir o’lchovli massivdan foydalansak, bu kamida O(n) bilan baholanadi.
Masala. Bir o’lchovli massivning elementlarini 2 ga ko’paytirish algoritmini baholang
for(int i=0; i
cin>>a[i];
for(int i=0; i a[i]*=2;
Bu yerda sikl operatori (for(int i=0; iMasala. Ikki o’lchovli massivning elementlarini 2 ga ko’paytirish algoritmni baholang.
for(int i=0; ifor(int j=0; j{
a[i][j]*=2;
}
Bu algoritmning matematik modeli
Dostları ilə paylaş: |