贪心算法总是做出在当前看来是最好的选择。也就是说贪心算法并不从整体最优上加以考虑,所以贪心算法不是对所有问题都能得到整体最优解。 例子: 0-1背包问题:给定n种物品和一个背包。物品i的重量是wi,其价值为vi,背包的容量为C。问应如何选择物品装入背包,使得装入背包中的物品的总价值最大?在选择物品装入背包时,对每种物品i只有两种选择,要么装入,要么不装入,不能将物品i装入背包多次,也不能只装入物品i的一部分。因此,该问题称为0-1背包问题。 0-1背包问题也具有最优子结构性质。但是0-1背包问题却不能用贪心算法求解。 对于0-1背包问题,贪心选择之所以不能得到最优解是因为它无法保证最终将背包装满,部分背包空间的闲置使每公斤背包空间所具有的价值降低了。(该问题不具有贪心选择性) 虽然贪心算法不是对所有问题都能得到整体最优解,但对范围相当广的许多问题能产生整体最优解。如: 单源最短路经问题,最小生成树问题,哈夫曼编码问题等。 在一些情况下,即使贪心算法不能得到整体最优解,但却是最优解的很好的近似解。 如:在下图中求从V0到V3的最短路径问题。 一、活动安排问题 (An activity-selection problem) 1问题的定义 活动安排问题是可以用贪心算法有效求解的一个很好的例子
原创力文档

文档评论(0)