Yahoo 知識+ 將於 2021 年 5 月 4 日 (美國東岸時間) 停止服務,而 Yahoo 知識+ 網站現已轉為僅限瀏覽模式。其他 Yahoo 資產或服務,或你的 Yahoo 帳戶將不會有任何變更。你可以在此服務中心網頁進一步了解 Yahoo 知識+ 停止服務的事宜,以及了解如何下載你的資料。

?
Lv 5
? 發問於 電腦與網際網路程式設計 · 7 年前

Big Notation 和 master method

我不太清楚,從一個遞迴數列該如何找出theta,只知道t(n) <= O, t(n) >= omega,而theta 在兩者之間,O是直接取最高次項不計係數,omega取小於等於t(n)的最大數。看了幾次都還是不懂,theta難道就是用不等式,符合結果的就是了嗎? 有沒有方法從recursion tree 和遞迴的一般式 看出來呢? 還有,我看了三種歸納法,代入、recursion tree 和master method,雖然沒有到看不懂,但一般寫程式真的有必要做這麼困難的事情嗎? extend master method 就能解所有遞迴式了嗎? 還是有其他類型?

我查了很多地方,大家都說theta代表的意義是O和omega相交的集合,O是最差情況的時間複雜度,而omega反之,所以theta可以解釋成平均時間複雜度嗎? 感覺好像又不太對,我好像之前看過,平均是要把 最差/最佳/普通情況的input連同發生機率一起計算,很複雜..

希望各位高手能回答,指正我的觀念,感謝!

2 個解答

評分
  • sponge
    Lv 6
    7 年前
    最愛解答

    從您的問題看起來,應該是對這些 notation 代表意義還不甚清楚

    O, Ω, Θ 是 "growth of function", 形容函數當輸入數值上升時輸出結果增加的狀況

    它們要描述的是輸入很大時函數輸出對應輸入的變化

    您問題中的最高次係數只是判斷它們的一個特例

    Θ 顯示的涵義為「對函數輸出變化影響最大的項或因素」

    說 Θ 是 O, Ω 交集,那要先解釋何謂 O, Ω

    O: 函數裏成長一樣或比 T(n) 快者

    Ω: 函數裏成長一樣或比 T(n) 慢者

    那 Θ 就是成長速率與 T(n) 一樣者

    如果 T(n) 能寫成單純 n 的表示,很輕易就看出這些指標

    但面對遞迴關係,最通用的辦法還是將它剖析

    如 T(n) = 2T(n/2) + n, 用 master method 很快就得解 Θ(n lg n)

    (lg 是對數以 2 為底)

    但最一般的方法應該把它逐漸拆解:

    T(n)

    = 2T(n/2) + n

    = 2( 2T(n/4) + n/2) + n

    = 4T(n/4) + n + n

    = 8T(n/8) + n + n + n

    = ... 找出一般式

    = 2^k T(n/2^k) + kn

    = ... 持續直到 T 的參數變為常數來決定 k

    = nT(1) + n lg n, k = lg n

    T(1) 就是常數,nT(1) 是 Θ(n), 其對輸出影響程度不如 n lg n

    因此整體 T(n) 成長取決於後面 Θ(n lg n)

    若懷疑為何非拆解到 1 不可,就用常數 c 改寫:

    = (n/c)T(c) + (lg n/c)n, k = lg n/c

    = (n/c)T(c) + (lg n - lg c)n

    = n( T(c)/c - lg c ) + n lg n

    結論會和 c 無關,都 Θ(n lg n)

    至於從 recursion tree 轉 Θ, 就是計算所有 leaf 的時間

    以上的 kn 就是 k 個 Θ(n) 的 leaf, nT(1) 是一個 Θ(n) leaf

    (extended) master method 只是針對某些特別的遞迴形式歸納速解

    遞迴後面有二項,像 T(n) = T(n-1) + T(n-2)

    則 T(n) = Θ(1.618^n), 1.618 代表黃金比例

    就無法用 (extended) master method

    應用上如果您只想用現成演算法拼湊 App, 當然不用如此複雜

    但研究新演算法就必須靠這些技巧驗證其複雜度

    另外 Θ 不是「平均」時間複雜度

    平均時間複雜度很受輸入數量、類型的機率分布左右

    有相同 O, Ω 不保證一樣的 Θ

    希望以上回答對您有幫助!

  • 7 年前

    參考下面的網址看看

    http://phi008780430.pixnet.net/blog

還有問題嗎?立即提問即可得到解答。