MA’LUMOTLARNI SARALASH. SARALASHNI BIRLASHTIRISH(SILYANIE)USULI
“ MA’LUMOTLARNI SARALASH. SARALASHNI BIRLASHTIRISH(SILYANIE)USULI ” Reja: • .Kirish.Algoritm haqida tushuncha • . Birlashtirib saralash • Amaliy qism 1. Birlashtirib saralash (Merge sort) 2.Dastur kodi 3.Birlashtirish algoritmi qay tarzda ishlashi haqida • ..Xulosa • . Foydalanilgan adabiyotlar
“Algoritm — bu dasturchilar o’zlari nima qilayotganliklarini boshqalar bilmasligini xohlagan paytida ishlatadigan so’zlari” — Unanonymous. Kirish.Algoritm haqida tushuncha Algoritm so’zi al-Xorazmiyning arifmetikaga bag’ishlangan asarining dastlabki betidagi “Dixit Algoritmi” (“dediki al-Xorazmiy” ning lotincha ifodasi) degan jumlalardan kelib chiqqan. Shundan so’ng al-Xorazmiyning sanoq sistemasini takomillashtirishga qo’shgan hissasi, uning asarlari algoritm tushunchasining kiritilishiga sabab bo’lganligi ta’kidlab o’tiladi. Algoritm nima degan savolga, u asosiy tushuncha sifatida qabul qilinganligidan, uning faqat tavsifi beriladi, ya’ni biror maqsadga erishishga yoki qandaydir masalani yechishga qaratilgan ko’rsatmalarning (buyruqlarning) aniq, tushunarli, chekli hamda to’liq tizimi tushuniladi. Algoritm tushunchasi aniq shaklda 20-asr boshlarida D. Gilbert, K. Gyodel, S. Klin, A. Chyorch, E. Post, A. Tyuring, N. Viner, A. A. Markov singari olimlarning asarlari tufayli shakllandi. Eng qadimiy raqamli algoritmlardan biri Yevklid algoritmi (miloddan avvalgi III asr) deb hisoblanadi - ikki sonning eng katta umumiy bo'luvchisini topish. Algoritmlarning zamonaviy nazariyasi nemis matematikasi Kurt Gyodel (1931) asarlari bilan boshlandi, ular o'zlarining rasmiy, izchil aksiomalar tizimi doirasida yechib bo'lmaydigan muammolar mavjudligini ko'rsatdi. Algoritmlar nazariyasi bo'yicha birinchi fundamental ishlar 1936-yilda paydo bo'lgan. Tyuring mashinasi, Post va Chyorch tomonidan λ-hisobi taklif etiladi. Ushbu mashinalar algoritmning formallashtirilgan rasmiylashtirilishi edi. Algoritmni bajarayotgan kishi – ijrochi, asosiy algoritmni aniqlashtiruvchi algoritm – yordamchi algoritm ekanligini ham ta’kidlab o’tish joiz. Umuman, algoritmning 5 ta qanday maqsadga mo’ljallanganligidan qat’i nazar uni muvaffaqiyat bilan bajarish mumkinligini aytib o’tish lozimdir. Algoritmning bir nechta ta’rifi mavjud. Ulardan ayrimlarini keltirib o’tamiz: – “Algoritm - bu belgilaydigan cheklangan qoidalar to'plami, muayyan vazifalar to'plamini hal qilish bo'yicha amallar ketma -ketligi va beshta muhim xossaga ega: aniqlik, tushunarlilik, kiritish, chiqarish, samaradorlik”. (D. E. Knut). – “Algoritm - bu qat'iy belgilangan qoidalar asosida bajariladigan har qanday hisoblash tizimidir, bu ma'lum bir qator bosqichlardan so'ng, aniq qo'yilgan masalani hal qilishga olib keladi" (A. Kolmogorov) – “Algoritm - bu har xil boshlang'ich ma'lumotlardan kerakli natijaga o'tadigan 2
hisoblash jarayonini belgilaydigan aniq ketma-ketlik" (A. Markov). 1950-yillarda algoritm nazariyasiga o'z hissalarini Kolmogorov va Markov asarlari qo'shgan. 1960-1970 yillarda algoritm nazariyasida tadqiqot yo'nalishlari shakllandi: 1) Algoritmlarning klassik nazariyasi (rasmiy tillar nuqtai nazaridan masalalarni shakllantirish, yechuvchanlik muammosi tushunchasi, murakkablik sinflarini kiritish, P = NP (?) masalasini shakllantirish, NP-ning to'liq masalalarini sinfi va uni o'rganish); 2) Algoritmlarni asimptotik tahlil qilish nazariyasi (algoritmning murakkabligi tushunchasi, algoritmlarni baholash kriteriyal ari, asimptotik baholarni olish usullari, xususan, rekursiv algoritmlar uchun, murakkablikni yoki bajarilish vaqtini asimptotik tahlil qilish); 3) Hisoblash algoritmlarini amaliy tahlil qilish nazariyasi (funksiyalarning intervalli tahlili, algoritmlar sifatining amaliy mezonlari, ratsional algoritmlarni tanlash metodikasi). Algoritmning aniq yoki bilvosita turli xil ta'riflari bir qator talablarni keltirib chiqaradi: - algoritmda cheklangan miqdordagi elementar bajarilishi mumkin bo'lgan ketma ketlik bo'lishi kerak, ya'ni yozuvning aniqligi talabi bajarilishi kerak; - algoritm masalani yechishda cheklangan sonli bosqichlarni bajarishi kerak, ya'ni harakatlarning aniqligi talabi bajarilishi kerak; - barcha qabul qilingan kirish ma'lumotlari uchun algoritm bir xil bo'lishi kerak, ya'ni universallik talabiga javob berish; - algoritm qo'yilgan vazifaga nisbatan to'g'ri yechimga olib kelishi kerak, ya'ni to'g'rilik talabi bajarilishi kerak. Algoritm xossalari Algoritmning asosiy xossalari haqida quyidagilarni ta’kidlash mumkin: 1-xossa . Diskretlilik, ya’ni algoritmni chekli sondagi oddiy ko’rsatmalar ketma ketligi shaklida ifodalash mumkin. 2-xossa . Tushunarlilik, ya’ni ijrochiga tavsiya etilayotgan ko’rsatmalar uning uchun tushunarli bo’lishi shart, aks holda ijrochi oddiy amalni ham bajara olmay qolishi mumkin. Har bir ijrochining bajara olishi mumkin bo’lgan ko’rsatmalar tizimi mavjud. 3-xossa . Aniqlik, ya’ni ijrochiga berilayotgan ko’rsatmalar aniq mazmunda bo’lishi lozim hamda faqat algoritmda ko’rsatilgan tartibda bajarilishi shart. 4-xossa . Ommaviylik, ya’ni har bir algoritm mazmuniga ko’ra bir turdagi masalalarning barchasi uchun yaroqli bo’lishi lozim. Masalan, ikki oddiy kasr umumiy maxrajini topish algoritmi har qanday kasrlar umumiy maxrajini topish uchun ishlatiladi. 3
5-xossa . Natijaviylik, ya’ni har bir algoritm chekli sondagi qadamlardan so’ng albatta natija berishi lozim. Bu xossalar mohiyatini o’rganish va konkret algoritmlar uchun qarab chiqish talabalarning xossalar mazmunini bilib olishlariga yordam beradi. Algoritmning tasvirlash usullari Algoritmning tasvirlash usullari haqida gapirganda algoritmning berilish usullari xilma-xilligi va ular orasida eng ko’p uchraydiganlari quyidagilar ekanligini ko’rsatib o’tish joiz: 1. Algoritmning so’zlar orqali ifodalanishi. 2. Algoritmning formulalar yordamida berilishi. 3. Algoritmning jadval ko’rinishida berilishi, masalan, turli matematik jadvallar, loteriya yutuqlari jadvali, funksiyalar qiymatlari jadvallari bunga misol bo’ladi. 4. Algoritmning dastur shaklida ifodalanishi, ya’ni algoritm kompyuter ijrochisiga tushunarli bo’lgan dastur shaklida beriladi. 5. Algoritmning algoritmik tilda tasvirlanishi, ya’ni algoritm bir xil va aniq ifodalash, bajarish uchun qo’llanadigan belgilash va qoidalar m ajmui algoritmik til orqali ifodalashdir. Ulardan o’quv o’rganish tili sifatida foydalanilmoqda. Bo’lardan Ye-praktikum yoki Ye-tili algoritm ijrochisi algoritmik tili ham mavjud. 6. Algoritmlarning grafik shaklda tasvirlanishi. Masalan, grafiklar, sxemalar ya’ni blok - sxema bunga misol bo’la oladi. Blok sxemaning asosiy elementlari quyidagilar: oval (ellips shakli)-algoritm boshlanishi va tugallanishi, to’g’ri burchakli to’rtburchak-qiymat berish yoki tegishli ko’rsatmalarni bajarish. Romb - shart tekshirishni belgilaydi. Uning yo’naltiruvchilari tarmoqlar bo’yicha biri ha ikkinchisi yo’q yo’nalishlarni beradi, parallelogramm- ma’lumotlarni kiritish yoki chiqarish, yordamchi algoritmga murojaat - parallelogramm ikki tomoni chiziq, yo’naltiruvchi chiziq - blok-sxemadagi harakat boshqaruvi, nuqta-to’g’ri chiziq (ikkita parallel) - qiymat berish. Algoritmda bajarilishi tugallangan amallar ketma-ketligi algoritm qadami deb yuritiladi. Har bir alhoxida qadamni ijro etish uchun bajarilishi kerak bo’lgan amallar haqidagi ko’rsatma buyruq deb aytiladi. Algoritmlarni ko’rgazmaliroq qilib tasvirlash uchun blok-sxema, ya’ni geometrik usul ko’proq qo’llaniladi. Algoritmning blok-sxemasi algoritmning asosiy tuzilishining yaqqol geometrik tasviri: algoritm bloklari, ya’ni geometrik shakllar ko’rinishida, bloklar orasidagi aloqa esa yunaltirilgan chiziqlar bilan ko’rsatiladi. Chiziqlarning yunalishi bir blokdan so’ng qaysi blok bajarilishini bildiradi. Algoritmlarni ushbu usulda ifodalashda vazifasi, tutgan o’rniga qarab quyidagi geometrik shakl(blok) lardan foydalaniladi. Algoritmlar berilishi va ifodalanishiga qarab: chiziqli, tarmoqlanuvchi va 4
takrorlanuvchi turlarga bo’linadi. Algoritmning turlari bilan tanishtirganda, avvalo hech qanday shart tekshirilmaydigan va tartib bilan faqat ketma-ket bajariladigan jarayonlarni ifodalaydigan chiziqli algoritmlar aytib o’tiladi. Algoritm xato natijalarni keltirib chiqaradigan yoki umuman natija bermaydigan bo'lsa, xatolarni o'z ichiga oladi. Algoritm har qanday to'g'ri kirish uchun to'g'ri natijalarni beradigan bo'lsa, xatosiz bo'ladi. Ma'lumotlarni kirish va chiqish turlari bo'yicha farqlash mumkin - Raqamli masalalarni yechish algoritmlari (birinchi bo'lib paydo bo'ldi); - Raqamli bo'lmagan algoritmlar. Birlashtirib saralash algoritmlari. Samarali saralash algoritmlari. Birlashtirib saralash algoritmlari. Birlashtirib saralashni rekursiv va rekursiv bo'lmagan algoritmlari. Vaqt va xotira bo`yicha murakkabliklar tahlili. Merge prosedurasi birlashtirib saralashni asosiy prosedurasi sifatida. Birlashtirish protsedurasi bajarilishda xotirani tejash. Tashqi birlashtirib saralash. Tahlil va murakkablik. Ma’lumki, inson kundalik turmushida turli - tuman ishlarni bajaradi. Har bir ishni bajarishda esa bir qancha elementlarni ketma - ket amalga oshirishga to‘g‘ri keladi. Mana shu ketma-ketlik yozilsa, u bajariladigan ishning algoritmi bo‘ladi. Algoritm ma’lum bir buyruqlar to‘plami bo‘lib, bajaruvchi uchun aniq ko‘rsatmalarni o‘z ichiga mujassamlashtiradi. Ushbu buyruqlar bajaruvchiga ko‘rsatilgan maqsadga erishish uchun asos bo‘lishi kerak. Demak, qo‘yilgan masalani bajarish ma’lum ketma-ketlikda elementlarni ijro etish orqali erishiladi. Bunda algoritmni bajaruvchi algoritm ijrochisi hisoblanadi. Umuman, uni 2 guruhga ajratish mumkin: 1-guruh algoritmlarining ijrochisi faqat inson bo‘lishi mumkin. 2-guruh algoritmlarining ijrochisi ham inson, ham kompyuter bo‘lishi mumkin. Bu guruh algoritmlari ijrochisini kompyuter zimmasiga yuklash mumkin. Buning uchun algoritmni kompyuter tushunadigan biror dasturlash tilida yozib, keyin uning xotirasiga kiritish kifoya. Umuman olganda ijrochi algoritmda mavjud maqsadni bilmaydi. U bevosita keltirilgan buyruqlarni bajaradi. Informatikada algoritmlarning ijrochisi kompyuter deb hisoblanadi. 5