演算法主公式

2021-10-07 17:29:07 字數 939 閱讀 3462

這陣子在認真地看著演算法導論,之前看到第四章計算分治法的時間複雜度的計算方法被稱為「主方法」,運用這個主方法可以快速地口算出分治演算法的遞迴式的時間複雜度,以下給出演算法導論裡關於主方法的描述吧,我就直接截圖

不得不說,演算法導論是一本非常偏向於數學的演算法書,裡面的對於各種演算法結論的正確性大都有著嚴格的數學上的推導。之前對於主方法的描述只是大略地看了一下,看是看懂了,但是當時沒有刻意將這個結論記下來,當我往後看遇到遞迴式求解部分的時候發覺還是忘記了主方法的求解過程,只能模糊記得部分而已

對於遞迴式 t(n) = a * t(n/b) + f(n);

1.我們不妨設f(n) = n^k;   我們可以求出 k 的值

2.我們再求出lna/lnb;(即logab,貌似編輯器無法打出對數的下標,就轉換成除法啦~)

3.比較lna/lnb 與 k的大小

4.如果k > lna/lnb , 有 t(n) = θ(f(n));  如果 k < lna/lnb  有 t(n) = θ(n ^(lna/lnb));如果k = lna/lnb

則t(n) = θ(lgn * n^(lna/lnb));

比如t(n) = 9*t(n/3) + n;

有 ln9/ln3 = 2   ; f(n) = n^1 得到 k = 1   有 2 > 1 即得到 t(n) = θ(n^2);

這樣的方法應該會簡單點吧~  我只是覺得算導裡面每次對於遞迴式的求解都要拿乙個ε來說事總是有點不爽的感覺,雖然這種方法失去了數學上的嚴謹證明,。。。。orz

演算法導論上寫的太mathmetical了,記不住。

以遞迴式為t(n) = a*t(n/b)+f(n)為例

(1)如果n^

(2)如果n^=f(n)  則複雜度為o(n) = n^

(2)如果n^

農曆演算法簡介以及公式

農曆演算法簡介以及公式 有關農曆的東西有以下幾篇文章 計算某天是星期幾 c 農曆演算法簡介以及公式 農曆中天干地支的計算 c 農曆一百年演算法 1921 2021 c語言 農曆兩百年演算法 1901 2100 c語言 一 節氣的計算 先給節氣進行編號,從近日點開始的第乙個節氣編為0,編號如下及其相應...

演算法之 尤拉公式

看傅利葉變換的時候,一直奇怪,冪指數是怎麼對映成三角函式的?學習了一下尤拉公式,果然很神奇,用到了自然常數e,圓周率 虛數i,三角函式sin cos,指數,還有泰勒展開 倒不是演算法有多難,只是涉及基礎太多,經常被卡住,總結如下 泰勒展開是用多項式逼近原函式,這麼做是因為像sin x 這樣的函式,如...

梯度下降演算法公式推導

梯度下降法的基本思想可以模擬為乙個下山的過程。假設這樣乙個場景 乙個人被困在山上,需要從山上下來 找到山的最低點 但此時山上的濃霧很大,導致可視度很低 因此,下山的路徑就無法確定,必須利用自己周圍的資訊一步一步地找到下山的路。這個時候,便可利用梯度下降演算法來幫助自己下山。怎麼做呢,首先以他當前的所...