动态规划(DP)与贪心算法(Greedy Algorithm):
1.应用动态规划可解决的问题具有的性质是:最优子结构和重叠子问题。
最优子结构: 如果一个问题的最优解包含其子问题的最优解,我们就称此问题具有最优子结构性质。
重叠子问题:在求解过程中如果递归算法反复求解相同的子问题,就称最优化问题具有重叠子问题的性质。这个地方说的是适合用递归算法求解的原问题在求解过程中待分解的子问题的集合是固定的。
应用贪心算法可解决的问题具有的性质是:贪心选择性质和最优子结构。
贪心选择性质:可以通过做出局部最优解来构造全局最优解。
最优子结构: 如果一个问题的最优解包含其子问题的最优解,我们就称此问题具有最优子结构性质。
2.动态规划和贪心算法的相似之处
可解决的问题都必须具有最优子结构的性质。
3.不同之处
动态规划首先寻找子问题的最优解,然后在其中进行选择出一个最优解;
贪心算法则是首先做出一次“贪心”选择—–在当时看起来是最优的选择,然后求解选出的子问题,为不必费心的求解所有可能相关的子问题。
在贪心算法中,我们总是做出当时看起来最佳的选择,然后选出的唯一子问题,而动态规划是在求解之后的子问题选择出最好的那个子问题。
贪心算法进行选择时可能依赖之前做出的选择,但不依赖任何将来的选择或是子问题的解。
0–1背包是动态规划可解决的问题,0–1分数背包是贪心算法解决的问题。