演算法複雜度中的O(logN)底數是多少

來源:互聯網
上載者:User

標籤:nbsp   時間演算法   複雜度   等於   err   ofo   資料結構   https   研究   

前言

     無論是電腦演算法概論、還是資料結構書中,關於演算法的時間複雜度很多都用包含O(logN)這樣的描述,但是卻沒有明確說logN的底數究竟是多少。演算法中log層級的時間複雜度都是由於使用了分治思想,這個底數直接由分治的複雜度決定。如果採用二分法,那麼就會以2為底數,三分法就會以3為底數,其他亦然。

     不過無論底數是什麼,log層級的漸進意義是一樣的。也就是說該演算法的時間複雜度的增長與處理資料多少的增長的關係是一樣的。

     我們先考慮O(logx(n))和O(logy(n)),x!=y,我們是在考慮n趨於無窮的情況。求當n趨於無窮大時logx(n)/logy(n)的極限可以發現,極限等於lny/lnx,也就是一個常數,也就是說,在n趨於無窮大的時候,這兩個東西僅差一個常數。所以從研究演算法的角度log的底數不重要。最後,結合上面,我也說一下關於大O的定義(演算法導論28頁的定義),注意把這個定義和高等數學中的極限部分做比較,顯然可以發現,這裡的定義正是體現了一個極限的思想,假設我們將n0取一個非常大的數字,顯然,當n大於n0的時候,我們可以發現任意底數的一個對數函數其實都相差一個常數倍而已。所以書上說寫的O(logn)已經可以表達所有底數的對數了,就像O(n^2)一樣。沒有非常嚴格的證明,不過我覺得這樣說比較好理解,如果有興趣證明,完全可以參照高數上對極限趨於無窮的證明。

from : 《劍指offer》

 

 

若演算法的 T( n) = O(log n),則稱其具有 對數時間。由於電腦使用二進位的記數系統,對數常常以10為底(即log10 n,有時寫作 lg n)。然而,由對數的換底公式,loga n和 logb n只有一個常數因子不同,這個因子在大O記法中被丟棄。 因此記作O(log n),而不論對數的底是多少,是對數時間演算法的標準記法。 from: 知乎

 

演算法複雜度中的O(logN)底數是多少

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.