回答
它至少不比多項式時間差。而且還不是更好:n < n log n < n * n。
這是因爲它是由多項式(n)上界的。 你可以看看圖表並從那裏去,但我不能制定一個除此之外的數學證明:P
編輯:從維基百科頁面,「算法說是多項式時間if其運行時間由算法的輸入大小中的多項式表達式限定。
是的。當n走向無窮時,nlogn的限制是多少?直觀地說,對於大n,n >> logn,您可以考慮由n和nlogn〜n支配的乘積,這顯然是多項式時間。更嚴格的證據是通過使用Inspired做出的夾心定理:
n^1 < nlogn < n^2。
因此,nlogn在多項式時間的序列的上方(和下方)是有界的。
我沒有說它是1,如果我們是迂腐的,我們可以說n在n無窮大時會支配nlogn的極限。嚴格來說,趨於無限的序列發散。如果你有兩個函數f(n)* g(n),那麼極限,如果乘積是lim f(n)* lim g(n),在這種情況下是無窮大*無窮大,這是不確定的。 – user1654183
「當n變爲無窮大時,nlogn的極限」是「n是n^1」。你能否再解釋一下這個陳述呢? – Teepeemm
我已經做過。重複一遍:當n變爲無窮大時,n >> logn。因此,當n變爲無窮大時,基本上可以忽略logn對nlogn的貢獻,只剩下n。這不是「嚴格的」,但是這個人要求直覺...... – user1654183
是的,O(nlogn)是多項式時間。
從http://mathworld.wolfram.com/PolynomialTime.html:
的算法被認爲是在多項式時間解當來完成算法對於給定的輸入所需的步驟數 是 爲O(n^M)的一些非負整數m,其中n是輸入的複雜度 。
從http://en.wikipedia.org/wiki/Big_O_notation:
f是O(克)當且僅當
我現在將證明是n日誌n是O(N ^米)的一些這意味着n log n是多項式時間。
確實,取m = 2。 (這意味着我將證明n log n是O(n^2))
對於證明,取k = 2。 (這可能會更小,但不一定要這樣。) 存在一個n_0,因此對於所有較大的n,以下都成立。
N_0 * F(N)< = G(N)* k個
採取N_0 = 1(這是足夠的) 現在是易見
的n logÑ< = 2 * ñ
爲log N < = 2n個
N> 0(假設)
點擊here如果你不確定這一點。
這個證明可能在乳膠數學模式中好很多,但我不認爲stackoverflow支持這一點。
如何證明'log n <= 2n'? :) – Inspired
1.那個'n_0'不應該在那裏。爲了證明'logn <2n',我會證明'logn
- 1. 是log(n!)= O((log(n))^ 2)?
- 2. 時間複雜度 - O(n^2)到O(n log n)搜索
- 3. 時間複雜度O(N日誌(log n)的)+ N O(L)
- 4. n /(log(n))是否考慮多項式時間?
- 5. 顯示n^2不是O(n * log(n))?
- 6. 你如何看出O(log n)和O(n log n)之間的差異?
- 7. 這是否解決O(N log(N))時間中的3SUM?
- 8. 爲什麼此循環返回值爲O(n log log n)而不是O(n log n)?
- 9. 大O符號 - O(n日誌(N))對O(的log(n^2))
- 10. 與log(n)相比,log(n^2)的大O是什麼?
- 11. 證明log(n!)是Ω(n log(n))
- 12. AVL Tree給我O(c^n)而不是O(log n)
- 13. 複雜度O(log(n))是否等於O(sqrt(n))?
- 14. 圖形搜索O(log(N)(N + M)
- 15. 爲O(n^log n)的碰撞檢測
- 16. f(n)= n^log(n)複雜多項式或指數
- 17. log(n!)=Ω(n * log(n))?
- 18. 如何計算O(Log(N))?
- 19. 通用實用的排序算法比O(n log n)快嗎?
- 20. floor(√2n)的O(log log n)算法?
- 21. 是這個算法的漸近時間複雜度O(log n)?
- 22. 以下程序的時間複雜度是多少? O(log n)是否正確?
- 23. 顯示遞歸關係是O(n log n)
- 24. O(n log n)是否有簡寫術語?
- 25. Swift中的O(log n)時間中的中間數
- 26. CLRS書的結論BUILD_MAX_HEAP與O(n log n)不是漸近緊密嗎?
- 27. 對於一些常數c,階乘(floor(log(n)))是大O(n^c)嗎?
- 28. 使用Mergesort,quicksort等時,是O(n log n)基數2還是基數10?
- 29. 時間複雜度:O(logN)或O(N)?
- 30. O(nlog * n)和O(n)之間?
這個答案顯然是錯的! 請參閱http://en.wikipedia.org/wiki/Big_O_notation, http://en.wikipedia.org/wiki/Time_complexity和 http://mathworld.wolfram.com/PolynomialTime.html –
您能否詳細說明這裏確實是錯誤的? (還要注意,在計算機科學中,Big-O經常用於Big-Theta的意義上。) – Inspired
O(n^2)仍然是多項式時間。 n