演算法期末總結

2022-04-29 04:15:12 字數 620 閱讀 1206

1.首先得構造解空間樹:子集樹和排列樹;

2.以深度優先的方式搜尋解空間:遞迴或迭代;

3.設計剪枝函式避免無效搜尋:使用約束函式,剪去不滿足約束條件的路徑或使用限界函式,剪去不能得到最優解的路徑。

回溯法解問題的乙個顯著特徵是,解空間樹是虛擬的,在任何時候,只需儲存從根節點到當前擴充套件結點的路徑。

在回溯問題中,若要求問題的所有解,就要回溯到根。

子集樹:

當所給的問題是從n個元素的集合s中找出滿足某種性質的子集時,相應的解空間稱為子集樹。

排列樹:

當所給的問題是對n個元素的集合進行排列,找出最優排列問題時,相應的解空間為排列樹。

約束函式:

先把集合裡的數按遞增序列排序,若當前的和sum加上當前正在進行的ai如果小於要求的和c,就是可以繼續進行下一步k+1,若sum加上剩餘的排在最後面的子集的和大於要求的和,就不符合要求,就可以跳過,並回溯到上乙個步驟。

整個演算法課程主要學習了:

分治法、減治法、動態規劃法、貪心法、回溯法

其中經典的問題是0-1揹包,他的解法可以使用其中任一一種,所以可以通過0-1揹包問題來深入聯絡這些

困難的話就是動態規劃,我覺得動態規劃要列出表示式非常的難

演算法課程期末複習總結

八大排序演算法複雜度比較 求解遞迴式的複雜度 max sum 最大子段和 int len arr.length int dp newint len 1 dp 0 0 for int i 1 i len i int res integer.min value for int i 1 i dp.leng...

Git 期末總結

終於到了期末總結的時刻了!經過幾天的學習,相信你對git已經初步掌握。一開始,可能覺得git上手比較困難,尤其是已經熟悉svn的童鞋,沒關係,多操練幾次,就會越用越順手。git雖然極其強大,命令繁多,但常用的就那麼十來個,掌握好這十幾個常用命令,你已經可以得心應手地使用git了。友情附贈國外製作的g...

期末程式設計總結

臨近期末,最後一次的部落格,打算總結一下各個章節的知識點,到了最後,往往最基礎的東西最能起更大的作用。1.保留小數點的方法。2和 fixed setprecision 2 cout fixed setprecision 4 2.和 的區分。賦值,等於 3.復合的賦值運算子的使用和增一運算子的字首字尾...