zoukankan      html  css  js  c++  java
  • 动态规划算法应用范围的两个限制

    在看  “《算法导论》15.3动态规划原理--最优子结构通用模式”  时,感觉第四步的证明有问题,这里来分析一下,欢迎吐槽。

     ----------------------------------------------------------------------------------------

     4. 证明:作为构成原问题最优解S的组成部分,每个子问题的解都是它自身的最优解。

    
    使用反证法:
    ①假定 S是原问题 P的一个最优解,假定构成S的一个子问题 pi 的解 si,不是其自身的最优解,那么设 pi 的最优解为 si'。
    ②那么我们就可以从原问题的解S中“剪掉” pi 非最优解 si,将最优解 si' “粘贴”上去,从而得到原问题的一个更优的解 S'。
    ③这与S 是原问题的一个最优解矛盾。
    命题得证。
    
    (注:为了便于讨论,对书中给出的证明做了修改:将“子问题”修改“一个子问题”,并添加了符号。)

    ----------------------------------------------------------------------------------------

    让我们来看看第②步推理使用的逻辑:

    如果 pi的解 si' 与 si相比是一个更优的解,那么使用 si'在S中替换 si,即得一个比 S的更优的解 S'。

    这并未说明其它子问题的解的变化情况,首先假设其它子问题的解均不变:

    那么这样的逻辑隐含的假设是:S与 si 正相关。这没有根据。

    然后我们假设构成S的其他子问题的解也均被替换为这些子问题更优的解:

    那么这样的逻辑隐含的另一个假设就很明白了:

    构成原问题的解的各个子问题的解之间,不存在负的相互作用(要么互不影响,要么正相关)。

    这也是没有根据的。

     

    ----------------------------------------------------------------------------------------

    由此,也弄清楚了的动态规划算法使用范围的两个限制:

    ①构成原问题解的子问题的解,与该原问题的解 正相关;

    ②构成原问题解的各个子问题的解之间,要么互不影响,要么正相关。

    (一页之后书中给出了弱版本的说明)

    当然如果只是将动态规划算法用于现实中数值非负的、系数为正的线性的问题中,是不会超出这两个限制的。

  • 相关阅读:
    hadoop入门学习系列之一hadoop伪分布式模式下安装及运行
    redis主从复制搭建
    Struts2 配置文件result的name属性和type属性
    context:exclude-filter spring事宜【经典-转】
    Incorrect column count: expected 1, actual 2
    SQL must not be null(低级错误)
    Injection of resource dependencies failed解决办法总结
    SpringMVC Controller 介绍【转】
    Json格式化工具 JsonViewer下载
    STS或eclipse安装SVN插件
  • 原文地址:https://www.cnblogs.com/xiashu/p/3493679.html
Copyright © 2011-2022 走看看