1. 程式人生 > >算法第四章作業

算法第四章作業

都是 極致 運用 選擇 最優化 family 結構 兩個人 兩個

一、對貪心算法的理解:

1、貪心算法就是一個求解最優化的問題的算法,在算法的每個步驟中,每一次都面臨很多選擇;在每個決策點選出當前看來最佳的選擇,作出局部最優解的選擇,以便於推導出全局最優解。

2、求解最優問題有兩個關鍵要素:貪心選擇性質以及最優子結構。

貪心選擇的性質是當作出選擇時,不必考慮子問題的最優選擇,僅需解決當前的最優選擇。

最優子結構即是一個問題的最優解包含其子問題的最優解。

二、汽車加油問題中,貪心選擇的性質即是每到一個站點,就減掉當前油能夠走的路程,然後比較下一個站點到當前站點的路程所需的油量是否小於或者等於當前的油量,若不足,則加油一次。本質就是不斷尋找每一個極致的油不夠到下一個站點的狀態,進而加油一次,作為一個最優解,再從之後的狀態中,再尋求最優解。

三、

學習中遇到的困難:在分析問題的時候很難看出該問題的貪心性質所在,問題類型多種,想將貪心算法運用自如有點難。每當找不到貪心性質是什麽的時候,就是使用暴力破解,直接上普通的代碼,直接盡量解決,導致的後果都是思路不清晰,代碼一片混亂,沒有運用貪心算法那樣子的簡潔了然。還有就是有的問題很難分析,以為有很多種情況,有的可能沒涉及到,所以頻頻出錯。

結對編程的情況:有兩個人一起討論問題,在一些錯誤的想法上不會停留太多時間,有時候自己做題經常在一些錯誤的思路上徘徊,結果是什麽都打不出來或者是代碼一片混亂(雖然能通過),但是可讀性差,結對編程互相指出問題點,是一個很不錯的學習方法。

算法第四章作業