Evet, uygun şekilde küçük N için, her zaman bir N olacak, üstünde her zaman O (1) <O (lg N) <O (N) <O (N log N) <O (N ^ c ) <O (c ^ N) (ki burada O (1) <0 (lg N), bir O (1) algoritmasında, N'nin uygun şekilde büyük olması ve c'nin 1'den büyük olan sabit bir sabit olması durumunda daha az işlem yapacağı anlamına gelir. ).
Belirli bir O (1) algoritmasının tam olarak f (N) = 10 ^ 100 (bir googol) işlemi aldığını ve bir O (N) algoritmasının tamamen g (N) = 2 N + 5 işlemi aldığını söyleyin. O (N) algoritması, N kabaca bir googol olana kadar (aslında N> (10 ^ 100 - 5) / 2), bu nedenle yalnızca N'in 1000 ila milyar arasında olmasını beklerseniz, daha yüksek performans sağlar. O (1) algoritmasını kullanarak büyük bir ceza alırdı.
Ya da gerçekçi bir karşılaştırma için, n basamaklı sayıları birlikte çarptığınızı söyleyin. Karatsuba algoritması en fazla 3 n ^ işlemleri (3 gr) (kabaca O (n ^ 1.585)) ise Schonhage-Strassen algoritması Ç (N günlük K günlüğü K) olan daha hızlı bir düzen , ancak alıntı wikipedia:
Uygulamada Schönhage-Strassen algoritması, Karatsuba ve Toom – Cook çarpımı gibi eski yöntemlerden 2 ^ 2 ^ 15 ila 2 ^ 2 ^ 17 (10.000 ila 40.000 ondalık basamak) ötesindeki yöntemler için daha iyi performans göstermeye başlar. [4] [5] [6] ]
Öyleyse birlikte 500 basamaklı sayıları çarpıyorsanız, büyük O argümanları tarafından "daha hızlı" olan algoritmayı kullanmak mantıklı değildir.
EDIT: f (N) 'yi, f (N) / g (N)' nin N-> sınırını alarak limiti g (N) 'yi bulabilirsiniz. Eğer sınır 0 ise, o zaman f (N) <g (N), limit sonsuz ise o zaman f (N)> g (N) ve limit başka bir sabit ise f (N) ~ g (N) Büyük O notasyonu açısından.