434
社区成员
发帖
与我相关
我的任务
分享(1)证明“删数问题”的算法满足贪心选择性质:
证明:设原数为a1a2a3...an,假设最优解的第一步删除的是第k位上的数字ak(k不使得ak为贪心选择),得到的数为b1b2b3...bm(m<n);
而设通过删除贪心选择ai,得到的数为c1c2c3...cl(l<n);
由于ai是贪心选择,所以c1(即删除ai后的最高位数字)一定小于或等于b1,同时,由于我们只删除了一个数字,所以c2c3...cl是原数去掉ai后的剩余部分的一个子序列,它一定小于或等于b2b3...bm,由此我们可以得出:c1c2c3...cl一定小于b1b2b3...bm。这与我们的假设——b1b2b3...bm是最优解相矛盾。因此,可证“删数问题”的算法满足贪心选择性质。
(2)贪心算法是一种在每一步选择中都采取当前状态下最优的选择,从而希望导致结果是全局最优的算法设计方法。但贪心算法具有一定的局限性,并不总是能得到最优解,有些问题虽然具有贪心选择性质,但无法通过局部最优解得到全局最优解,因此在使用贪心算法之前要具体问题具体分析。