演算法分析與設計 王秋芬 1 貪心法

2021-10-12 07:41:46 字數 929 閱讀 1014

每個階段面臨選擇時,貪心法都做出對眼前情況的最優解,不考慮後續影響。

每個階段的決策一旦做出,不可以更改,不能回溯

貪心法是根據貪心策略來逐步構造問題的解,策略不同結果不同

貪心法具有高效性不穩定性,它可以很快得到解,但不一定是最優解。

貪心演算法的好壞關鍵在於貪心策略的選擇

貪心法的基本要素(適合的問題)

最優子結構性質——當乙個問題的最優解一定包含其子問題的最優解時,則該問題具有最優子結構性質

貪心選擇性質——所求問題的整體最優解可以通過一系列區域性最優的選擇獲得。

貪心法的解題步驟及演算法設計模式

分解->解決->合併

策略是選擇會議結束時間最早且不與已經安排的會議衝突的會議。

是一棵二叉樹,乙個字串**現概率越小的字元越遠離根節點,越大的字元越靠近根進點,時間複雜度為o(n^2),可以用最小堆優化成o(nlogn);

prim演算法

思路:選定乙個頂點加入已選點的集合,然後選擇與已選點有相鄰最近邊且不成環的點,加入已選點的集合,依次類推直到所有點加入集合,複雜度為o(n^2)

迴圈n次,每次迴圈裡迴圈找出當前最短的那條邊(由lowcost陣列存放)與所連的結點,這個結點記做已訪問,然後迴圈這個結點所連的邊,如果比lowcost中短的則更新。

krusal演算法(避環法)

思路:每次找出圖中最短的邊,然後判斷它是不是會變成迴路,不會則加入,直到沒有可以加的邊為止。

時間複雜度:o(eloge)——其中的e為邊數,o(n^2logn)——為完全圖時,o(nlogn)——為平面圖時。

演算法分析與設計 王秋芬 1 演算法及基礎知識

定義 指的是對特定問題求解步驟的一種描述,是若干指令的有窮指令 特性 輸入 有零個或多個輸入,於外界提供或自己產生 輸出 有乙個或多個輸出 確定性 組成演算法的每條指令必須有確定的含義,無歧義 有限性 演算法中每條指令的執行次數都是有限的,執行每條指令的時間也是有限的 可行性 乙個演算法是可行的,即...

演算法設計與分析之貪心法

貪心法總是做出在當前看來最好的選擇,一旦做出了選擇,不管將來有什麼結果,這個選擇都不會改變。也就是說貪心法並不從整體最優考慮,它所作出的選擇只是在某種意義上的區域性最優選擇。當然,希望貪心法得到的最終結果也是整體最優的。雖然貪心法不能對所有問題都得到整體最優解,但對許多問題它能產生整體最優解。幾點說...

演算法設計與分析入門篇 貪心法3

課程排程 題目內容 有 n 個人,要完成 2 門課程。其中第 i 個人學習一門課程所需要的時間是 ti。每個人同一時刻只能修一門課程,每門課程同一時刻只能被乙個人修,中間不能中斷。問所有人都修完 2 門課程,至少需要多少時間。輸入格式 輸入的第一行包含乙個整數 n 1 n 1000000 接下來的一...