1樓:June
假如當前機場安檢人數有10人,你要在這個長隊中找乙個人(你確定你要找的人一定在10個人中)
最好的情況是第乙個人就是你要找的人 = 下界
最壞的情況是最後一人才是你要找的人 = 上界 = 大O
2樓:[已重置]
大多數情況下我們並不需要知道演算法具體的執行時間,其他操作反正都是確定的常數,只需要知道這個時間和輸入的規模是什麼關係,也就是當非常大的時候,其他常量的影響可以忽略。我們甚至根本不需要知道具體是什麼關係,只需要知道關於這個的時間複雜度在什麼數量級就可以了,這個時候我們的度量就是漸近複雜度。
首先我們要弄清三種漸近複雜度: Big-Theta(),Big-Omega(),Big-O()
簡單來說表示漸近上界,表示漸近下界,表示漸近邊界
具體的數學表達裡,約定以下設定常數,,均為正數,集合中的冒號後面的描述的前提是存在乙個,對於任意n_0" eeimg="1"/>冒號後面的約束都成立。
這裡的是個集合,但是為了表示方便也可以表示某個具體的漸近函式。
如果,那麼這時可以說是的asymptotic tight bound(這東西用中文怎麼說來著我忘了,反正你們這洋文好的人多的很吶)
同理可定義和,當然根據這個定義不難推出的充要條件是且,也就是既是上界又是下界的時候就是漸近確界..表示的就是一種較為準確的數量級,這個有點類似於微積分中的幾階無窮小的概念。
舉個例子:
,,,,
因為只關心數量級,所以係數都取為1
2.執行時
如果我們預先欽定了乙個演算法的執行時間是可以預料的,也就是確定的,比如這樣乙個函式:
time_t
wearHighBelt2Prolong
(time_t
hasi
,intn,
time_t
hislife
)return
hislife;}
這裡你可以理解為或者,總之是乙個關於hasi陣列的長度的一次函式。那我們自然容易看出漸近確界是。但實際上很多演算法很複雜,涉及一些條件判斷語句來決定某個操作要不要執行,最終執行多少次,這時候它的執行時間就是不可預料的,必須考慮輸入的程序。
time_t
wearRedClothes2Prolong
(time_t
hasi
,intn,
time_t
hislife)}
else}}
}return
hislife;}
這裡新增乙個簡單的分支結構,就必須考慮hislife的情況了,如果大於301那麼時間代價就是級的,如果小於301,時間代價就是級的。
這時候我們就知道為什麼除了緊確界以外,還要引入和作為上下界了。因為對於無法具體寫出確定的表達(無分段)的代價函式時,比如需要依靠輸入的情況進行分段表達的函式,是不存在的。
用的比較少,「不少於」的描述,「最好情況」的假設,對於複雜度沒什麼意義,但是它的對偶概念用的就很多了,因為往往要估計的是最壞情況,也就是說對於wearRedClothes2Prolong函式來說,我們說它的時間複雜度是而非,我們往往估算複雜度的時候用的都是上界,按最壞的情況打算。
但是呢,即使是上界也是應該對各種輸入和其他情況分別進行描述的,考慮各自情況中的最壞的情況,所以還是用的上界來描述,比如各常見演算法/操作的複雜度http://
很慚愧,只做了一些微小的工作。
研究生脫產和非脫產分別是指的什麼
脫產和非脫產的區別就是全日制和非全日制的區別 一 學制學費 全日制研究生和非全日制研究生在學制學費方面有一定區別,全日制研究生的學制一般是3年,非全日制研究生的學制在2 3年之間,部分院校實行彈性學制,允許學員申請學制延期,可以在不超過5年的時間內完成學業。非全日制研究生的學費要比全日制研究生高。二...
死亡一指和神滅斬各自的優缺點分別是?
Adam 神滅斬cd短,傷害雖然比不上死亡一指 但是論秒人其實差不多 但是成長高。後期a杖效果之後達到質變,短cd的特性以及配合被動也更加適合中單更好的打節奏。lion大雖然看似爆發高但cd長耗藍太高。並沒什麼卵用 要看英雄定位。Lion一般為4號位,定位為前期高爆發 對線輔助,中後期先手 控制 補...
kosaraju 演算法為什麼要分別對原圖和它的逆圖分別做DFS,為什麼不是對原圖進行兩次DFS?
問這個問題說明你對topological sort還沒有真正理解。當compute乙個DAG的topological ordering的時候有乙個property就是topo ordering最後那個vertex肯定是原graph的sink vertex。但是在乙個cyclic directed g...