Evet tabi ki. Bu iyi ve mükemmel kabul edilebilir. Çalışma süresi iki parametreye bağlı algoritmaları görmek yaygın ve standarttır.
Örneğin, genellikle derinlik-ilk aramanın olarak ifade edilen çalışma süresini görürsünüz; burada n , köşe sayısıdır ve m , grafikteki kenar sayısıdır. Bu tamamen geçerlidir. Bunun anlamı , algoritmanın çalışma süresi en çok c ⋅ ( n + m ) olacak şekilde , tüm n > n 0 , m > m 0 için bir c ve n 0 , m 0 sayıları vardır.O ( n + m )nmcn0, m0c ⋅ ( n + m )n > n0,m>m0. Tam çalışma süresi ise, başka bir deyişle, , söz konusu demek f ( n , m ) = O ( n + m ) mevcutsa c , n, 0 , m, 0 , öyle ki , n > N 0 ve m > m 0 anlamına gelir f ( n , m ) ≤ c ⋅ ( n + m )f(n,m)f(n,m)=O(n+m)c,n0,m0n>n0m>m0f(n,m)≤c⋅(n+m).
Evet, ilk aşamanın zaman aldığını ve ikinci aşamanın O ( m ) sürdüğünü söylemek tamamen uygun ve kabul edilebilir.O(n)O(m) zaman .
Önemli: ve m'nin ne olduğunu tanımladığınızdan emin olun . Sen "Bu bir olduğunu söyleyemeyiz Ç ( n ) Ne belirtmeden zaman algoritması" n olduğunu. Eğer n Problemin tanımında belirtilmemişse, bunu belirtmeniz gerekir. Örneğin, genellikle n = # köşe noktası ve m = tanımladığımız grafik algoritmalarına bakın.nmO(n)nnn=m= kenar sayısı .
Onlara zamanı diyebilir misiniz , hayır, elbette hayır - bir şekilde m = O ( n ) bilmiyorsanız . Tabii ki, m = O ( n ) olduğunu biliyorsanız , o zaman m + n = O ( n ) 'yi takip eder , böylece O ( m + n ) zaman algoritması da O ( n ) zaman algoritmasıdır. Ancak m = O (O(n)m=O(n)m=O(n)m+n=O(n)O(m+n)O(n) , buna O ( n ) zaman algoritması diyemezsiniz.m=O(n)O(n)
Bu temel şeyler. Her şeyi algoritma ders kitaplarında bulacaksınız.