Algoritmlarni tahlil qilish asoslari. Turli xil ishlash baholari algoritmlar
Mavzu: Algoritmlarni tahlil qilish asoslari. Turli xil ishlash baholari algoritmlar. Reja: 1. Algoritm tushunchasi. 2. Algoritm xossalari. 3. Algoritmlarni tahlil qilish.
Algoritm so`zi va tushunchasi IX asrda yashab ijod etgan buyuk bobokalonimiz Muxammad al-Xorazmiy nomi bilan uzviy bog`liq bo`lib, uning arifmetikaga bag`ishlangan “Al jabr va al-muqobala” nomli asarining dastlabki betidagi “Dixit Algoritmic” (“Dediki Al Xorazmiy”ning lotincha ifodasi) degan jumlalardan kelib chiqqan. Algoritm- bu aniq hisoblashlami bajaruvchi protsedura bo’lib unga kirish qismida kattalik yoki kattaliklar berilib chiqishda natijaviy kattalik yoki kattaliklar olinadi. Demak algoritm hisoblovchi qadamlardan tashkil topgan bo'lib, dastlabki qiymatlarga ko‘ra natijaviy kattaliklar qiymatini beradi. Algoritmning asosiy xossalari quyidagilardan iborat: 1. Diskretlilik. Bu xossaning mazmuni-algoritmlarni doimo chekli qadamlardan iborat qilib bo`laklash imkoniyati mavjudligidadir. Boshqacha aytganda, uni chekli sondagi oddiy ko`rsatmalar ketma-ketligi shaklida ifodalash mumkin. Algoritmning bu xossasi yuqorida keltirilgan hamma misollarda yaqqol ko`rinib turibdi. Agar kuzatilayotgan jarayonni chekli qadamlardan iborat qilib bo`laklay olmasak, u holda uni algoritm deb bo`lmaydi. 2. Tushunarlilik . Algoritmning ijrochisi hamma vaqt inson bo`lavermaydi. Choy damlashni yoki boshqa ishlarni bajarishni faqat odamga emas, balki robotga ham buyurish mumkin. Ijrochiga tavsiya etilayotgan ko`rsatmalar uning uchun tushunarli bo`lishi kerak, aks holda ijrochi oddiygina amalni ham bajara olmaydi. Bundan tashqari, ijrochi har qanday amalni bajara olmasligi ham mumkin. Har bir ijrochining bajara olishi mumkin bo`lgan ko`rsatmalar yoki buyruqlar birikmasi mavjud bo`lib, u ijrochining ko`rsatmalar tizimi (sistemasi) deyiladi. Shuning uchun ijrochi uchun berilayotgan har bir ko`rsatma ijrochining ko`rsatmalar tizimiga tegishli bo`lishi kerak. Ko`rsatmalarni ijrochining ko`rsatmalar tizimiga tegishli bo`ladigan qilib ifodalay olishimiz muhim ahamiyatga ega. Masalan, pastki sinfning a'lochi o`quvchisi “son kvadratga oshirilsin” degan ko`rsatmani tushunmasligi natijasida bajara olmaydi. Lekin
“son o`zini o`ziga ko`paytirilsin” shaklidagi ko`rsatmani bemalol bajaradi. Sababi, u ko`rsatma mazmunidan ko`paytirish amalini bajarish kerakligini anglaydi. 3. Aniqlik. Ijrochiga berilayotgan ko`rsatmalar aniq mazmunda bo`lishi kerak. Chunki, ko`rsatmadagi noaniqliklar mo`ljaldagi maqsadga erishishga olib kelmaydi. Odam uchun tushunarli bo`lgan “3-4 marta silkitilsin”, “5-10 daqiqa qizdirilsin”, “1-2 qoshiq solinsin”, “tenglamalardan biri yechilsin” kabi noaniq ko`rsatmalar robot yoki kompyuterni qiyin ahvolga solib qo`yadi. Bundan tashqari, ko`rsatmalarning qaysi ketma-ketlikda bajarilishi ham muhim ahamiyatga ega. Demak, ko`rsatmalar aniq berilishi va faqat algoritmda ko`rsatilgan tartibda bajarilishi shart ekan. 4. Ommaviylik . O`ar bir algoritm mazmuniga ko`ra bir turdagi masalalarning barchasi uchun ham o`rinli bo`lishi kerak. Ya'ni, masaladagi boshlang’ich ma'lumotlar qanday bo`lishidan qat'iy nazar algoritm shu xildagi har qanday masalani yechishga yaroqlidir. 5. Natijaviylik. O`ar bir algoritm chekli sondagi qadamlardan keyin albatta natija berishi shart. Bajariladigan amallar ko`p bo`lsa ham baribir natijaga olib kelishi kerak. Chekli qadamdan keyin qo`yilgan masala yechimga ega emasligini aniqlash ham natija hisoblanadi. Agar ko`rilayotgan jarayon cheksiz davom etib natija bermasa, uni algoritm deb ayta olmaymiz. Algoritmning turlari Algoritmlarni asosan 3 turga bo`lish mumkin: 1) Chiziqli algoritmlar; 2) Tarmog`lanuvchi algoritmlar; 3) Takrorlanuvchi algoritmlar. Chiziqli algoritmlar
Chiziqli algoritmlarda asosan hech qanday shart tekshirilmaydi va jarayonlar tartib bilan ketma-ket bajariladi. Demak, chiziqli algoritmlar sodda hisoblashlar yoki amallar ketma-ketligidir. Chiziqli algoritmlarga misol qilib quyidagi formulalar bo`yicha hisoblashlarni keltirish mumkin. Tarmog`lanuvchi algoritmlar. Biror shartning bajarilishi bilan bog`liq ravishda tuziladigan algoritmlarga tarmog`lanuvchi algoritmlar deyiladi. Tarmog`lanuvchi algoritmlar hisoblashlar ketma-ketligini aniqlaydigan shartlarni o`z ichiga oladi. Blok-sxema ko`rinishida bu shuni bildiradiki, blok-sxemada hech bo`lmaganda bitta romb ishtirok etadi. Masalan: ko`chaga qanday kiyimda chiqishimiz ob-havoga, avtomatdan sharbatli yoki mineral suv ichishimiz esa unga qancha so`mlik “jeton” bog`liqdir. Yuqorida keltirilgan “Svetofor” algoritmi ham tarmog`lanuvchi algoritmga misoldir. Takrorlanuvchi (siklik) algoritmlar. Ma'lum bir shart asosida algoritmda bir necha marta takrorlanish yuz beradigan jarayonlar ham ko`plab uchraydi. Masalan, yil fasllarining har yili bir xilda takrorlanib kelishi, har haftada bo`ladigan darslarning kunlar bo`yicha takrorlanishi va hokazo. Demak, takrorlanuvchi algoritmlar deb shunday algoritmlarga aytiladiki, unda bir yoki bir necha amallar ketma-ketligi bir necha marta takrorlanadi, bu ketma-ketlik tarmog`lardan iborat bo`lishi ham mumkin. Bundan chiziqli va tarmog`lanuvchi algoritmlar takrorlanuvchi algoritmlarning xususiy holi ekanligi kelib chiqadi. Algoritmni tahlil qilish 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 hisoblash7. Bitta masalani turli algoritmlar bilan еchish mumkin. Algoritmlar tahlili bizga algoritmni tanlash uchun qurol bo’ladi. 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. 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. Algoritm murakkabligini baholash kriteriyalari Bir xil me’yorda o’lchash kriteriyasi algoritmning har bir bosqichi bir vaqt birligida, xotira yacheykasi esa hajmning bir birligida (konstanta bo’yicha aniqlikda) bajarilishini nazarda tutadi. Logarifmik o’lchash kriteriyasi ma'lum amal bilan qayta ishlanadigan operand o’lchamini va xotira yacheykasida saqlanadigan qiymatni hisobga oladi.