贪心算法基础与应用实例.pptx

贪心算法

一、贪心

什么是贪心?贪心算法(又称贪婪算法)是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的是在某种意义上的局部最优解。贪心的注意点贪心算法不是对所有问题都能得到整体最优解,关键是贪心策略的选择,选择的贪心策略必须具备无后效性,即某个状态以前的过程不会影响以后的状态,只与当前状态有关。贪心算法的使用前提:局部最优解一定能导致全局最优解。

贪心解决问题策略:1、建立数学模型来描述问题;2、把求解的问题分成若干个子问题;3、对每一子问题求解,得到子问题的局部最优解;4、把子问题的解局部最优解合成原来解问题的一个解。

练习:零钱找回问题这个问题在我们的日常生活中就更加普遍了。假设1元、2元、5元、10元、20元、50元、100元的纸币分别有c0,c1,c2,c3,c4,c5,c6张。现在要用这些钱来支付k元,至少要用多少张纸币?用贪心算法的思想,很显然,每一步尽可能用面值大的纸币即可。在日常生活中我们自然而然也是这么做的。在程序中已经事先将value按照从小到大的顺序排好。

练习:部分背包问题P2204阿里巴巴走进了装满宝藏的藏宝洞。藏宝洞里面有N(N≤100)堆金币,第i堆金币的总重量和总价值分别是mi,vi(1≤mi,vi≤100)。阿里巴巴有一个承重量为T(T≤1000)的背包,但并不一定有办法

文档评论(0)

1亿VIP精品文档

相关文档