算法證明 經典排序算法 為什么基於比較的排序算法的時間復雜度不能低於O(nlogn) 決策樹與二叉樹 紅黑樹 2-3-4樹 樹的遍歷 算法正確性證明 完全正確性與部分正確性 循環不變量 為什么使用循環 ...
一,部分背包問題介紹 首先介紹下 背包問題。假設一共有N件物品,第 i 件物品的價值為 Vi ,重量為Wi,一個小偷有一個最多只能裝下重量為W的背包,他希望帶走的物品越有價值越好,請問:他應該選擇哪些物品 背包問題的特點是:對於某件 更適合的說法是:某類 物品,要么被帶走 選擇了它 ,要么不被帶走 沒有選擇它 ,不存在只帶走一部分的情況。 而部分背包問題則是:可以帶走一部分。即,部分背包問題可帶走 ...
2016-06-11 15:45 0 12341 推薦指數:
算法證明 經典排序算法 為什么基於比較的排序算法的時間復雜度不能低於O(nlogn) 決策樹與二叉樹 紅黑樹 2-3-4樹 樹的遍歷 算法正確性證明 完全正確性與部分正確性 循環不變量 為什么使用循環 ...
一,問題介紹 最近一直在看貪心算法的正確性證明(如何證明貪心算法獲得的解一定是最優解),感覺“剪枝”技巧用得比較多。再看了下《算法導論》中貪心算法一章里面的一個練習---找換硬幣問題。這個問題對於某些 面值的硬幣 是有最優解的,故記錄下其中的一些證明思路。 考慮用最少的硬幣數 來找 n 分錢 ...
問題:求圖中點1到其他各點的最短距離 策略: 1.把起點1放入初始集合Set中,從剩余的點中,選取到Set(此時Set中只有1個點)距離最近的點,並入集合Set中, 2.從剩余的點中,找經過集合Set,到起點1的最短距離,將最短邊並入Set集合 3.依次循環 ...
Kruskal算法: 步驟1,選擇邊e1,使得權值w(e1)盡可能小; 步驟2,若已選定邊e1,e2,...,ei,則從E\{e1,e2,...,ei}選取e(i+1),使得 (1)G[{e1,e2,...,e(i+1)}]為無圈圖 (2)權值w(e(i+1 ...
以下所有討論,都是基於有向無負權回路的圖上的。因為這一性質,任何最短路徑都不會含有環,所以也不討論路徑中包含環的情形!並且為避免混淆,將“最短路徑”稱為權值最小的路徑,將路徑經過的點數-1稱為路徑的長度。 先列出算法的c語言代碼實現,后面將用這段代碼來輔助證明。 先用比較形象的語言來簡單 ...
RSA加密算法是利用大整數分解耗時非常大來保證加密算法不被破譯。 密鑰的計算過程為:首先選擇兩個質數p和q,令n=p*q。 令k為n的歐拉函數,k=ϕ(n)=(p−1)(q−1) 選擇任意整數a,保證其與k互質 取整數b,使得a*b ≡1mod k 令公匙為a和n。私匙為p,q,b ...
Dijkstra算法正確性證明 問題:求圖中點1到其他各點的最短距離 算法描述: 設初始時圖的所有點的集合U 把起點s放入初始集合Set中 U=U-{s} Set=Set+{s} 找s經過集合Set中的點,能達到的距離最短的點k(k\(\in\)U),將k並入Set ...
...