贪心算法就是遵循某种既定原则,不断地选取当前条件下最优的选择来构造每一个子步骤的解决方案,直到获得问题最终的求解。即在对问题求解时,总是做出在当前看来是最好的选择,也就是说,不从整体最优上加以考虑,所做的仅是在某种意义上的局部最优解。
利用贪心算法解题,需要解决以下两个问题。
一、问题是否适合用贪心法求解,即所求解问题是否具有贪心选择性质?所谓贪心选择性质是指应用同意规划f,将原问题变为一个相似的但规模更小的子问题,后面的每一步都是当前看似最佳的选择,这种选择依赖于以做出的选择,但不依赖于未做出的选择。从全局来看,运用贪心策略解决的问题在程序的运行过程中无回溯过程。
二、问题是否具有局部最优解,从而通过选择一个贪心标准,可以得到问题的最优解。
利用贪心算法解题的思路一般为:
1.建立对问题精确描述的数学模型,包括定义最优解的模型。
2.将问题分成一系列子问题,同时定义子问题的最优解结构。
3.应用贪心算法原则可以确定每个子问题的局部最优解,并根据最优解模型,用子问题的局部最优解,堆叠出全局最优解。