《算法分析與設計》學習心得

在學習了《算法分析與設計》這門課後,我對常見的算法有了一個基本的瞭解。本書主要從算法概述、遞歸與分治策略、動態規劃、貪心算法、回溯法、分支限界法、隨機化算法、線性規劃與網絡流、NP完全性理論與近似算法等九個章節對計算機算法進行了介紹,我也將從以下幾個方面對算法進行簡單概括。

第一章--算法概述,主要介紹了算法和程序的定義及組成,以及評價算法優劣的標準--時間複雜度T(n)=O(f(n))和空間複雜度S(n)。

第二章--遞歸與分治策略。本章主要講述了遞歸和分治(將問題拆分爲k個規模較小的子問題,子問題可能會多次計算【遞歸是實現分治的一種手段】)的思想,以及涉及到遞歸與分治策略的二分搜索(折半大問題拆小)、大整數的乘法【分治成小數相乘再相加】、歸併排序【有序子序列一分爲二再合併】、快速排序【分爲兩個,小的在前大的在後,兩個序列分別排序】以及循環賽日程表【遞歸往n階填數,使得每個都與n-1個比賽過】問題。
第三章--動態規劃。本章主要講述了動態規劃(求解決策問題最優化,問題分解,但子問題無需重複計算)的思想,以及動態規劃算法的基本要素、最長公共子序列【KMP】、流水作業調度【多作業調度完工時間最少】、0-1揹包問題【滿足容量價值最高】、最優二叉搜索樹【哈夫曼樹,帶權路徑長度最短】等一系列問題。

第四章--貪心算法。本章主要講述了貪心算法的基本思想(選擇當前最優,獲得局部最優解),以及貪心算法中的用到的哈夫曼編碼【每次選最小的作爲葉子節點組成一棵樹生成新節點】、單源最短路徑(Dijsktra算法)【每輪都找路徑最短的點加入路徑集合】、最小生成樹【每次代價最小,加邊/加點】問題等。

第五章--回溯法。本章主要講述了回溯法的基本思想(問題轉化爲圖或樹,利用深度優先搜索DFS的方式尋找可行解),以及回溯法中常見的n皇后問題【n個放到n階矩陣上,不同行不同列】、0-1揹包問題、圖的m着色問題【m種顏色才能使圖中每條邊連接的2個頂點着不同顏色】、旅行售貨員問題【從i到i經過所有點路程最短(求哈密頓圈經過所有點再優化)】、批處理作業調度問題【作業完成時間和最小】、連續郵資問題【不同面值貼出連續郵資】等一系列問題。
第六章--分支限界法。本章主要講述了分支限界法的基本思想(問題轉化爲通過隊列或優先隊列進行廣度優先或以最小耗費擴展結點,實現對問題的求解),以及分支限界法中常見的單源最短路徑問題、裝載問題【n個不同重量的集裝箱裝入兩艘船】、佈線問題、0-1揹包問題、旅行售貨員問題、批處理作業調度問題等一系列相關問題。

第七章--隨機化算法。本章主要講述了隨機化算法的基本思想(通過隨機函數,使得決策問題的結果依賴於某種隨機事件),以及隨機化算法中常見的數值隨機化求解定積分/求圓周率、拉斯維加斯算法求解整數因子分解和n皇后問題、蒙特卡洛算法計算素數等一系列問題。
第八章--線性規劃與網絡流。本章主要講述了線性規劃與網絡流的基本思想(求解線性約束條件下線性目標函數的極值問題,以及網絡上的最優化問題),以及線性規劃與網絡流算法中常見的單純形算法【在最優解區間找一點,不符合再找近鄰點】、最小費用與最大流【A到B流量最大費用最少】算法。
第九章--NP完全性理論與近似算法。本章主要講述了NP完全性理論與近似算法的基本思想(非確定性多項式時間可解的判定問題通過近似方式進行求解),以及NP完全性理論與近似算法中常見的計算模型/圖靈機、NP完全問題及其近似算法。

《算法分析與設計》主要通過對上述算法的介紹,讓我對常見的算法有了基本瞭解,這對以後問題求解有很大的幫助。以上便是我對《算法分析與設計》這門課的學習心得。

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