贪心算法适用条件_贪心算法问题

贪心算法的适用的问题

贪心算法适用的问题必须满足两个属性:

(1)   贪心性质:整体的最优解可通过一系列局部最优解达到,并且每次的选择可以依赖以前做出的选择,但不能依赖于以后的选择。

(2)   最优子结构:问题的整体最优解包含着它的子问题的最优解。

贪心算法的基本步骤

(1)   分解:将原问题分解为若干相互独立的阶段。

(2)   解决:对于每一个阶段求局部的最优解。

(3)   合并:将各个阶段的解合并为原问题的解。

适用范围:

贪心算法并不能总求得问题的整体最优解。但对于某些问题,却总能求得整体最优解,这要看问题时什么了。只要能满足贪心算法的两个性质:贪心选择性质和最优子结构性质,贪心算法就可以出色地求出问题的整体最优解。即使某些问题,贪心算法不能求得整体的最优解,贪心算法也能求出大概的整体最优解。如果你的要求不是太高,贪心算法是一个很好的选择。最优子结构性质是比较容易看出来的,但是贪心选择性质就没那么容易了,这个时候需要证明。证明往往使用数学归纳法。

一、贪心算法之汽车加油问题

(一) 问题描述

一辆汽车加满油后可以行驶N千米。旅途中有若干个加油站。指出若要使沿途的加油次数最少,设计一个有效的算法,指出应在那些加油站停靠加油。 给出N,并以数组的形式给出加油站的个数及相邻距离,指出若要使沿途的加油次数最少,设计一个有效的算法,指出应在那些加油站停靠加油。要求:算法执行的速度越快越好。

(二) 问题分析(前提行驶前车里加满油)

你可能感兴趣的:(贪心算法适用条件)