贪心算法的简单理解
Posted 程序员宅急送
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了贪心算法的简单理解相关的知识,希望对你有一定的参考价值。
一、何为贪心算法?
从贪心二字就可以看出,就是从一堆选择中选出一个最好的。
二、应用
贪心算法能应用到哪些问题,我举个例子吧
小学的时候经常遇到的装豆子的问题
有一个能装20kg的袋子。
你的面前有5kg,单价10元/kg的黄豆,
有2kg单价5元/kg的绿豆,
还有10kg,单价1元/kg的红豆。
要怎么样才能够让你的袋子里装总价值最高的豆子?
这个问题相信我不解释也知道怎么选,每次都选单价最高的豆子,直至袋子装满。
“每次都选单价最高的豆子”,这个其实就是贪心算法的思想。
三、贪心算法一定是最好的吗?
刚刚我们是问如何选择总价值最高的豆子,贪心算法很好的找到了最优解,但是贪心法每次都一定能找到最优解吗?
我们来看下面图中这个问题
在上图中,我想找一条从A到D的最短路径,首先点A有两条路,按照贪心的思想,我们选择最短的那一条,也就是A->B,然后从B->D。总路程101,但是很明显这不是最优解,因为A->C->D的路程只有5。
为什么到这里贪心算法就失效了呢?
是因为前面的选择影响到了后面,我们选了A->B,就不能选择C->D了。
四、得出结论
我们在使用贪心算法的时候,一定要注意,后面的选择不能够被前面的选择影响。如果影响了,我们就要想办法补救——后面几期我会讲到贪心算法的升级版(最短路径——Dijkstra单源最短路径算法,以及A*算法)
以上是关于贪心算法的简单理解的主要内容,如果未能解决你的问题,请参考以下文章