Algorithm 给定一个DP问题,我如何证明它等价于其他DP问题?

Algorithm 给定一个DP问题,我如何证明它等价于其他DP问题?,algorithm,dynamic-programming,Algorithm,Dynamic Programming,这里我有一个DP问题(比如问题1),我认为它相当于其他DP问题(比如问题2)。我怎样才能正式证明这些事实是等价的,而不仅仅是直觉 从一组大小不同的岩石开始,反复选择两块岩石,将它们击在一起,如果它们的大小相同,则会导致两块岩石的破坏;如果a是较大岩石的大小,b是较小岩石的大小,则会导致a-b大小的较小岩石。你重复,直到有一块石头。问题是要找到一系列的岩石撞击,从而产生尽可能小的残留岩石 问题2是将数组划分为两个子集,使两个子集之间的差异最小 我如何证明这两个问题是等价的?归纳法是一种方法吗?但我

这里我有一个DP问题(比如问题1),我认为它相当于其他DP问题(比如问题2)。我怎样才能正式证明这些事实是等价的,而不仅仅是直觉

从一组大小不同的岩石开始,反复选择两块岩石,将它们击在一起,如果它们的大小相同,则会导致两块岩石的破坏;如果a是较大岩石的大小,b是较小岩石的大小,则会导致a-b大小的较小岩石。你重复,直到有一块石头。问题是要找到一系列的岩石撞击,从而产生尽可能小的残留岩石

问题2是将数组划分为两个子集,使两个子集之间的差异最小


我如何证明这两个问题是等价的?归纳法是一种方法吗?但我想不出一种通过归纳法来证明等价性的结构?

回答你问题的具体部分:如何证明“岩石撞击”和“最小化分区差异”之间的等价性

如果你已经找到了解决“砸石头”问题的方法,那么你就有一系列的石头砸。您可以将其转化为将岩石分成两组的分区,其中分区大小之间的差异是最终岩石的值,如下所示:

在每一块石头上写下每一块石头的大小。当你把两块石头砸在一起,较大的上面写着“E”,较小的写着“F”,然后在较大的石头的剩余部分写上“(E-F)”,丢弃较小的石头。(如果两块岩石的尺寸相等,则在其中一块现在尺寸为零的岩石上写上“(E-F)”,然后丢弃另一块)

最后,你还剩下一块石头。展开所有括号,将正尺寸的岩石尺寸放在A组中,将负尺寸的岩石尺寸放在B组中

例如,如果有大小为7、5、4的岩石,则从以下开始:

rock{size=7, text="7"}
rock{size=5, text="5"}
rock{size=4, text="4"}
假设您同时击打5和4,您现在有:

rock{size=1, text="(5-4)"}
rock{size=7, text="7"}
现在,将较小的碎片撞击到7号岩石上,留下:

rock{size=7, text="(7-(5-4))"}
展开“(7-(5-4))”的方括号,得到“7-5+4”,因此这对应于分区{7,4}(正数)和{5}(负数)。这两个分区之间的总差值为6,与最终岩石的尺寸相同。(注意,这不是一个最佳分区或岩石撞击)

证明的另一个方向更容易:分区转化为岩石撞击

如果将分区分为两组a和B,则取a中的一个元素a和B中的一个元素B,如果a>=B,则将a替换为a-B,并将B从B中移除。否则,将a从a中移除,并将B替换为“B-a”。这可以重复,直到只剩下一个元素。请注意,此过程保留sum(A)-sum(B),即分区差。还要注意的是,这正好对应于导致分区差(绝对值)的岩石撞击

这表明,我们可以将具有和差d的分区与岩石撞击相匹配,从而得到尺寸为d的岩石

因此,我们可以解决任一问题以找到最优结果,并且我们可以将特定的解决方案转化为另一个问题的解决方案


这并不是一个完整的证据,但希望能给你一个指导。

我得到了这个。什么是正式的证明,是通过归纳法吗?你可以用归纳法来完成证明,是的。我需要研究的归纳法陈述的结构是什么?