将最优装载问题的贪心算法推广到2艘船的情形,贪心算法仍能产生最优解吗?

如题所述

贪心算法不能产生最优解。

两艘船的装载问题,是先装完第一艘,再装第二艘,所以就必须把第一艘尽可能的装满,才能使总的装载量更多。

对于一个具体问题,要确定它是否具有贪心选择的性质,必须证明每一步所作的贪心选择最终能得到问题的最优解,通常可以首先证明问题的一个整体最优解,是从贪心选择开始的,而且作了贪心选择后,原问题简化为一个规模更小的类似子问题。



扩展资料:

两艘船的装载问题需要用的是回溯法,有了问题的解空间后,还需要将解空间有效地组织起来,使得回溯法能方便地搜索整个解空间,通常将解空间组织成树或图的形式。

如果在当前的扩展结点处不能再向纵深方向移动,则当前的扩展结点就成为死结点。此时应往回移动(回溯)至最近的一个活结点处,并使其成为当前的扩展结点。回溯法以上述工作方式递归地在解空间中搜索,直至找到所要求的解或解空间中已无活结点时为止。

此外,贪心算法的每一次操作都对结果产生直接影响,而动态规划则不是。贪心算法对每个子问题的解决方案都做出选择,不能回退;动态规划则会根据以前的选择结果对当前进行选择,有回退功能。

参考资料来源:百度百科-贪心算法

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-11-26
贪心算法不能产生最优解,类似0-1背包问题。因贪心选择并不能保证第一艘船装满,而第一艘船的剩余空间应该越小越好。
第2个回答  2013-11-26
不能...见主教材的转载问题

将最优装载问题的贪心算法推广到2艘船的情形,贪心算法仍能产生最优...
贪心算法不能产生最优解。两艘船的装载问题,是先装完第一艘,再装第二艘,所以就必须把第一艘尽可能的装满,才能使总的装载量更多。对于一个具体问题,要确定它是否具有贪心选择的性质,必须证明每一步所作的贪心选择最终能得到问题的最优解,通常可以首先证明问题的一个整体最优解,是从贪心选择开...

如何证明最优装载问题具有贪心选择性质
比如所你是按每次装入重量最小的作为贪心的选择,那么设重量从小到大(x1,x2,...,xn)是最优装载问题的一个最优解。设k=min{i|xi=1}.当k=1的时候(x1,x2,...,xn)是一个满足贪心性质的最优解。当k>1,令y=1,yk=0,yi=xi,i不等于k,那么yi与对应重量wi的乘积的和=w1-wk+wixi...

将最优装载问题的贪心算法推广到2艘船的情形,贪心算法仍能产生最优...
贪心算法不能产生最优解。两艘船的装载问题,是先装完第一艘,再装第二艘,所以就必须把第一艘尽可能的装满,才能使总的装载量更多。对于一个具体问题,要确定它是否具有贪心选择的性质,必须证明每一步所作的贪心选择最终能得到问题的最优解,通常可以首先证明问题的一个整体最优解,是从贪心选择开...

相似回答