Tahlil qilishdan maqsad. Asimptotik Tahlil Algoritmlarni tahlil qilishda notatsiya tizimi
Download 39.5 Kb.
|
5.Algoritm tahlili
- Bu sahifa navigatsiya:
- Algoritmlarni tahlil qilishda notatsiya tizimi
- eng yaxshi holat
Algoritm tahlili Reja: Tahlil qilishdan maqsad. Asimptotik Tahlil Algoritmlarni tahlil qilishda notatsiya tizimi Dastur tuzish jarayonida uning ko'p taraflariga e'tibor berish kerak: modullilik, qulay interfeyslilik, xavfsizlilik, tushunarlilik va b.q. Dasturningning ishlash davomida o'zini tutishi (performance) esa dasturning barcha muhim jihatlaridanda muhimroqdir. Chunki,dasturni qotib qolmasdan ishlashi va doim to'g'ri natijalar berishi uning asosiy vazifasidir. Dastur uchun eng yaxshi unumdorlikni tanlash uchun esa unda foydalaniladigan algoritmni dastlab Tahlil qilib ko'rish kerak. Ikkita algoritm berilgan, qaysi biri yaxshiroq ekanligini qanday aniqlash mumkin? Eng oddiy yo'li, dasturni ikkita kompyuterda ishga tushirib dasturga turli sonlar kiritish bilan tekshirib ko'rish va qaysi birini kam vaqt olayotganini aniqlash. Ammo, bu usulning juda ko'p kamchiliklari mavjud: 1) Ba'zi sonlar uchun birinchi algoritm, ba'zi sonlar uchun esa ikkinchi algoritm tezroq ishlashi mumkin. 2) Ba'zi sonlar uchun birinchi kompyuterdagi birinchi algoritm, ba'zi sonlar uchun esa ikkinchi algoritm boshqa kompyuterda tezroq ishlashi mumkin. Algoritmni asimptotik Tahlil qilish yuqoridagi muammolarni bartaraf etishga yordam beradi. Algoritmni asimptotik Tahlil qilishda biz algoritmga turli sonlar kiritilganda u qanday unumdorlik ko'rsatishini baholaymiz. Biz algoritmga kiritilayotgan sonlar ortishi bilan uning ishlash vaqti (yoki xotiradan joy egallashi) qanday ortishini o'lchaymiz (algoritmni ishlash vaqt davomiyligi qanchaligini emas). Asimptotik Tahlil algoritmni baholash uchun eng yaxshi variantmi? Asimptotik Tahlil 100% to'g'ri tahlil qilish imkonini bermaydi, ammo algoritmini asimptotik Tahlil qilish mavjud boshqa barcha Tahlil yo'llari ichida eng yaxshisi. Misol uchun, ikkita saralash algoritm bor deb tassavur qilaylik, birinchisiga n son kiritilganda uning ishlash vaqti 100nLog(n) funksiya asosida, ikkinchisiga n son kiritilganda uning ishlash vaqti 2nLog(n) funksiya asosida ortsin. Bu algoritmlarning unumdorligi asimptotik Tahlilda teng deb hisoblanadi (o'sish tartibi nLog(n)), chunki asimptotik Tahlilda konstanta koeffisiyentlar hisobga olinmaydi. Asimptotik Tahlil O'tgan postda biz asimptotik Tahlil nima ekanligi bilan tanshgan edik, Ushbu postda biz chiziqli qididiruv algoritmini asimptotik Tahlil qilamiz. Algoritmni Tahlil qilishda 3 xil holat bo'lishi mumkin: 1) Eng yomon holat 2) O'rtacha holat 3) Eng zo'r holat Quyida chiziqli qidiruv algoritimining realizatsiyasi keltirilgan: #include int search(int arr[], int n, int x) {
for (i=0; i if (arr[i] == x) return i; }
}
{
int x = 30; int n = sizeof(arr)/sizeof(arr[0]); printf("%d soni %d inchi indexda topildi", x, search(arr, n, x)); getchar(); return 0; }
Eng yomon holatda biz algoritmni eng ko'p vaqt oladigan holatini qaraymiz. Bu holat — eng baland chegara (Upper bound) deb ham ataladi. Chiziqli qidiruv algoritmida eng yomon holat — qidirilayotgan x son arr massivda mavjud bo'lmasligi. Chunki, agar arr massivda qidirilayotgan element mavjud bo'lmasa, search() funksiyasi massivni barcha elementlarini bilan bitta-bitta qarab chiqadi. Ushbu turdagi Tahlil eng keng foydalaniladi.
O'rtacha holatda algoritmni ishlash vaqtini topish uchun, barcha sonlarni topish uchun ketgan vaqtlarni (har bir sonni alohida-alohida topishga ketgan vaqtlar) o'rta arifmetigi olinadi. Odatda amaliyotda, bu Tahlil juda ham ko'p ishlatilmaydi, chunki bu holtda biz programma qabul qilishi mumkin bo'lgan barcha qiymatlarni bilishimiz kerak bo'ladi. Eng zo'r holat Eng zo'r holat bu algoritmni bajarilishi uchun ketgan eng kam vaqtli holatdir. Chiziqli qidiruv algoritimida, agar qidirilayotgan son massivda birinchi bo'lib turgan bo'lsa sodir bo'ladi. Bu turdagi Tahlil amaliyotda deyarli umuman ishlatilmaydi, chunki eng zo'r holat faqat shartli sonlardagina bajarilishi mumkin. Esda tuting: Algoritmlarni asimptotik Tahlil qilishda odatda eng yomon holat Tahlilidan foydalaniladi. Ya'ni algoritmning ishlash vaqti uning eng yomon holati bilan baholanadi. Algoritmlarni tahlil qilishda notatsiya tizimi Algoritmning murakkabligini batafsilroq tahlil qilishda, N uzunlikning bitta kirishida algoritm tomonidan bajarilgan elementar operatsiyalar soni har doim ham bir xil uzunlikning boshqa kiritishida bajarilgan ishlar soni bilan bir xil emasligi ayon bo'ladi. Bu ushbu algoritmning murakkablik funktsiyasining sobit uzunlikdagi ma'lumotlarga xatti-harakatlarini aks ettiruvchi maxsus belgi qo'yish zarurligiga olib keladi. DA rasmiy tizimda berilgan ushbu vazifaning o'ziga xos muammolarining to'plami bo'lsin. D DA muayyan muammoning vazifasi bo'lsin va | D | = N. Umumiy holda, N kuchining barcha o'ziga xos muammolarini o'z ichiga olgan DA to'plami mavjud: ushbu to'plamni DN tomonidan belgilang: DN = {D DN,: |D| = N}; tomonidan o'rnatilgan DN quvvatini belgilang MDN > MDN = |DN |. Keyinchalik, mazmunli ravishda, N o'lchovining turli muammolarini echgan holda, ushbu algoritm ba'zi hollarda eng ko'p operatsiyalarni bajaradi, ba'zi holatlarda esa eng kam sonli operatsiyalarni bajaradi. Biz quyidagi belgini olib boramiz: Fa(N) - N o'lchovining aniq muammolarini hal qilish uchun A algoritmi tomonidan bajariladigan operatsiyalarning eng katta miqdori: Fa(N) = max {Fa (D)} - eng yomon ish DN Fa(N) - - eng yaxshi holat - N o'lchovining aniq muammolarini hal qilish uchun A algoritmi tomonidan bajariladigan operatsiyalarning eng kam soni: Fa(N) = min {Fa (D)} - eng yaxshi holat DN Fa (N) - o'rtacha holat bu N o'lchovining aniq muammolarini echish uchun A algoritmi tomonidan bajarilgan operatsiyalarning o'rtacha soni: Fa(N) = (1 / MDN)* {Fa (D)} - o'rtacha holat DN Adabiyotlar ro’yxati Gulomov S.S. va boshqalar. Axborot tizimlari va texnologiyalari. Toshkent, 2000 Ахо А., Хопкрофт Дж. Построение и анализ вычислительных алгоритмов.- М: Мир, 1979 г., 535 с. Вирт Н.. Алгоритмы и структуры данных. – Досса, Хамарайан, 1997. Кнут Д. Искусство программирования для ЭВМ. Основные алгоритмы.-М:Мир, 2000 г. Кормен Т., Лейзерсон Ч., Ривест Р. Алгоритмы: построение и анализ. М.:МЦНМО, 2001.- 960 с. Лебедев В.И. Введение в системы программирования. М: Статистика, 1975 Download 39.5 Kb. Do'stlaringiz bilan baham: |
ma'muriyatiga murojaat qiling