Както е споменато в отговора на свързания въпрос, често срещаният начин алгоритъмът да има времева сложност O(log n) е този алгоритъм да работи чрез многократно намаляване на размера на входа с някакъв постоянен фактор на всяка итерация.
Какво е значението на log n?
O(log N) основно означава времето нараства линейно, докато n нараства експоненциално. Така че, ако е необходима 1 секунда за изчисляване на 10 елемента, ще са необходими 2 секунди за изчисляване на 100 елемента, 3 секунди за изчисляване на 1000 елемента и т.н. Това е O(log n), когато правим алгоритми от типа разделяй и владей, например двоично търсене.
Какво е O и log n?
За въвеждане на размер n, алгоритъм от O(n) ще изпълнява стъпки, пропорционални на n, докато друг алгоритъм на O(log(n)) ще изпълнява стъпки приблизително log(n). Очевидно log(n) е по-малък от n, следователно алгоритъмът за сложност O(log(n)) е по-добър.
Как се изчислява log n?
Идеята е, че алгоритъмът е O(log n), ако вместо да превъртате през структура 1 по 1, разделите структурата наполовина отново и отново и правите постоянен брой операции за всяко разделяне. Алгоритмите за търсене, при които пространството за отговор продължава да се разделя, са O(log n).
Какво е log n Square?
Log ^2 (
) означава, че е пропорционален на log от log за проблем с размер
. Дневник(
)^ 2 означава, че епропорционално на квадрат на log.