栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

分而治之,动态编程和贪婪算法!

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

分而治之,动态编程和贪婪算法!

当我遇到最佳子结构的问题并且没有子问题共享子子问题时,可以使用分治法来解决吗?

是的,只要您可以为每种子问题找到最佳算法即可。

但是,当子问题共享子子问题(重叠子问题)时,我可以使用动态编程来解决问题吗?

这样对吗?

是。动态编程基本上是分而治之算法系列的一个特例,其中所有子问题都是相同的。

贪婪算法与动态编程有何相似之处?

他们是不同的。
动态编程为您提供了最佳解决方案。
贪婪算法通常会在很短的时间内给出良好/公平的解决方案,但是并不能保证达到最优。

可以
,这是相似的,因为它通常将解决方案构造分为几个阶段,在此阶段中,它会选择局部最优的选择。但是,如果阶段不是原始问题的最佳子结构,则通常不会导致最佳解决方案。

编辑:

正如@rrenaud指出的那样,有一些贪婪算法已被证明是最佳算法(例如Dijkstra,Kruskal,Prim等)。
因此,更正确地说,贪婪编程和动态编程之间的主要区别在于,前者在解决方案的空间上不是穷尽的,而后者在解决方案的空间上是穷尽的。
实际上,贪婪算法在该空间上是短视的,解决方案构建过程中所做的每个选择都不会被重新考虑。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/668875.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号