贪心算法
贪心算法是不从整体最优上加以考虑,他所做出的是在某种意义上的局部最优解
首先确定贪心策略,选择一个看上去最好的方案。选择目标不同也不同
局部最优解:把问题分成一个个小问题。
动态规划
动态规划是分阶段求最优值的算法。
1.将复杂问题按阶段分成子问题
2.枚举子问题各种情况,从中找出最优值
3.利用子问题的最优值求得源问题的最优解
例题
吃金币游戏
在一个长方形地图上,玩家每次能从一个方格走到相邻一个方格。
玩家控制的角色可以向下或向右走,但不能向上或者向左走。每个方格上都有一定的金币。
求从左上角走到右下角可能获得的最大金币数
想法:将长方形地图分为一个又一个的小块(子问题),求每个小块的最优解来返回整体的最优解
感悟
优先队列要比贪心要难上一些。贪心是要找到贪心策略,而动态规划是要找到每种状态的最优解求法,情况多种多样。所以要学好动态规划要比贪心要花更多的时间和分析不少的例题来总结。