分而治之是不是利用了最优子结构?

Posted

技术标签:

【中文标题】分而治之是不是利用了最优子结构?【英文标题】:Does divide-and-conquer exploit optimal substructure?分而治之是否利用了最优子结构? 【发布时间】:2020-06-25 10:13:05 【问题描述】:

在分而治之的方法中,子问题是相互独立的。 因此,不能利用重叠的子问题。

最优子结构状态的 CLRS 定义: “如果问题的最优解包含子问题的最优解,则该问题表现出最优子结构。” 我们是否知道使用分而治之的方法解决子问题是最优的?如果是这样,我认为最佳子结构适用于分而治之的方法。

【问题讨论】:

【参考方案1】:

是的。向自己证明是非常快的。

给定具有分而治之解决方案的算法,假设它没有最优子结构。我会编一些简单的符号:P 是整体问题,PL 和 PR 是左右子问题。 S(P)是P的解。

根据分治解决方案的定义,要求 S(P) = S(PL) + S(PR),其中 + 是子问题解决方案的重组。

根据已知没有最优子结构的问题的定义,不一定是 S(P) = S(PL) + S(PR)。

这与定义直接矛盾。假设与给定相矛盾,所以假设一定是错误的。

您可以切换给定和假设以获得相同的矛盾。

所以说一个问题有一个最优的子结构就等于说这个问题有一个分而治之的解决方案。

【讨论】:

以上是关于分而治之是不是利用了最优子结构?的主要内容,如果未能解决你的问题,请参考以下文章

README3动态规划之“找零钱”说明最优子结构怎么解决

最优子序列问题(减而治之 - 二分查找 - 分组)

动态规划(dynamic programming)(最优子问题与重叠子问题,以及与贪心的区别)

动态规划-第一节3:动态规划之使用“找零钱”问题说明最优子结构如何解决

动态规划答疑篇

动态规划答疑篇