- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
消防站解题报告 广东中山纪念中学 陈启峰 【问题描述】 Z国有n个城市,从1到n给这些城市编号。城市之间连着高速公路,并且每两个城市之间有且只有一条通路。不同的高速公路可能有不同的长度。最近Z国经常发生火灾,所以当地政府决定在某些城市修建一些消防站。在城市k修建一个消防站须要花费大小为的费用。函数W对于不同的城市可能有不同的取值。如果在城市k没有消防站,那么它到离它最近的消防站的距离不能超过。每个城市在不超过距离的前提下,必须选择最近的消防站作为负责站。函数D对于不同的城市可能有不同的取值。为了节省钱,当地政府希望你用最少的总费用修建一些消防站,并且使得这些消防站满足上述的要求。 【问题分析】 【数学模型】 首先,以n个城市为结点、高速公路为边,高速公路长为边权构造成一个图。由性质“每两个城市之间有且只有一条通路”可知这个图是一棵树。 令为结点和结点之间的距离。任务是找出一个01序列,使得对于,都有 并且使得目标函数 最小化。 【算法模型分析】 由于这题涉及到距离和图论等方面,便可猜想这是一道用图论算法解决的问题。可是在尝试过许多图论算法之后却发现这种猜想是走不通的。 这时就要充分地利用问题的特殊性。我们知道这图是一棵树,并且这题是求目标函数最小化的问题。根据这些特性,我们基本上可以肯定这题的算法是树型动态规划。 【确定动态规划时的矛盾】 用动态规划算法解题首先要做的是确定好状态,这应该是不容置疑的,因为状态表示是动态规划中的重中之重。一般地,树型动态规划的状态中会有一个参数,表示此状态的研究对象是以为根的子树。 但是,如果仅用表示在以为根的子树中,修建符合要求(子树中的所有结点到最近消防站的距离不超过其对应的函数D值)的消防站的最小费用——即状态只用上述的一个参数,那么状态转移方程是无法找到的。因为这种状态表示无法反映出在哪里修建了消防站、离最近的消防站的详细情况。 为了解决这种情况,我们通常会增加一个参数,可称作增加一维。这时应该增加的参数既可以是到最近消防站的距离,又可以是的最近消防站的编号,也可以是树内的最近消防站的编号,同样可以是树外的最近消防站的编号。到底更加哪个参数是可行的呢? 可是事与愿违!所有的这些状态表示都无法找到动态规划转移方程。难道状态还要增加一个参数吗?还是这题本身是NP完全性问题、而不是用动态规划题目?别急,先来做个分析吧。 【初步分析】 分析上面找不到状态转移方程的原因。在分析中便会发现产生这些矛盾的主要原因是,在状态转移时不能保证到最近消防站的距离或编号与定义的一致——换句话说,就是状态的定义太严格了——再换句话说,题目的要求太严格了。 所以,此时当务之急是放宽题目的要求。 【“放宽”方法转化限制】 现在面对的主要障碍无疑是,“每个城市在不超过距离的前提下,必须选择最近的消防站作为负责站”这一严格限制在状态转移中起着干扰作用。其实,我们并不须要知道最近的消防站是哪个,而只要保证在距离内至少有一个消防站就足够了。于是可以尝试放宽这个限制:把这个限制转化为“每个城市在不超过距离的前提下,可以选择任意一个消防站作为负责站”。 转化后,求出的最优解与转化前的是一样的。原因在于在转化后,必定存在一个最优解满足性质“每个城市在不超过距离的前提下,必须选择最近的消防站作为负责站”。 现在每个城市都享有一定的“自由权”了,可以在自己的活动范围内自由地选择消防站作为负责站。此时就有必要把状态表示重新定义一下——令表示 在以为根的子树里修建一些消防站; 在结点必须修建一个消防站; 以为根的子树内的每个结点在不超过距离的前提下,选择一个在子树内或结点上的消防站作为负责站; 结点必须选择结点上的消防站作为负责站; 的最少总费用(如果在树外则不算在内)。自然而然地“最近的消防站”这几个字在定义中消失了,这为以后确定动态规划转移方程提供了很大的方便。 【进一步分析】 经过“放宽”方法放宽限制后,状态表示基本上已经定下来了。进而要做的是确定动态规划转移方程。但是此时要确定下转移方程还是遇到了一点困难,总觉得欠缺一些性质、关系之类的。相信聪明的读者已经挖掘出原因了,那就是此时的限制过于宽松。 【“约制”方法增添限制】 动态规划算法讲求拓扑顺序和无后效性。然而现在每个城市对负责站的选取是任意的,于是就不妨对策略选取增添限制——假设城市选取城市的上消防站作为负责站,令到的路径为……,那么对于任意都有的负责站为。如果我们证明总是在一个最优解满足上述的性质,那么此限制就能被增添了。下面将证明必有一个最优解满足上述的性质。 证明: 令某个最优解对应的01序列为。 构造:在01序列的布局下,首先增加一个结点,在和有消防站的结点之间连一条权值为0的边。然后以为源点做一次Dijkstra,并记录下前驱结点。对于每个结点,如果结
文档评论(0)