演算法導論 學習筆記 第四章 遞迴

2021-12-29 19:48:11 字數 1917 閱讀 4199

演算法導論 學習筆記 第四章 遞迴。

本文主要是介紹了三種求執行時間的方法。這三種方法都是解決遞迴問題的。就像分治法這種問題的演算法的執行時間。這三種方法分別是替換法/遞迴樹方法/主方法這個方法有兩個步驟:

1.猜乙個答案

而比較悲催的是現在沒有乙個通用的方法去猜正確的答案(都說是猜了..)。

但是除了一些經驗公式可以讓你更容易猜出答案意外還有一些技術細節上的

忽略可以讓你更好的猜對答案

1.可以忽略邊界

2.可以忽略上取整和下取整

3.假設輸入規模n是整數

2.用數學歸納法去證明你猜的答案是正確的

上例子:t(n) = 2t(n/2) + n

怎麼猜呢?這個好像就是是歸併排序的表示式啊。歸併排序法的執行時間是o(nlgn)

那就猜這個唄。然後帶入:

t(n) <= 2((c(n/2)lg(n/2)) + n

<= cnlg(n/2) + n

= cnlg(n/2) - cnlg2 + n

= cnlgn - cn + n

<=cnlgn(只要c>=1)

然後就基本搞定了吧。然後這個例子正好在邊界條件上竟然不滿足。然後書上給了兩個解決這種問題的方法:

1.忽略邊界條件(我沒理解錯吧?)

2.可乙個改變邊界條件陷阱書上講了乙個例子。這個例子的意思就是你一定要得到你猜的那個答案:比如你猜的是o(nlgn),那就必學得到這樣的表示式:

t(n) <= cnlgn.才算是對的。這個方法用在那些看起來遞迴的部分非常複雜,比如有根號的情況下使用。遞迴樹方法呢,也分兩個步驟:

1.將方程式展開成樹一樣的形式,然後得出答案

怎麼展開呢?具體步驟不講了。反正就是展開以後每個節點表示執行乙個步驟時用的代價(cost)。

求法是先將每一層的各個節點相加得到每一層用的代價。

然後將各個層用的代價加起來久得到答案了

計算當中要得到樹的層數和最底層的數字。

有個小問題我就沒明白下面這兩個表示式是怎麼想等的?但是算一算還真是:n(logba) 和 a(logbn) 厲害了!

如果有人恰好看到這個。幫個忙分析一下唄。

2.用替換法證明答案是對的

一看這個名字就知道這是不明覺厲了。網易公開課裡面的講師還解釋了一下為什麼叫master method。。為什麼?沒為什麼!就是這事用的最多的,最主要的方法。所以就叫主方法...

先抄上書上的定義:

let a >= 1 and b > 1 be constants,let f(n) be a function,and let t(n) be defined on the nonnegative integers by the recurrence

t(n) = at(n/b) + f(n)

where we interpret n/b to mean either floors(n/2) or ceilings(n/2).then t(n) can be bounded asymptotically as follows.1.if f(n) = o(nlogba?ε) for some constant ε>0 ,then t(n) = θ(nlogba).

2.if f(n) = θ(nlogba),then t(n) = θ(nlogbalgn).

3.if f(n) = ω(nlogba+ε),for some constant ε>0,

and if af(n/b) <= cf(n) for some constant c < 1 and all sufficeintly large n,then t(n) = θ(f(n)).

這事甚麼意思呢?

直觀上(忽略某些細節而言),是通過比較n(logba) 與 f(n)的大小進行判斷:如果前者大,則是θ(n(logba));如果是後者大,答案則是θ(f(n));如果一樣大,則要乘上乙個對數函式子項得到θ(n(logba)lgn) = θ(f(n)lgn)。

第四章筆記

一.引入樣式 1.行內樣式表 2.內部樣式表 在head標籤裡面,title標籤下面 優點方便在同頁面中修改樣式 缺點不利於在多頁面間共享復用 及維護,對內容與樣式的分離也不夠徹底 3.外部樣式表 嵌入式匯入式 嵌入式和匯入式的區別 1.標籤屬於xhtml,import是屬於css2.1 2.使用鏈...

第四章筆記

氣泡排序 從大到小 基本思想 兩層迴圈來完成,每一輪比較之後,把最小數沉到陣列的末尾,之後進行下一輪的比較,比較的次數減少一次,因為最後的數字已經是最小 外層迴圈控制比較的輪數,陣列的長度減一次 內層迴圈進行比較。int testarr for int i 1 i testarr.length 1 ...

工程導論第四章總結

1.創造力的 洗創造力 於想象力,這也是科學巨人愛因斯坦說 想象力比知識更重要 瑟的原因。數百年前達文西是乙個充滿想象力的藝術家 科學家 醫學家及工程師。他早就構思了人類的飛行器,雖然當時的工程技術無法實現該發明,但卻為後來的人們提供了無限的遐想,如今人不們已經把達文西的設計變成了現實。另一方面,達...