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)
{
int i;
for (i=0; i
{
if (arr[i] == x)
return i;
}
return -1;
}
int main()
{
int arr[] = {1, 10, 30, 15};
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 holat
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 holat
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 yaxshi 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:
1. 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
Do'stlaringiz bilan baham: |