您的位置:首页 > 其它

贪心算法

2013-02-28 09:21 656 查看

贪心算法

当“贪心序列”中的每项互异且当问题没有重叠性时,看起来总能通过贪心算法取得(近似)最优解的。约束条件。这些可行解可能有多个。为了衡量可行解的优劣,事先给了一个关于可行解的函数,称为

b)动态规划(需要满足阶段无后效性原则)。
1、所谓贪心选择性质是指所求问题的整体最优解可以通过一系列局部最优的选择,即贪心选择来达到。这是贪心算法可行的第一个基本要素,也是贪心算法与动态规划算法的主要区别。


,二、我们以例子来说明这个问题。最短路径

显然,上面的搜索有大量重复性工作。比如节点8、9、10到11的最短路分别被调用了9次,从节点5、6、7到节点11也分别搜索了3次。 如果先算出节点8、9、10到11的最短路,由于它与前面的点无关,因此最优值确定下来,再用它们求定节点5、6、7到节点11的最短路径。同理,再用节点5、6、7的最优值,来求节点2、3、4优值。最后从节点2、3、4推出1到11的最优值,显然复杂度大为降低。 简单搜索改为搜索+记忆化贪心算法则不同,它不是建立在枚举方案的基础上的。它从前向后,根据当前情况,“贪心地”决定出下一步,从而一步一步直接走下去,最终得到解。假如本例子中,我们定下这样的贪心策略:节点号k%3= =1。显然,它只访问了节点1、4、7、10、11,工作量最少,效率最高。当然,对本题来说,它不能得到最优解―――最短路径。 从图3中可以看出,贪心算法是一种比动态规划更高效的算法。只是要保证得到最优解是贪心算法的关键。
2、 1)0-1背包问题:
2)背包问题:
首先计算每种物品单位重量的价值Vi/Wi,然后,依贪心选择策略,将尽可能多的单位重量价值最高的物品装入背包。若将这种物品全部装入背包后,背包内的物品总重量未超过C,则选择单位重量价值次高的物品并尽可能多地装入背包。依此策略一直地进行下去,直到背包装满为止。

需要经过排序1、 2、 3、 4、 “进行贪心排序”和“处理问题”这两步,是贪心算法的核心部分,甚至能有子问题的重叠和多个贪心问题的重叠。log

a) 构造法
。b) 反证法

五、物品C重量3价值6C++程序如下:
using namespace std;
public:GreedyAlgorithm(int _weight[],int _value[],int capacity);void inputD();double *ComputeRatio();void SortRatio(double _Ratio[]);double ComputeProfit();

//GreedyAlgorithm.cpp
//================================
//函数参数说明:_weight[] 物品重量,_value[] 物品价值,_capacity 背包容量
GreedyAlgorithm::GreedyAlgorithm(int _weight[],int _value[],int _capacity)
value=_value;
classes=5;
//函数名称:inputD
//================================
cout<<"Please input the class of goods:\n";
for(int i=0;i<classes;i++)cin>>weight[i]>>value[i];
}
//函数功能:计算出物品的单位价值
double* GreedyAlgorithm::ComputeRatio()
for(int i=0;i<classes;i++)Ratio[i]=(double)value[i]/weight[i];
//================================
//函数返回值:void
{

//================================
//函数返回值:double
{
{
{

}//while
//main.cpp
using namespace std;
int _weight[5]={1,2,3,4,5};
GreedyAlgorithm *greedy=new GreedyAlgorithm(_weight,_value,_capacity);
cout<<"The Maximun profit is: "<<greedy->ComputeProfit()<<endl;
六、(1)构造出次序
最小生成树 局部(阶段)正确
(3) (4)快速分枝定界 在搜索过程中,有时也可以用贪心算法预测已有方案以从原始背包问题到0/1背包常见可以用贪心法解决的问题
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  贪心算法