資料結構與演算法之美(筆記22)貪心演算法

2021-09-14 07:31:44 字數 567 閱讀 1751

假設我們有乙個可以容納100kg物品的揹包,可以裝各種物品。我們有以下5種豆子,每種豆子的總量和總價值都不一樣。為了讓揹包中所裝物品的總價值最大,我們應該在揹包中裝哪些豆子?豆子又該裝多少?

我們只要算一算每個物品的單價,按照單價由高到低依次來裝就好了。單價依次是:黑豆,綠豆,紅豆,青豆,黃豆。所以,我們在揹包中裝20kg黑豆,30kg綠豆,50kg紅豆。

總結一下貪心演算法解決問題的步驟:

實際上,用貪心演算法解決問題的思路,並不總能給出最優解。

比如,在乙個有權圖中,我們從頂點s開始,找一條到頂點t的最短路徑(路徑中的權值和最小)。貪心演算法的解決思路是,每次都選擇乙個當前頂點相連的權最小的邊,直到找到頂點t。按照這種思路,找出的最短路徑是s->a->e->t,路徑長度是9。

但是,這種貪心選擇方式,不能給出最優解。原因是前面的選擇,會影響後面的選擇。 

《資料結構與演算法之美》31 貪心演算法

貪心演算法 英語 greedy algorithm 又稱貪婪演算法,是一種在每一步選擇中都採取在當前狀態下最好或最優 即最有利 的選擇,從而希望導致結果是最好或最優的演算法。維基百科 貪心演算法與動態規劃的不同在於它對每個子問題的解決方案都做出選擇,不能回退。動態規劃則會儲存以前的運算結果,並根據以...

資料結構和演算法之美 22 雜湊演算法

實現乙個會話粘滯 session sticky 的負載均衡的演算法即在同乙個客戶端上一次會話的所有請求都能路由到同乙個伺服器上。最簡單的辦法就是維護一張對映表,對映表中記錄會話id或者客戶端ip與伺服器編號的對映關係。客戶端每次發出的請求都先到對映表中查詢伺服器對應的編號,再請求編號對應的伺服器。這...

資料結構與演算法之美

什麼是資料結構?什麼是演算法 狹義重點 複雜度分析 方法 邊學邊練,適度刷題 複雜度分析 時間複雜度 常見時間複雜度 非多項式量級 非常低效的演算法 空間複雜度 漸進空間複雜度,表示演算法的儲存空間和資料規模的增長關係 最好情況時間複雜度 理想情況的時間複雜度 最壞情況時間複雜度 最糟糕的情況下的時...