Algoritmlarni murakkabligini static va dinamik o`lchovlari. Vaqt va hajm bo`yicha qiyinchiliklari
Download 210.99 Kb.
|
Gruh Talabasi Fazliddinov Iskandarning Algoritmlarni Loyhalash
- Bu sahifa navigatsiya:
- Algoritmlarning eng yomon va o`rtacha holatlarda baholash
- Algoritmlarni vaqt va hajmiy murakkablik bo`yicha baholashda tekis va logorimifik solishtirma mezonlari
- Taqribiy integrallash usluli va aniqligi bo`yicha hisoblash
1-Mustaqil ish Mavzu: Chiziqli va tarmoqlanuvchi algoritmlar. 1) Nazariy topshiriqlar: Quyidagi nazariy savollarga javob bering: 1.Algoritmlarni murakkabligini static va dinamik o`lchovlari.Vaqt va hajm bo`yicha qiyinchiliklari :
e’tiborga olishimizga to’g’ri keladi. Chunki ayni bir saralash algoritmi uchun 1000 ta kiruvchi elementni saralash 1s, 100 000 element uchun esa 4-5 soniya ketadigan bo’lsa, boshqa bir algoritm uchun esa bor-yo’g’i 2 s ketishi mumkin. Bunday sharoitda qaysi algoritm yaxshi ekanini aytish mushkuldir. Umumiy holatda esa algoritmni murakkabligini ayni bir kattalik bilan baholash mumkin bo’ladi. Buni quyidagicha tushunish mumkin: agar algoritmga kiruvchi N ma’lumotlar oshganida algoritmning bajarilish vaqti f(N) funksiya bilan bir xilda ortsa algoritm O(f(N)) murakkablikka ega deyiladi. Keling, yaxshisi A[NxN] matritsaning har bir qatoridagi maksimal elementni topishni ko’rib chiqamiz: Ushbu algoritmda i o’zgaruvchi 0 dan N-1 gacha o’zgarib kelyapti hamda uning har bir o’zgarishida j o’zgaruvchi ham shu oraliqda o’zgaryapti. Demak bunda jami N*N marta takrorlanish sodir bo’lyapti. Bundan esa f(N) = N*N ga teng bo’ladi va algoritmning murakkabligi O(N*N) ekanligini aniqlashimiz mumkin. Endi algoritmni murakkablik darajasini baholashni ko’rib chiqaylik. Bunda algoritmdagi eng tez o’suvchi qismdan foydalanish kerak bo’ladi. Tasavvur qiling algoritm N^3 + N murakkablikka ega bo’lsin. Bunda biz murakkablikni O(N^3) deb olishimiz yetarli bo’ladi. Chunki bu yerda tez o’suvchi qism bu N^3. Ya’ni +N ta qo’shimcha amalni hisoblashning hojati qolmaydi. Misol uchun N=100 bo’lsin, shunda jami 1000100 ta amal bajariladi va bu N^3 dan atigi 0.01% gagina farq qiladi. 2.Algoritmlarning eng yomon va o`rtacha holatlarda baholash : Algoritmni buyurtma qilishning murakkabligini baholash algoritmlar murakkabligining yuqori chegarasidir. Agar dastur katta murakkablik darajasiga ega bo'lsa, bu algoritm haqiqatan ham uzoq davom etadi degani emas. Ba'zi bir ma'lumot to'plamlarida, algoritmni bajarilishi ularning murakkabligi asosida taxmin qilishdan ancha kam vaqt talab etadi. Masalan, A vektorda berilgan elementni qidiradigan kodni ko'rib chiqing. Agar kerakli element ro'yxatning oxirida bo'lsa, unda dastur N bosqichni bajarishi kerak bo'ladi. Bunday holda, algoritmning murakkabligi O (N) dir. Ushbu eng yomon holatda, algoritmning ishlash vaqti maksimal bo'ladi. Boshqa tomondan, kerakli narsa birinchi holatda ro'yxatda bo'lishi mumkin. Algoritm faqat bitta qadamni bajarishi kerak. Bunday holat eng yaxshi deb nomlanadi va uning murakkabligi O (1) deb baholanishi mumkin. function Locate(data: integer): integer; var
i: integer;
begin
fl:=false; i:=1;
while (not fl) and (i<=N) do begin
if A[i]=data then
fl:=true
else
i:=i+1;
end;
if not fl then i:=0;
Locate:=I;
end;
Ushbu ikkala holat ham mumkin emas. Bizni kutilgan variant ko'proq qiziqtiradi. Agar
ro'yxat elementi dastlab tasodifiy aralashtirilsa, unda kerakli element ro'yxatning istalgan joyida paydo bo'lishi mumkin. 3.Algoritmlarni vaqt va hajmiy murakkablik bo`yicha baholashda tekis va logorimifik solishtirma mezonlari :
qiladi. Masala tez ishlashi va katta xotira egallashi yoki sekin ishlashi va kichik xotira hajmini egallashi mumkin. Bu holatda eng odatiy misollardan biri eng qisqa masofani topish masalasi bo’la oladi. Bunda siz o’zaro bog’liq bo’lgan shahar orasidagi istalgan ikki nuqta orasidagi eng qisqa masofani topishingiz kerak bo’ladi. Bunda biz barcha nuqtalar orasidagi qisqa masofalarni aniqlab ularni jadval shaklida saqlab qo’yishimiz mumkin. Va biz eng qisqa masofani aniqlashimizga to’g’ri kelganda shunchaki jadvaldan ma’lumotni olib qo’yishimiz mumkin bo’ladi. Natijani shu zahoti olishimiz mumkin, ammo bu juda katta hajm talab qiladi. Masalan biror katta xaritada 10 minglab nuqtalar bo’lishi mumkin va bizning jadvalimiz buning uchun 10 milliarddan ortiq ma’lumotni saqlashiga to’g’ri keladi va bu taxminan 10GB ga yaqin xotirani band etishi mumkin. Ushbu holatdan hajm-vaqt murakkabligi kelib chiqadi. Shunda algoritm vaqt bo’yicha ishlash tezligi yoki hajm bo’yicha ishlash tezligi bilan baholanadi. Biz asosiy e’tiborni vaqt bo’yicha murakkablikka qaratamiz lekin shu bilan birga foydalaniladigan xotira hajmini ham aniq belgilashimizga to’g’ri keladi.
Bunday holda, xotira hujayrasida bo'lishi mumkin bo'lgan maksimal qiymatni ko'rib chiqing. Agar qiymat aniqlanmasa (masalan, operand i> 10 bilan), u holda V maksimal qiymatining chegarasi bor deb hisoblanadi . Ushbu muammoda qiymati n (i) dan oshmaydigan o'zgaruvchi va qiymati n dan oshmaydigan o'zgaruvchi mavjud ! (natija) . Shunday qilib, bal O (log (n!)) . Algoritmlarning murakkabligini o'rganish juda qiziqarli vazifadir. Hozirgi vaqtda eng oddiy algoritmlarning tahlili IT sohasidagi informatika va amaliy matematikaga jalb qilingan texnik mutaxassisliklar o'quv dasturiga kiritilgan (aniqrog'i "Informatika va kompyuter injiniringi" yo'nalishi). Murakkablikka qarab, har xil vazifalar sinflari ajralib chiqadi: P , NP , NPC . Ammo bu endi algoritmlarni asimptotik tahlil qilish nazariyasi muammosi emas. lgoritmlarning resurs samaradorligini baholash usullari Asosiy algoritmik konstruktsiyalar protsessual dasturlash quyidagilardan iborat:dallanma va pastadir. Belgilangan kirish o'lchamiga ega bo'lgan eng yaxshi, o'rta va eng yomon holatlar uchun murakkablik funktsiyalarini olish uchun asosiy algoritmik dizaynlarni baholashda farqlarni hisobga olish kerak. 4.Taqribiy integrallash usluli va aniqligi bo`yicha hisoblash :
Download 210.99 Kb. Do'stlaringiz bilan baham: |
ma'muriyatiga murojaat qiling