Re: [理工] [DS]-時間複雜度

看板Grad-ProbAsk作者 (~口卡口卡 修~)時間16年前 (2010/01/08 14:19), 編輯推噓5(506)
留言11則, 4人參與, 最新討論串7/17 (看更多)
-- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.113.141.151

01/07 23:33,
這種解法一直看不懂@@
01/07 23:33

01/07 23:47,
你可以先想比較簡單的問題: T(n) = 3T(n/4)
01/07 23:47

01/07 23:47,
若要解出 T(n) 的 closed form , 要如何下手?
01/07 23:47
※ 編輯: doom8199 來自: 140.113.141.151 (01/08 01:33)

01/08 09:43,
其實這解法蠻有趣的 但是f(n)要怎麼猜?
01/08 09:43

01/08 09:45,
f(n)的可能有非常多種..有甚麼系統化的猜法嗎?
01/08 09:45
賺一下 p 幣XD 假設 T(n) = a*T(n/b) + f(n) 若想把上式改寫成 T(n) - k(n) = a[T(n/b) - k(n/b)] 那得去 try k(n) 的型態 其實要分兩個 case 討論: <1> 直接由 f(n) 型態下去 try: ex: T(n) = 3T(n/4) + nlogn 因為要合併成 T(n) - k(n) = 3[T(n/4) - k(n/4)] 所以就同時考慮 k(n) 、 k(n/4) 也就是假設 k(n) 可由 nlogn 、 (n/4)log(n/4) 組成 這時若把 (n/4)log(n/4) 稍微整理一下 會得到 (n/4)log(n) - (n/2) 此時會發現 k(n) "也必須要有 n 這個項" 這時我們在重新假設: k(n) 可由 nlogn 、 (n/4)log(n/4) 、 n 、 (n/4) 組成 相當於 k(n) 可以由 nlogn 、 n 組成 到這步就等於可以 try k(n) = a*nlogn + b*n <2> 由 (logn)^r*f(n) 型態下去 try: (其中 r屬於R) ex: T(n) = 2T(n/2) + n 這種 case 比較討厭 因為若直接照第一種 case 的流程去想 會變成: 假設 k(n) 型態可由 n 、 (n/2) 組成 表示可以直接假設 k(n) = a*n 可是當帶回原式: T(n) + a*n = 2[T(n/2) + a*(n/2)] → T(n) = 2T(n/2) → GG ---- 第二種 case 會爆的原因其實很簡單 由 T(n) = 2T(n/2) 可解出通解 T(n) = T(1)*n 會發現 特解的型態跟齊性解相衝 有學工數的人應該對這句話再熟悉不過XD 若假設的 特解型態 和 齊性解 有重疊 我們會如何去修正特解的假設方式 ? O.D.E. 的處理方式, 跟解遞迴式完全一樣 ! 就是改假設新的特解為 k(n)' = (logn)*k(n) ps: 可以想想為何要乘上 (logn)^r 來修正 ---- 回到 case 2 的 example 假設 k(n) = a*nlogn 則: T(n) + a*nlogn = 2[T(n/2) + a*(n/2)log(n/2)] → T(n) = 2T(n/2) + an 比較係數後可得 a = 1 即特解為 k(n) = nlogn ------------------------------------------------------------------------------ 其實 master theorem 本身就是一種 try 解的方式 只是演算法相對上比較重視最高 order 那個項 所以就沒有像我這樣直接把通解都求出來XD 若我們假設 T(n) = a*T(n/b) + f(n) 其通解為 T(n) = T(1)*T(n)_c + T(n)_p ^^^^^^ ^^^^^^ 齊性解 特解 master theorem 它是直接比較 T(n)_c 、 T(n)_p 、 f(n) 這三者的 order 所以才會分那麼多 case XD ( 會比較 f(n) 是因為想判斷有沒有和齊性解的型態重疊 ) 算是題外話 OTZ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.113.141.151

01/08 15:06, , 1F
那我想知道 這種猜法針對Master Theorem不能套用的題目
01/08 15:06, 1F

01/08 15:23, , 2F
可以舉幾個例子嗎 @@?
01/08 15:23, 2F

01/08 15:30, , 3F
不過若 master thm. 都不能套,表示特解大家都湊不出來
01/08 15:30, 3F

01/08 15:31, , 4F
那要叫我湊,應該也會卡死XD
01/08 15:31, 4F

01/08 17:15, , 5F
T(n) = 2T(n/2) + n/logn 像這種
01/08 17:15, 5F

01/09 00:21, , 6F
這個型態我 try不出特解QQ , 可能要用無窮級數下去算
01/09 00:21, 6F

01/09 00:22, , 7F
然後再看無窮級數能不能寫成 closed form
01/09 00:22, 7F

01/09 00:36, , 8F
好難...短時間吸收不了@@
01/09 00:36, 8F

01/09 07:21, , 9F
我之前有整理過不能套用的題目類型 #1AFR6-r7
01/09 07:21, 9F

01/09 07:21, , 10F
答案應該是O(nlglgn)
01/09 07:21, 10F

01/09 10:31, , 11F
也可以用遞廻樹解
01/09 10:31, 11F
文章代碼(AID): #1BHivRqZ (Grad-ProbAsk)
討論串 (同標題文章)
文章代碼(AID): #1BHivRqZ (Grad-ProbAsk)