Bağlantılı sorunun cevabında bahsedildiği gibi, bir algoritmanın zaman karmaşıklığına sahip olmasının yaygın bir yolu O(log n) o algoritmanın girdinin boyutunu art arda az altarak çalışmasıdır. her yinelemede sabit bir faktörle.
log n'nin anlamı nedir?
O(log N) temel olarak zaman doğrusal olarak artarken n üstel olarak artar anlamına gelir. Bu nedenle, 10 öğeyi hesaplamak 1 saniye sürüyorsa, 100 öğeyi hesaplamak 2 saniye, 1000 öğeyi hesaplamak 3 saniye vb. sürer. İkili arama gibi algoritma türlerini böl ve ele geçirdiğimizde O(log n) olur.
O ve log n nedir?
n boyutunun girişi için, bir O(n) algoritması n ile orantılı adımları gerçekleştirirken, başka bir O(log(n)) algoritması adımları gerçekleştirir kabaca log(n). Açıkça log(n), n'den daha küçüktür, bu nedenle karmaşıklık algoritması O(log(n)) daha iyidir.
log n'yi nasıl hesaplarsınız?
Fikir şu ki, bir yapıyı 1'e 1 kaydırmak yerine, yapıyı tekrar tekrar ikiye bölerseniz ve her bölme için sabit sayıda işlem yaparsanız, bir algoritma O(log n) olur. Cevap alanının bölünmeye devam ettiği arama algoritmaları O(log n).
log n Square nedir?
Günlük ^2 (
), boyutundaki bir problem için log öğesinin log ile orantılı olduğu anlamına gelir
. Günlük(
)^ 2 olduğu anlamına gelir log 'un kare ile orantılıdır.