[英]base of logarithms in time-complexity algorithms
所有時間復雜度算法的對數底是什么? 它是以 10 為底還是以 e 為底?
當我們說平均排序復雜度為 O(n log n) 時。 log n 的底數是 10 還是 e?
在 Big-O 復雜性分析中,對數底是什么實際上並不重要。 (它們漸近相同,即它們僅相差一個常數因子):
O(log2 N) = O(log10 N) = O(loge N)
大多數時候,當數學家談論對數時,他們隱含的意思是以e
為底。 計算機科學家傾向於支持基數 2,但這實際上並不重要。
在計算機科學中,它通常以 2 為底。這是因為許多表現出這種復雜性的分而治之的算法在每一步都將問題一分為二。
二分搜索是一個典型的例子。 在每一步,我們將數組分成兩部分,並且只在其中一個部分中遞歸搜索,直到達到一個元素(或零元素)的子數組的基本情況。 將長度為n
的數組一分為二時,在到達一個元素數組之前的總分割數為log2(n)
。
這通常被簡化,因為在討論算法分析時,不同基數的對數實際上是等效的。
就Big-O而言,基數無關緊要,因為基數公式的變化意味着它只是一個常數因子差。
然而,有時計算一個算法執行了多少操作是很有用的。 在這種情況下,由於大多數分而治之算法的性質,大多數情況下它是以 2 為底。
它因問題而異,並且在大多數情況下是無關緊要的。 但是在許多情況下它是基數 2,例如二進制搜索是 log(base 2)n。 您可以在此處更詳細地了解它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.