贪心算法的简单理解

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*算法)


以上是关于贪心算法的简单理解的主要内容,如果未能解决你的问题,请参考以下文章

贪心算法

那些经典算法:贪心算法

第六篇:从贪心算法理解程序的算法

算法讲解|贪心算法的理解与分析

贪心算法的理解

贪心算法,一个的吃货理解