2012-02-18 59 views
1

這是麻省理工學院OpenCourse 介紹的分配算法漸近記法一個問題:
對於每一個下面的語句,決定是否總是如此從來沒有真正,或有時真正漸近非負函數˚F。如果是總是如此從未真正,解釋原因。如果是有時真,舉個例子,這就是它真正的,一個是它是假的。漸近記法

f(n) ≠ O(g(n)) and g(n) ≠ O(f(n)) (both are Big-O notes) 

我認爲這是從來沒有真正。這是我的證明:

f(n) ≠ O(g(n)) 
=> f(n) = w(g(n)) (little-omega note) 
=> g(n) = o(f(n)) (little-o note) 
=> g(n) = O(f(n)) (big-O note) 

結果與g(n) ≠ O(f(n)) (Big-O note)矛盾。同樣,

g(n) ≠ O(f(n)) 
=> g(n) = w(f(n)) (little-omega note) 
=> f(n) = o(g(n)) (little-o note) 
=> f(n) = O(g(n)) (big-O note) 

它與f(n) ≠ O(g(n)) (Big-O note)矛盾。

解決方案說,這是有時真

For f(n) = 1 and g(n) = ||n*sin(n)|| it is true, 
while for any f(n) = O(g(n)), e.g. f(n) = g(n) = 1, it is not true. 

我在哪裏,我證明什麼錯呢?另外,我無法理解解決方案。 ||n*sin(n)||看起來像向量規範給我。

+0

假設||ñ罪(N)||應該閱讀| n sin(n)|並參考實數的絕對值(當然,這是R^1上的向量範數),反例是有意義的。本來可以選擇n *(1 +( - 1)^ n)= 0,0,2,0,4,0,6 ......代替。 – tiwo 2012-07-21 20:11:38

+0

一個教學旁註:也許你想要f = O(g)是一組函數的偏序,因爲它對於實數f,g感覺非常類似f≤g。 – tiwo 2012-07-21 20:19:14

回答

2

首先是不正確的:從這個f(n) ≠ O(g(n))它不遵循這樣:f(n) = w(g(n))。這兩個函數可能會在某一點相交,然後拍一個地方,另一個變得更大(如果我使用簡單的話)。他們選擇的函數就是這種情況:對於n < = 1,第一個f(n)> g(n)並且存在其中g(n)> f(n)(例如pi/2)的ns, 。

3

我覺得n*sin(n)只是表明它是不斷變大&小於f(n) = 1對於n的後續值甚至用來定義大O &從而f(n) ≠ O(g(n)) and g(n) ≠ O(f(n))

A中的係數器的所有選項的功能天真選擇的功能,如g(n) = 2*sin(n)在這裏不會有好處。有人可能會認爲,這也將保持交替各地f(n) = 1,但g(n) = O(f(n)) : M*f(n) > g(n) for M = 3

+0

確實,像'n * sin(n)'這樣的功能就這麼漂亮 – manuzhang 2012-02-18 13:39:06