话说“贪心“与“动态规划“

本文探讨了贪心和动态规划两种算法的思想、步骤和特点。贪心算法追求局部最优解,适用于多数问题,但可能无法得到全局最优。动态规划则通过解决子问题来寻找全局最优解,虽然能避免局部最优,但处理复杂问题时面临维数障碍。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.算法思想

1.1贪心思想

在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的是在某种意义上的局部最优解。通俗讲:就是求解问题时,先去判断第一步的最优解,然后讲下面看作一个递归的过程;

该算法在不考虑任何后果的情况下,选择了当时可行的最佳解决方案。贪婪方法说,应该分阶段解决问题,在这种情况下,应考虑到每个输入都是可行的。由于这种方法只关注即时结果,而没有考虑更大的局面,因此被认为是贪婪的。

1.2动态规划思想

将待求解的问题分解成若干个子问题,先分别求解每一个子问题,在求解每一子问题时,列出各种可能的局部解,通过决策保留那些有可能达到最优的局部解,丢弃其他局部解。依次解决各子问题,最后一个子问题就是最初待求解问题的解。

2.算法步骤

2.1贪心算法步骤

(1)建立数学模型描述问题;

(2)将求解的问题分为若干个子问题;

(3)对每个子问题求解,得到子问题的局部最优解;

(4)把每个子问题的局部最优解合为求解问题的一个解;

2.2动态规划算法步骤

(1)分析最优解的性质,并刻画其结构特征,分解子问题;

(2)递归的定义最优解;

(3)以自底向上或自顶向下的记忆化方式(备忘录法)计算出子问题最优值;

(4)根据计算最优值时得到的信息,构造问题的最优解;

3.算法特点

3.1贪心

优点:适合大多数问题,相比其他算法易于实现且高效

缺点:未能产生最优的解决方案(贪心算法基本上是将当前问题分解为子问题建立解决方案,然后选择下一部分,以便立即产生当前问题的最佳解决方案(局部最优解)。结果,无需考虑或担心当前决定的后果。从来没有重新考虑以前的选择,尽管贪心算法给出了接近最优的解决方案,但它未能产生最优的解决方案。)

3.2动态规划

优点:

(1)能够得到全局最优解;

(2)由于动态规划方法反映了动态过程演变的联系和特征,在计算时可以利用实际知识和经验提高求解效率;

缺点:

(1)没有统一的处理方法,必须根据问题的各种性质并结合一定的技巧来处理;

(2)当变量的维数增大时,总的计算量及存贮量急剧增大。受计算机的存贮量及计算速度的限制,当今的计算机仍不能用动态规划方法来解决较大规模的问题,会产生“维数障碍”问题;

 

枯燥的理论知识后,往往需要“理论联系实际”;可以通过下面这个栗子更好的理解:https://blog.youkuaiyun.com/weixin_44369212/article/details/107298661

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值