能采用贪心算法求最优解的问题,一般具备()性质?

 我来答
柒叶47
2023-06-27 · TA获得超过329个赞
知道大有可为答主
回答量:9954
采纳率:100%
帮助的人:75.8万
展开全部

贪心算法适用的问题必须满足两个属性: (1) 贪心性质:整体的最优解可通过一系列局部最优解达到,并且每次的选择可以依赖以前做出的选择,但不能依赖于以后的选择。 (2) 最优子结构:问题的整体最优解包含着它的子问题的最优解。

贪心算法,“贪心”二字顾名思义,因此其规律特征就是更加注重当前的状态,贪心法做出的选择是对于当前所处状态的最优选择,它的解决问题的视角是微观的“局部”,而不是从全局宏观的角度思考和看待问题,根据这样的性质。

要求贪心法解决的问题有“无后效性”——当前的决策不会影响到后续的决策,因为如果问题前后勾连紧密的话,会造成求解过程十分混乱。贪心算法常常用于组合优化问题,它的求解过程是多步判断的过程。如果一个待求解的问题具有以上的特征,很有可能可以使用贪心算法解决。

贪心算法设计的核心是——“贪心选择的标准”,结合《算法设计与分析》书中的“活动安排问题”,该问题有“最早开始时间”“持续时间最短”“结束时间最早”三种贪心选择的标准。

当选定了“贪心选择的标准”之后,要按照这个对已知的数据信息进行预处理,通常的预处理是“排序”。本题中就要按照结束时间从小到大的顺序进行排序。

将数据进行预处理(排序)之后,一次按顺序遍历,并根据条件进行选取,构建两个集合,其中一个集合用于装符合条件的元素,另一个集合用于装未进行判断的元素,这是一个分步完成的过程。(有这个特征的典型应用就是在《数据结构》课程中曾经学习的求解最小生成树使用的prim算法、kruskal算法,两者都是分步的将符合条件的边收纳进入一个集合,再从另一个集合中挑选出符合“贪心标准”的边放入最小生成树集合)。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式