2015-10-02 83 views
8

這源於編寫程序到find the median of two sorted arrays,大小分別爲mn,時間複雜度爲O(log(m + n))帶兩個變量的Big-O符號

我可以找出O(log(m) + log(n))的解決方案。它是否符合上述時間要求?

我認爲這是積極的,因爲:

log(m) + log(n) = log(m*n) <= log((m+n)^2) = 2*log(m+n) = O(log(m+n))

換句話說,存在k = 2m0 = n0 = 1。對於任何m > m0 and n > n0,有log(m*n) <= k*log(m + n)

是否有缺陷,或者我正確嗎?

更一般地說,給定常數a,我們可以說0123'具有相同的推理嗎?


感謝David的回答。 這也是維基百科上提及Big-O notation

"We may ignore any powers of n inside of the logarithms. The set O(log n) is exactly the same as O(log(n^c))."

回答

6

是的,你對所有罪狀正確的。日誌增長緩慢,以至於漸近類對內部函數不是很敏感。

+0

所以你說O(log(n^a))= O(log(n))?抱歉,我無法真正理解這個問題。 –

+1

@GiorgiNakeuri是的,假設big-O符號將* a *> 0視爲常量,那些實際上是相同的函數類。 –

+1

對不起:)我正在看這個,看到像O(n^a)= O(n)的東西。應該睡一會兒。當然,記錄是真的。 –