[轉錄][演算] 小o的證明

看板NTUBIME100HW作者 (阿華田)時間17年前 (2008/11/01 13:43), 編輯推噓0(001)
留言1則, 1人參與, 最新討論串1/1
作者 jimbedb (XD) 看板 hil 標題 [問題] little-o 的定義與課本不相容? 時間 Sun Oct 21 20:57:20 2007 ─────────────────────────────────────── 老師在 slide 1 p.94 對 f(n) = o(g(n)) 的定義是 f(n) = O(g(n)) and f(n) \neq \Omega(g(n)), 而課本在 p.48 的定義(以及查得到的所有其他定義)是 for any c > 0, there exists n_0 > 0 s.t. f(n) < c g(n) when n > n_0。 第一個定義的條件是比較弱的。若我們令 f(n) = n, g(n) = n if n is odd = 2^n if n is even, 那麼 f(n) = O(g(n)) 而且 f(n) \neq \Omega(g(n)),所以 f(n) = o(g(n))。 但在第二個定義下,若取 c = 1/2,f(n) 會在奇數點上大於 g(n)/2,而不可能 在某個 n_0 之後使 f(n) < c g(n) 恆成立,因此 f(n) \neq o(g(n))。 所以第一個定義是不是不夠充分呢? ※ 發信站: 批踢踢兔(ptt2.cc) ◆ From: 140.112.249.77

10/21 21:19,
f(n) = n g(n)/2 = 2^(n-1)(even) n > 2^(n-1) ??
10/21 21:19

10/21 21:24,
是奇數點,謝謝指正~
10/21 21:24

10/21 21:25,
我ㄧ瞬間以為我看錯了orz
10/21 21:25

10/21 23:51,
有趣的例子! ;)
10/21 23:51

10/21 23:52,
好像變得有點像哲學問題, 就是這種狀況要不要當作little-o?
10/21 23:52

10/21 23:53,
為了不要搞混大家, 我們還是維持原來課堂上的定義.
10/21 23:53

10/21 23:53,
畢竟這樣的定義對於「一般」的演算法時間複雜度的函數是OK的
10/21 23:53

10/21 23:54,
「隨機客」明年再改成課本那樣好了..
10/21 23:54

10/21 23:55,
Good job!! (or nice boat? ;)
10/21 23:55

10/22 01:52,
nice boat 大概不是這樣用的XDDD
10/22 01:52

10/22 01:53,
不過在作業中 我可以不要考慮這種極端情形嗎....|||
10/22 01:53

10/22 11:29,
樓上跟VampireGirl的ID都挺嚇人..
10/22 11:29

10/22 11:30,
「隨機客」是陸軍, 難怪搞不懂船隻
10/22 11:30

10/22 11:31,
作業還是以課堂上的定義為準.
10/22 11:31
-- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 58.114.199.106

11/01 13:43, , 1F
這樣日子就難過了
11/01 13:43, 1F
文章代碼(AID): #192-niD5 (NTUBIME100HW)