Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/jenkins/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 什么是「;剪贴;证明技术?_Algorithm_Math_Dynamic Programming - Fatal编程技术网

Algorithm 什么是「;剪贴;证明技术?

Algorithm 什么是「;剪贴;证明技术?,algorithm,math,dynamic-programming,Algorithm,Math,Dynamic Programming,我在一些关于算法分析和设计的文本中看到了剪切和粘贴的证明。在证明优化问题的最优子结构时,在动态规划的上下文中经常提到这一点(参见第15.3章CLRS)。它还显示在图形操作上 这些证明的主要思想是什么?我如何使用它们来证明算法的正确性或特定方法的便利性?剪切粘贴是一种用于证明图论概念的方法,其思想是:假设您有问题a的解决方案,您想说的是,在解决方案中应该有一些边/节点。假设您的解决方案没有指定的边/节点,您尝试通过剪切边/节点并粘贴指定的边/节点来重建解决方案,并说新解决方案的好处至少与以前的解决

我在一些关于算法分析和设计的文本中看到了剪切和粘贴的证明。在证明优化问题的最优子结构时,在动态规划的上下文中经常提到这一点(参见第15.3章CLRS)。它还显示在图形操作上


这些证明的主要思想是什么?我如何使用它们来证明算法的正确性或特定方法的便利性?

剪切粘贴是一种用于证明图论概念的方法,其思想是:假设您有问题a的解决方案,您想说的是,在解决方案中应该有一些边/节点。假设您的解决方案没有指定的边/节点,您尝试通过剪切边/节点并粘贴指定的边/节点来重建解决方案,并说新解决方案的好处至少与以前的解决方案相同

一个最重要的例子是证明MST属性(证明贪婪选择足够好)。请参阅。

在执行动态编程时,有时算法中会出现术语“剪切和粘贴”(以及其他内容,但这正是我第一次看到它的地方)。其思想是,为了使用动态规划,您试图解决的问题可能有某种潜在的冗余。您可以使用表格或类似的技术来避免反复解决相同的优化问题。当然,在您开始尝试使用动态编程之前,最好证明问题中存在这种冗余,否则使用表将一无所获。这通常称为“最优子问题”属性(例如,在CLR中)


“剪切粘贴”技术是一种证明问题具有这种性质的方法。特别是,您希望表明,当您提出问题的最佳解决方案时,您必须使用组成子问题的最佳解决方案。证据是矛盾的。假设您通过使用子问题的次优解决方案来找到问题的最佳解决方案。然后,如果您要用最优子问题解决方案(通过“粘贴”它们)替换(“剪切”)这些次优子问题解决方案,您将改进您的最优解决方案。但是,由于假设你的解决方案是最优的,你有一个矛盾。这种证明还涉及其他一些步骤,但这是“剪切粘贴”部分。

可以使用“剪切粘贴”技术来证明贪婪算法的正确性(优化结构和贪婪选择属性)和动态规划算法的正确性

贪婪的正确性 麻省理工学院2005年本科算法课程的讲稿展示了“剪切粘贴”技术,以证明最优结构和贪婪选择特性

麻省理工学院6.046J/18.410J 2015春季讲稿使用“剪切粘贴”技术证明贪婪选择属性

动态规划正确性 CLRS(第3版)第15.3章动态规划元素第379页中介绍了“剪切和粘贴”的更真实解释

“4.通过使用“剪切粘贴”,您可以证明在问题的最优解决方案中使用的子问题的解决方案本身必须是最优的。” 技术,假设每个子问题的解决方案都不是最优的,然后导出一个矛盾,特别是通过“删除”非最优子问题的解决方案并“粘贴”来实现如果是最优的,则表明您可以为原始问题获得更好的解决方案,从而与您已经拥有最优解决方案的假设相矛盾。如果存在多个子问题,则它们通常非常相似,因此可以轻松修改其中一个问题的剪切粘贴参数。”矛盾证明

假设p为假,也就是说,p为真

证明了!p包含两个相互矛盾的断言Q和!Q


因为Q和!Q不能都是真的,p为假的假设肯定是错的,p一定是真的。

为什么向下投票和投票结束?我不明白为什么这不是一个真正的问题。我在算法文本中遇到了多处剪切和粘贴证明。这个问题是如何变成的“”模棱两可、含糊不清、不完整、过于宽泛或修辞,无法合理回答“?@Cameron甚至很好地解释了动态规划证明的本质。。