演算法中上界和下界分別是指什麼

時間 2021-05-05 18:22:51

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...