A. 如何理解「對數」
對數是蘇格蘭數學家納皮爾在做天文研究是發現的一種乘法開方的逆演算法,這一重大的發明,讓許多數學研究家欣喜若狂,因為它解決了算術上的一個大難題。對數的形式有log和ln,形式的下標是乘數,上標是最終得數,等值的數是次方數,在我們現在看來這只不過是很簡單的數學計算,而它的出現卻能夠給當時的各界行業的人帶來震撼和喜悅,可見它的意義重大。其實對數的本質和基本的算術乘法和開方有直接關系,這是算數的三種表現形式,因此理解對數的含義,也需要從這三個形式的關系分析入手。
1、對數簡便了連乘的手寫工序。最開始寫算術乘法我們都是一個一個的乘,比如5*5*5,簡短的幾個不麻煩書寫,也不會出現寫漏和多寫的情況,但乘得越來越多就會出現這些問題,因此將一串很長的算術整合成一個式子可以縮減書寫量和提高正確率,運用次方就可以寫成5^3,它的等值是125,寫成對數形式就成了log5 125=3。
B. 數據結構書中的logN 都是默認以2為底的么也即logN表示2叉樹層數
你的數據結構書的前面可能有自定義,以後只要出現logN就認為是以2為底的,在其他書中不適合
C. 嚴蔚敏老師的《數據結構》里,關於時間復雜度的寫法,譬如logn,這個對數函數的底數是多少啊
演算法中log級別的時間復雜度都是由於使用了分治思想,這個底數直接由分治的復雜度決定。如果採用二分法,那麼就會以2為底數,三分法就會以3為底數,其他亦然。不過無論底數是什麼,log級別的漸進意義是一樣的。也就是說該演算法的時間復雜度的增長與處理數據多少的增長的關系是一樣的。
(3)logn在數學中什麼意思擴展閱讀:
時間復雜度的計算方法
(1)一般情況下,演算法中基本操作重復執行的次數是問題規模n的某個函數,用T(n)表示,若有某個輔助函數f(n),使得T(n)/f(n)的極限值(當n趨近於無窮大時)為不等於零的常數,則稱f(n)是T(n)的同數量級函數。
記作T(n)=O(f(n)),稱O(f(n))
為演算法的漸進時間復雜度,簡稱時間復雜度。
(2)在計算時間復雜度的時候,先找出演算法的基本操作,然後根據相應的各語句確定它的執行次數,再找出 T(n) 的同數量級。
(3)在pascal中比較容易理解,容易計算的方法是:看看有幾重for循環,只有一重則時間復雜度為O(n),二重則為O(n^2),依此類推,如果有二分則為O(logn),二分例如快速冪、二分查找,如果一個for循環套一個二分,那麼時間復雜度則為O(nlogn)。