ALGORITM VA MA’LUMOTLAR STRUKTURASI
ALGORITM VA MA’LUMOTLAR STRUKTURASI fanidan yozgan Tekshirdi:_____________________________ MUSTAQIL ISHI
1-mustaqil ish Mavzu: Ma’lumotlar tuzilmasi,tuzilmalar ustida bajariladigan amallar. Dasturlash texnologiyalari. Reja: 1.Ma’lumotlar tuzilmasi 2. Ma’lumotlar tuzilmalari ustida quyidagi amallarni bajarish mumkin: Ma’lumotlar tuzilmasi bu xotirada tashkil etiladigan elementlar yig’indisi bo’lib, ular ustida dastur yordamida amallar bajariladi. Ma’lumotlar tuzilmasi – bu bironta toifaga tegishli bo’lgan va o’zaro ma’lum munosabatga ega bo’lgan elementlar to’plamiga aytiladi. Ma’lumot – bironta qiymat yoki qiymatlar to’plami hisoblanadi.Misol uchun bu bironta eksperiment natijalari, yoki talabalarning imtixon ballari bo’lishi mumkin. Ma’lumotlar tuzilmasi elementi – bu qiymatlar to’plamining bir bo’lagi hisoblanadi. Tuzilma elementi – qiymatlar jamlanmasi bo’lib, misol uchun talabalarning ismi, sharifi, yoshi har bir fandan olgan bahosi va x.k. larni keltirish mumkin. Elementlar 2 taga bo’linishi mumkin: Element sifatida ma’lumotlar guruhi olib qaraladi. Bunda e;lementlar yana qism bo’lak;arga bo’linishi mumkin. Masalan, ota-onalar maydoni talabalarning ota va onalari xaqida ma’lumot saqlaydigan alohida maydonlardan tashkil topadi. Elementar, ya’ni bo’linmas, bunda element qism bo’laklarga ajratilmaydi. Ob’ekt – bu xususiyatlar va attributlariga ega bo’lgan va bu xususiyatlarga qiymat qabul qilishi mumkin bo’lgan tuzilma hisoblanadi. Masalan, talaba bu ob’ekt deb qaralishi mumkin tuzilma. Maydon – bu ob’ektlarning attributlari yoki xususiyatlarini ifodalovchi tushuncha bo’lib, sonli yoki son bo’lmagan qiymatlarni o’zlashtirishi mumkin. Yozuv – bu bironta ob’ektga tegishli turli toifadagi maydonlar to’plamidir. Fayl - bu bir-biriga bog’liq bo’lgan yozuvlar to’plamidir. Masalan, barcha talabalar xaqidagi yozuvlarni o’z ichiga olishi mumkin, Kalit – bu yozuvdagi maydon bo’lib, aynan shu yozuvni boshqa yozuvlardan ajratib turishga xizmat qiladi , uning qiymati boshqa yozuvlarda takrorlanmas hisoblanadi. Ba’zida bittadan ko’p maydonlar qiymatlari elementlararo betakror bo’lishi mumkin va bunga karrali kalit deyiladi. Ko’pincha asosiy kalit hisoblanadigan bitta maydon ma’lumoti ishlatiladi va u boshlang’ich kalit deyiladi, qolganlari esa alternativ kalit deyiladi. Ba’zida esa yozuvlaning yagona qiymatlatli kalit maydonni yo’qligi sababli kalit sifatida bir nechta maydonlar olinadi va ularga tarkibli kalit deyiladi. Eng yomon
holatda, ba’zan shunaqa bo’lishi mumkinki, bironta maydon kalit bo’la olmasa, xar bit elementga qo’shimcha, qiymati yagona bo’lgan kalit maydon kiritiladi. Ma’lumotlar tuzilmasi Ma’lumotlar turli yo’lar asosida tashkil etilishi mumkin, mantiqiy yoki matematik modelni tashkil etilishi ma’lumotlar tuzilmasi deyiladi. Konkret bir ma’lumotlar tuzilmasini tanlash quyidagilarga bog’liq: Real voqe’likda elementlararo munosabatni yaqqol ifodalay olishi kerak; U shunday soda tuzilishi kerakki, zarur bo’lganda ustida samarali amal bajarish mumkin bo’lsin. Ma’lumotlar tuzilmasini o’rganish quyidagilardan iborat: Tuzilmani mantiqiy ifodalash; Tuzilmani fiizik amalga oshirish ; Tuzilmani sifatiy taxlili, ya’ni elementlarni saqlash uchun qancha xotira xajmi sarflanishini aniqlash (xotira sarfi) va qayta ishlashga ketadigan vaqtni (vaqt sarfi) xisoblash nazarda tutiladi. Ma’lumotlar tuzilmalari ustida quyidagi amallarni bajarish mumkin: 1. Ko’rikdan o’tkazish (traversing) - tuzilma elementlariga 1 martadan murojaat qilish amali. 2. Kiritish – tuzilmaga yangi element kiritish amali. 3. O’chirish – tuzlmadan bironta elementni o’chirish amali. Bunda element shunday o’chirilishi kerakki, qolgan elementlar stabil holatda bo’lishi kerak, ya’ni ayrim tuzilmalarda nosozlik sezilishi kerak emas. 4. Qidirish – tuzilmadan bironta elementni joylashgan o’rnini aniqlash amali. 5. Saralash – elementlarni ma’lum bir tartibda joylashtirish amali. 6. Birlashtirish (merging) – ikkita tuzilmani birlashtirish amali. Ma’lumotlar tuzilmasi (MT) – informatsion ob’ektning umumiy xossasi bo‘lib, mazkur xossa bilan biror bir dastur o‘zaro aloqador bo‘ladi. Ushbu umumiy xossa quyidagilar orqali tavsiflanadi: 1) mazkur tuzilmaning mumkin (qabul qilishi mumkin) bo‘lgan qiymatlari to‘plami; 2) mumkin bo‘lgan amallar (operatsiyalar) majmuasi; 3) tashkil etilganlik tasnifi.
2-mustaqil ish Mavzu: Algoritmlarni murakkablik darajalasining tahlili, murak-kablik darajasini baholash usullari. Reja: 1 Algoritmning asosiy xossalari 2 Algoritmlarning murakkabligi . 3 Murakkablikni baholash 4 Algoritmlar murakkabligining o sish tartibiʻ 1-ta’rif. Algoritm - bu ma’lum bir tilda berilgan, mumkin bo lgan dastlabki ʻ ma’lumotlar sinfi uchun masalani hal qilish uchun mumkin bo lgan elementar amallarning ʻ cheklangan ketma-ketligi. 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. 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. Algoritmlar berilishi va ifodalanishiga qarab: chiziqli, tarmoqlanuvchi va takrorlanuvchi turlarga bo linadi. ʻ Algoritmlarning murakkabligi . Hisoblash muammolari cheklangan xotira resurslaridan foydalangan holda oqilona vaqt ichida yechilishi kerak. Bu algoritmning vaqt va fazoviy murakkabligi tushunchasiga olib keladi. Qoida tariqasida, algoritm turli vaqtlarni bajarishi mumkin bo lgan turli xil amallarni o z ichiga oladi. Algoritmlarni baholash uchun ʻ ʻ ko pgina mezonlar mavjud. Odatda kirituvchi berilganlarni ko payishida masalani yechish ʻ ʻ uchun kerak bo ladigan vaqt va xotira hajmlarini o sish tartibini aniqlash muammosi ʻ ʻ qo yiladi. Har bir aniq masala bilan kiritiladigan berilganlarni miqdorini aniqlovchi ʻ qandaydir sonni bog lash zarur. Bunday son masalaning kattaligi deb qabul qilinadi. ʻ Masalan, ikkita matritsani ko paytirish masalasining o lchami bo lib, matritsalar kattaligig ʻ ʻ ʻ xizmat qilishi mumkin. Graflar haqidagi masalada o lcham sifatida graf ʻ uchlarining soni bo lishi mumkin. ʻ Algoritm sarflanayotgan vaqt masalaning o lchami funksiyasi sifatida ʻ algoritmni vaqt bo yicha qiyinligi deb nomlanadi. Bunday funksiyaga masalaning kattaligi ʻ oshganda limit ostidagi o zgarish asimptotik qiyinlik deb aytiladi. ʻ Murakkablikni baholash . Algoritmlarning murakkabligi odatda bajarilish vaqti yoki ishlatilgan xotira bo yicha baholanadi. Ikkala holatda ham, murakkablik kiritilgan ʻ ma’lumotlarning hajmiga bog liq: 100 ta elementdan iborat massivi xuddi shunga ʻ o xshash 1000 ta elementdan iborat massivga qaraganda tezroq qayta ishlanadi. Shu bilan ʻ birga, aniq vaqt bilan bir necha kishi qiziqadi: bu protsessorgabog liq, ma’lumotlar turi, ʻ
dasturlash tili va boshqa ko plab parametrlarga ham bog liq. Faqatgina ʻ ʻ asimptotik murakkablik muhim, ya’ni kirish ma’lumotlarining kattaligi cheksizlikka intilayotgandagi murakkablik. Masalan, ba’zi bir algoritmga kirish ma’lumotlarining n ta elementlarini qayta ishlash uchun 4n 3 + 7n ta shartli amallarni bajarish kerak. n ning ortishi bilan ishning umumiy davomiyligi n ning kubi uni 4 ga ko paytirgandan yoki 7n ni qo shgandan ko ra ʻ ʻ ʻ ko proq ta’sir qiladi. Ushbu algoritmning vaqt murakkabligi O(n ʻ 3 ), ya’ni u kubik bilan kiritilgan ma’lumotlarning hajmiga bog liq bo ladi. Bosh harf ʻ ʻ O dan foydalanish matematikadan kelib chiqadi, bu yerda ushbu belgi funksiyalarning asimptotik harakatlarini taqqoslash uchun ishlatiladi. Rasmiy ravishda O(f(n)) algoritmning ishlash vaqti (yoki egallagan xotira miqdori), kiritilgan ma’lumotlarning hajmiga qarab, f(n) ga ko paytiriladigan ba’zi konstantalardan tezroq emasligini anglatadi. ʻ O (n) - chiziqli murakkablik. Bunday murakkablik, masalan, saralanmagan massivdagi eng katta elementni topish algoritmiga ega. Qaysi biri maksimal ekanligini aniqlash uchun massivning barcha n elementlaridan o tishimiz kerak bo ladi. ʻ ʻ O (log n) - logaritmik murakkablik . Eng oddiy misol - ikkilik qidirish. Agar massiv saralangan bo lsa, uni ʻ yarmiga bo lish orqali ma’lum bir qiymatga ega ekanligini tekshirishimiz mumkin. O rta ʻ ʻ elementni tekshirib ko ramiz, agar u kattaroq bo lsa, unda massivning ikkinchi yarmini ʻ ʻ tashlab yuboramiz. Agar kichikroq bo lsa, unda aksincha - biz dastlabki yarmini ʻ tashlaymiz va shu tarzda ikkiga bo linishni davom ettiramiz, natijada (logn) elementlarini ʻ tekshiramiz. O (n 2 ) - kvadratik murakkablik. Bunday murakkablik, masalan, element qo shilishi natijasida yangi saralash algoritmiga ega. Kanonik dasturda ʻ bu ikkita ichki sikldan iborat: biri butun massivni bosib o tish, ikkinchisi esa allaqachon ʻ ajratilgan qismdan keyingi element uchun joy topish. Shunday qilib, amallar soni n*n, ya’ni n 2 kabi massiv o lchamiga bog liq bo ladi. ʻ ʻ ʻ Murakkablikning boshqa ko rinishlari ʻ ham mavjud, ammo ularning barchasi bir xil prinsipga asoslanadi. Algoritmning ishlash vaqti umuman kiritilgan ma’lumotlarning hajmiga bog liq emasligi ham sodir bo ladi. Bu ʻ ʻ holda murakkablik O(1) bilan belgilanadi. Masalan, massivning uchinchi elementi qiymatini aniqlash uchun elementlarni eslab qolishingiz yoki ular orqali bir necha bor o tishingiz shart emas. Siz har doimma’lumotlarni kiritish oqimidagi uchinchi elementni ʻ kutishingiz kerak va bu esa siz uchun natija bo ladi, bu har qanday ma’lumot uchun ʻ hisoblash uchun bir xil vaqtni oladi. Baholash muhim bo lgan taqdirda xotiradan xuddi ʻ shu tarzda amalga oshiriladi. Biroq, algoritmlar kirish ma’lumotlarining hajmi boshqalarga nisbatan kattalashganda sezilarli darajada ko proq xotiradan foydalanishi mumkin, ammo ʻ ular tezroq ishlaydi va aksincha. Bu hozirgi sharoit va talablar asosida muammolarni hal qilishning eng yaxshi usullarini tanlashga yordam beradi. Algoritmlar murakkabligining o sish tartibi ʻ Murakkablikning o sish tartibi ʻ (yoki aksiomatik murakkablik) katta kirish hajmi uchun algoritmning murakkablik funksiyasining taxminiy xatti-harakatini tavsiflaydi. Bundan kelib chiqadiki, vaqt murakkabligini baholashda elementar amallarni ko rib chiqishning ʻ hojati yo q, algoritm qadamlarini ko rib chiqish kifoya. ʻ ʻ Algoritm qadami – bu ketma-ket joylashtirilgan elementar amallar to plami, uning ʻ bajarilish vaqti kirish qadamiga bog liq emas, ya’ni yuqoridan qandaydir doimiy bilan ʻ chegaralangan.