算法導論 第一部分

  算法導論中涉及很多分析,需要有一定的數學基礎。本人數學很爛,以下爲筆記,如果有什麼錯誤,還望各位不吝賜教~~(^_^)

第二章,算法基礎,以插入排序爲例,演示了算法的分析過程,同時介紹以歸併排序爲例,介紹並分析了分治算法

  • 插入排序,最好情況下,數據已經有序,時間複雜度O(n),最壞和平均情況是O(n^2)
  • 歸併排序,分治算法,最壞和平均情況是O(n*lgn)
  • 分治算法, 分解--解決--合併。不是所有的分治算法都會比暴力算法更省時間。比如,第4章舉的矩陣乘法的例子。

第三章,函數的增長。主要是介紹了界和一些常用函數的性質

  • 界  (a)例子 2*n^2=O(裏面加個H)(n^2)  (b)例子 n=O(n^2)  g(n)是f(n)的上界  (c)例子 n^2=omega(n)  g(n)是f(n)的下界

第四章,分治策略,例子+遞歸式的解法

  • 例子:最大子數組,矩陣乘法。最大子數組,要麼出現在左半部分,要麼出現在右半部分,要麼出現在包含分界點的地方。矩陣乘法,直接分界並不能減少時間複雜度,要用Strassen算法
  • 遞歸式的解法:代入法、遞歸樹法、主方法。代入法,猜一個,代進去驗證一下。遞歸樹法,所有的遞歸的路徑都能畫成一棵樹,通過將遞歸展開成樹分析。主方法。  

第五章,概率分析和隨機算法。以僱傭問題爲例,介紹了概率分析、隨機算法和指示器隨機變量。(PS:後面的分析大量的用到了相關的內容)

  • 概率論中有用到指示器隨機變量,印象中是,二項式分佈那塊的(雖然我的印象,從來沒有準過,但有用過,不是印象)。。就是一個boolean變量,標識事情發生或不發生
  • 隨機算法,要麼就在輸入之前先做處理,處理成隨機的。要麼就在算法裏面處理成隨機的。算法裏的隨機處理,產生另一個隨機的優先級數組,原數組按照優先級數組排序。據說優先級數組的範圍1~n^3比較好,不容易產生重複數字。1~n聽起來會很好處理,但是,會很容易產生重複數字。對整數排序,基數排序能在O(n)內解決。


總結:大致是用一些簡單的例子,引出了很多後面要用到的內容。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章