当我遇到最优子结构的问题并且没有子问题共享子子问题时,我可以使用分治算法来解决它吗?
但是当子问题共享子子问题(重叠子问题)时,我可以使用动态规划来解决问题吗?
它是否正确?
贪心算法与动态规划有何相似之处?
当我遇到最优问题时
子结构且无子问题股份
子子问题然后我可以使用除法
并用征服算法来解决它?
是的,只要你能为每种子问题找到一个最优算法。
但是当子问题共享时
子子问题(重叠
子问题)然后我可以使用动态
编程来解决问题?
它是否正确?
是的。动态规划基本上是分而治之算法系列的一个特例,其中所有子问题都是相同的。
贪心算法有何相似之处
动态规划?
他们是不同的。
动态规划为您提供最佳解决方案。
贪心算法通常会在短时间内给出良好/公平的解决方案,但它不能保证达到最佳值。
It is, 比方说,类似,因为它通常将解决方案构建分为几个阶段,在这些阶段中它采取局部最优的选择。但是,如果阶段不是原始问题的最佳子结构,那么通常它不会导致最佳解决方案。
EDIT:
正如 @rrenaud 所指出的,有一些贪婪算法已被证明是最优的(例如 Dijkstra、Kruskal、Prim 等)。
因此,更正确地说,贪心规划和动态规划之间的主要区别在于,前者在解决方案的空间上并不详尽,而后者却是。
事实上,贪婪算法在这个领域是短视的,并且在解决方案构建过程中做出的每个选择都不会被重新考虑。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)