資料結構與演算法 貪心演算法

2021-10-10 14:53:40 字數 861 閱讀 4666

有如下場景:針對一組資料,我們定義了限制值和期望值,希望從中選出幾個資料,在滿足限制值的情況下,期望值最大。

為了達到上述目的,貪心演算法是其中的乙個解決方案。

例如,路徑選擇問題,從 s 城市至 e 城市,在只能路過 2 個城市的情況下,如何走的最短,如下圖所示:

英文全稱:greedy algorithm

每次選擇當前情況下,在對限制值同等貢獻量的情況下,對期望值貢獻最大的資料。

轉為解決上圖的問題的語言:保證每次從當前城市走到下乙個城市的路徑最短,即:路徑為 s ➡ a2 ➡ b1 ➡ e ,總長度為 1 + 1 + 2 = 4 。

貪心演算法每次計算時其結果都會受到之前 n 次結果的影響,有可能之前某一次的結果導致之後的結果都是較次的,從而得不到全域性最優解。栗子:

按照貪心演算法,路徑為 s ➡ a2 ➡ b1 ➡ e ,總長度為 1 + 5 + 7 = 13,

但是實際上最佳路徑為 s ➡ a3 ➡ b2 ➡ e,總長度為 5 + 2 + 1 = 8 。

1、霍夫曼編碼(huffman coding)

2、prim 和 kruskal 最小生成樹演算法

3、dijkstra 單源最短路徑演算法

參考:極客時間《資料結構與演算法之美》王爭

這門課真心推薦,內容很經典、栗子很形象,裡面還包含了很多面試題目。真是居家旅行必備良藥。

(saw:game over!)

資料結構與演算法 貪心演算法

1 給定 n 種物品和乙個揹包,物品 i 的重量是 w i 其價值是 p i 揹包的容量為 c。設物品已按單位重量價值遞減的次序排序。每種物品不可以裝入揹包多次,但可以裝入部分的物品 i。揹包問題是選擇裝入揹包中的物品,在不超過揹包容量的前提下使揹包的得總價值最大。用貪心法設計與實現乙個演算法,求解...

資料結構與演算法 貪心演算法

定義每個古董重量 揹包問題 在對問題求解時,總是作出在當前看來是最好的選擇。也就是說,不從整體上加以考慮,它所作出的僅僅是在某種意義上的區域性最優解 是否是全域性最優,需要證明 有一天海盜們截獲了一艘裝滿各種各樣古董的貨船,每一件都價值連城,一旦打碎就是去了價值,海盜船載重量為c,每件固定的重量為w...

資料結構與演算法 (2)貪心演算法

貪心演算法在對問題進行求解時,總是做出在當前看來最好的選擇,即不從整體最優上加以考慮,而是進行某種意義上的區域性最優解。一般將求解過程分成若干個步驟,但每個步驟都應用貪心原則,選取當前狀態下最好 最優的選擇 區域性最有利的選擇 並以此希望最後堆疊出的結果也是最好 最優的解 分析 1.確定初始位置和能...