演算法設計與分析基礎 讀書筆記2 蠻力法

2021-04-06 12:01:44 字數 935 閱讀 1411

蠻力法

蠻力法是一種簡單直接地解決問題的方法,常常直接基於問題的描述和所設計的概念定義。

1.選擇排序和氣泡排序

selectionsort(a[0…n-1])c(n) = n(n-1)/2

演算法效率為平方級別,但是鍵的交換次數僅為

n-1次。

bubblesort(a[0…n-1])

最壞情況是鍵的交換次數和比較次數都為平方級別,不如前者。

應用蠻力法得出的第乙個演算法,可以通過適度的努力來提公升它的效能。

2.順序查詢和蠻力字串匹配

sequentialsearch(a[0…n],k)

和bruteforcestringmatch(t[0..n-1],p[0..m-1])

的效率都可以近似屬於線形級別。

3.最近對和凸包問題的蠻力演算法

最近對問題是要求找出乙個包含

n個點的集合中距離最近的兩個點,在二維空間中,蠻力法的求解效率為平方級別。

凸包問題是為乙個

n個點的集合構造凸包的問題;乙個點集合

s的凸包是包含

s的最小凸集合。

用蠻力法求解的效率為

n的立方級別。

4.窮舉查詢

a.旅行商問題:要求找出一條

n個給定城市間的最短路徑,使我們在回到出發城市以前,每個城市都只訪問一次。

b.揹包問題:給定

n個重量為

wi,價值為

vi物品和乙個承重為

w的揹包,求這些物品中乙個最有價值的子集,並且要能夠裝到揹包中。

旅行商問題和揹包問題都屬於「

np困難問題」,用蠻力法求解效率超低。

分配問題:有

n個任務需要分配給

n個人執行,成本不同,求總成本最小的分配方案。

(蠻力法求解效率為

n!級別,

可用匈牙利方法求)

演算法設計與分析基礎讀書筆記1

1.演算法 是一系列解決問題的明確指令,也就是說對於符合一定規範的輸入,能夠在有限的時間內獲得要求的輸出 2.演算法要點 1 演算法的每個步驟都必須沒有歧義,不能有半點含糊 2 必須認真確定演算法所處理的輸入的值域 3 同一演算法可以用幾種不同的形式來描述 4 同一問題,可能存在幾種不同的演算法 5...

演算法設計與分析 作業13 讀書筆記

啊哈!演算法 讀書筆記 啊哈!演算法 這本書中的演算法舉例貼近生活,語言詼諧幽默,不會讓人產生枯燥感,並配有很多幽默的插圖。演算法講解通俗易懂,並配有詳細c語言 和注釋,是一本適合初學者學習以及借鑑的演算法書籍。由於時間有限,我簡單花了一些時間閱讀了其中的排序板塊,各種排序演算法層出不窮,一直都是困...

演算法分析與設計 作業13 讀書筆記

我在知乎上找有關演算法書的推薦,偶然間找到了這本 演算法導論 雖然我沒有完全看完,但我還是獲得了一些收穫。通過閱讀這本書使我更深刻地了解了演算法思想。我了解了書中有關動態規劃 貪心演算法 攤還分析 b樹 斐波那契堆等內容。初次接觸演算法,我感到還是有點困難,尤其是在演算法分析這一塊。一般來說學習演算...