Topologik saralash. Algoritmning murakkabligini baholash”
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: “Topologik saralash. Algoritmning murakkabligini baholash” Samarqand -2023
Reja: 1. Kirish 2. Asosiy qism A) Saralash algoritmlar haqida B) Qidirish algoritmlari C) Topografik algoritmlarga misollar D) Murakkablik tahlili 3. Xulosa 4. Amaliy ish 5. Foydalangan Adobiyotlar
Kirish Saralash algoritmlari Saralash algoritmlari – informatikada juda yaxshi o’rganilgan sohalardan biri va u juda keng qamrovli qo’llanilish sohasiga ega. Ularni katta hajmdagi ma’lumotlarni saqlash va qayta ishlash amallari bajariladigan har qanday joyda uchratish mumkin. Ba’zi ma’lumotlarni qayta ishlash masalalari agar ma’lumotlar saralangan bo’lsa oson yechiladi. Saralash metodlari Odatda saralash metodlarini ikkiga ajratishadi: Ichki saralash –ma’lumotlar operativ xotirada joylashgan bo’lib, bunda dasturning harakatlari sonini (solishtirish, solishtirishlar soni, elementlar almashinuvi va b.qa metodlarga asoslangan) optimallashtirish muhim ahamiyat kasb etadi; Tashqi saralash – ma’lumotlar murojaatlarni sekinlashtiruvchi tashqi hotirada (magnit lenta, baraban, disk va b.qa) joylashgan bo’lib, bunda aynan shu qurilmaga murojaatlar sonini kamaytirish lozim. Bu kurs ishida ko’plab dasturchilar uchun amaliyotda muhim bo’lgan massiv elementlarini ichki saralash algoritmlarini ko’rib chiqamiz. Ta’kidlash joizki, surish orqali saralash algoritmini tashqi ma’lumotlarni saralashda qo’llash ham qulay. Qidirish algoritmlari Qidirish algoritmlari bu berilgan qiymatni ma’lum algoritm asosida elementlarning ichidan yoki elementlarning ma’lum bir qismidan qidirishni amalga oshirish algoritmlari. Qidirish algoritmlarining bugungi kunga kelib ancha metodlari ishlab chiqilgan. Qidirish algoritmlarini shartli ravishta tartiblanmagan ma’lumotlar to’plami bilan va tartiblangan ma’lumotlar to’plami bilan ishlovchi turlarga ajratish mumkin. 100% dasturchilar o’rganish mobaynida massivda biron elelment mavjudligini tekshirish muammosiga duch keladi. Dasturlash tillarida bir qancha qidirish algoritmlari mavjud. Ularning har birining ishlashprinsipi o’ziga xos va albatta murakkablik jihatidan ham farqlanadi. Ustuvor navbatlar Ustuvor navbatlar (ing. Priority queue) – oddiy navbatlarga o’xshash ammo bir qator xususiyatlarga ega abstract konteyner: Ustuvor navbatning har bir elementiga shu elementning ustuvorligini belgilovchi qandaydir qiymat mos qo’yilgan. Prioritet bir biri bilan solishtirish orqali kiritiladi;
Ustuvor navbatdan element yechib olish funksiyasi qaysi elementning prioriteti maksimal bo’lsa o’shani qaytaradi. Ko’plab ilovalarda yozuvlarni ularning kalitlarini o’sish tartibi bo’yicha qayta ishlashni talab qiladi, lekin bu qat’iy tartibda va hammasini birdaniga qilish degani emas. Ko’pchilik hollarda yozuvlar biron to’plamda yig’iladi va keyin maksimal kalitli yozuv qayta ishlanadi, shundan so’ng yana yozuvlarni yig’ish yana davom ettirilishi, so’ngra joriy kalitdan kattaroq kalitga ega yozuv qayta ishlanishi mumkin va h.k. Bunday ma’lumotlar strukturasi ustuvor navbat (priority queue) deb yuritiladi. Ustuvor navbatlardan foydalanish oddiy navbatlardan (eng eski element o’chiriladi) va steklardan (eng yangi element o’chiriladi) foydalanish kabi, ammo ulardan unumli foydalanish Ko’plab ilovalarda yozuvlarni ularning kalitlarini o’sish tartibi bo’yicha qayta ishlashni talab qiladi, lekin bu qat’iy tartibda va hammasini birdaniga qilish degani emas. Ko’pchilik hollarda yozuvlar biron murakkabroq. to’plamda yig’iladi va keyin maksimal kalitli yozuv qayta ishlanadi, shundan so’ng yana yozuvlarni yig’ish yana davom ettirilishi, so’ngra joriy kalitdan kattaroq kalitga ega yozuv qayta ishlanishi mumkin va h.k. Bunday ma’lumotlar strukturasi ustuvor navbat (priority queue) deb yuritiladi. Ustuvor navbatlardan foydalanish oddiy navbatlardan (eng eski element o’chiriladi) va steklardan (eng yangi element o’chiriladi) foydalanish kabi, ammo ulardan unumli foydalanish murakkabroq. Ustuvor navbatlarni piramidada qurish Piramidaning muhim ustunligidan biri undagi qiymatlardan maksimali uning uchida joylashgan bo’ladi. Piramidaning qayta tiklash up() va down() amallari ko’chishlar sonini piramidaning uchidan oshmagan holda amalga oshiradi, bu esa ustuvor navbatlarni samarali qo’llashga imkon yaratadi. Avvalo, bu qo’llash elementning tuzilmasini (chunki element faqatgina prioritetni emas balki qiymatni ham o’zida saqlaydi) tavsiflashni va piramidani hosil qiluvchi massivni e’lon qilishni talab qiladi. Piramidani qayta tiklash amallari priority maydonini solishtirishi lozim. Navbatning elementlari sonini saqlash uchun konstruktorda 0 qiymati bilan tashkil qilinadigan alohida size o’zgaruvchisi ajratiladi. Topologik tartiblash algoritmi yo'naltirilgan grafikni oladi va har bir tugun o'zi ko'rsatgan barcha tugunlardan oldin paydo bo'ladigan tugunlar qatorini qaytaradi. Massivdagi tugunlarning tartiblanishi topologik tartib deyiladi.
Mana bir misol: 1-tugun 2 va 3-tugunlarga ishora qilganligi sababli, 1-tugun tartiblashda ulardan oldin paydo bo'ladi. Va 2 va 3 tugunlari 4-tugunga ishora qilganligi sababli, ular tartiblashda undan oldin paydo bo'ladi. Shunday qilib, [1, 2, 3, 4, 5] grafikning topologik tartibi bo'ladi. Grafikda bir nechta to'g'ri topologik tartib bo'lishi mumkinmi? Ha! Yuqoridagi misolda [1, 3, 2, 4, 5] ham ishlaydi. Siklik grafiklar Ushbu yo'naltirilgan grafikni sikl bilan ko'ring: sikl imkonsiz cheklovlar to'plamini yaratadi - B tartiblashda D dan oldin va keyin bo'lishi kerak. Qoida tariqasida, siklik grafiklarda to'g'ri topologik tartiblar mavjud emas. Algoritm