Alqoritmin analizi (ing.Analysis of algorithms) — bir alqoritmin effektivliyini və performansını qiymətləndirmək üçün istifadə olunan metodlardır.[1] Bu analiz alqoritmin işləmə sürətini və resurs tələbatını (məsələn, yaddaş və vaxt sərfiyyatını) təhlil etməyə kömək edir. Əsas məqsəd, alqoritmin xüsusən böyük həcmli məlumatlar üçün nə dərəcədə effektiv olduğunu və hansı hallarda üstünlük təşkil etdiyini müəyyən etməkdir.[2]
Zaman mürəkkəbliyi (ing.Time Complexity) — alqoritmin həlli üçün tələb olunan vaxtın giriş məlumatlarının ölçüsündən asılı olaraq necə dəyişdiyini təhlil edir. Giriş ölçüsünün artması ilə alqoritmin işləmə müddəti də artar və bu artımı təsvir etmək üçün asimptotik notasiya (böyük "O" notasıyası) istifadə edilir.[3]
Zaman mürəkkəbliyi dərəcələri:
O(1): Sabit vaxt — alqoritm girişin ölçüsündən asılı olmayaraq eyni vaxtda işləyir. Məsələn, bir siyahıdan elementin mövcudluğunu yoxlamaq.
O(n): Xətti vaxt — alqoritmin işləmə vaxtı giriş ölçüsünə mütənasibdir. Məsələn, bir siyahıda müəyyən bir elementi axtarmaq.
O(n²): Kvadrat vaxt — alqoritmin vaxtı giriş ölçüsünün kvadratına görə dəyişir. Məsələn, sadə sıralama (bubble sort) alqoritmi.
O(log n): Loqaritmik vaxt — alqoritmin vaxtı giriş ölçüsünün logaritminə görə dəyişir. İki hissəli axtarış (binary search) buna bir nümunədir.[4]
Məkan mürəkkəbliyi (ing.Space Complexity) — alqoritmin işlənməsi üçün tələb olunan yaddaş həcmini təsvir edir. Əsas məqsəd alqoritmin giriş ölçüsündən asılı olaraq nə qədər əlavə yaddaş tələb etdiyini müəyyən etməkdir.[5]
Məkan mürəkkəbliyini analiz edərkən əsasən iki əsas yaddaş növü nəzərə alınır:
Daimi yaddaş: Alqoritmin giriş ölçüsündən asılı olmayaraq tələb olunan yaddaş (məsələn, sabit dəyər üçün dəyişənlər).
Dinamik yaddaş: Alqoritmin giriş ölçüsünə görə dəyişən yaddaş miqdarı (məsələn, əlavə massivlər və ya məlumat strukturları).[6]
Alqoritmin giriş məlumatlarına əsasən müxtəlif hallar üçün effektivliyini təhlil etmək üçün bu üsullar istifadə olunur:
Ən pis hal analizi: Alqoritmin mümkün olan ən uzun müddətdə çalışdığı haldır. Bu analiz, alqoritmin resurs tələbatının yuxarı həddini müəyyən edir.[7]
Orta hal analizi: Alqoritmin ortalama halda necə çalışdığını göstərir. Girişlər təsadüfi olduqda alqoritmin performansını təsvir edir.
Ən yaxşı hal analizi: Alqoritmin mümkün olan ən qısa müddətdə çalışdığı haldır. Bu hal, çox vaxt nəzərə alınmır, çünki alqoritmlərin ümumiyyətlə optimallaşdırılmasında əhəmiyyətli təsir yaratmır.[8]
Alqoritmin analizi, müxtəlif alqoritmləri müqayisə edərkən onların performansını dəqiq qiymətləndirməyə imkan verir. Məsələn, sıralama alqoritmlərinin (ing.bubble sort, merge sort, quick sort) zaman mürəkkəbliyi müqayisə edilərək, giriş ölçüsünün böyüklüyünə görə ən uyğun olan alqoritm seçilə bilər.[10]