浅析树的划分问题.pdf

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
IOI2004 国家集训队论文 贝小辉 浅析树的划分问题 东北育才学校 贝小辉 【摘要】 树的最大-最小划分问题可以表述为如下形式:给定一棵 n 个节点的树以及每个节点 的一个非负权值,要求将这棵树划分为k 棵子树,使得子树中所有节点权值和的最小值最大。 将原问题转化为对于给定下界,划分最多子树的问题,并通过对新问题的解决结合二分法来 解决原问题是可行的,但是算法的总复杂度要依赖于节点权值的范 。本文接下来介绍了一 个时间复杂度不依赖于节点权值范 的算法,随后通过对算法的描述、正确性的证明来进一 步探讨算法的特点,并介绍了算法的一些扩展,最后总结了两个算法各自的特点。 【关键字】 问题转化,割,移动,上方 【正文】 树的划分问题是图论中的一类范 非常广泛的问题,这类题目的大意就是将给定的一 棵树划分为若干棵子树,使其能够满足一定的条件或是使得某个特定的函数达到最值。如今, 这类问题已被扩展出了各式各样的问题,并在很多领域都有着很广泛的应用。本文所要着重 探讨的,是其中一种被称为最大-最小划分的问题。 一、 问题的提出 草莓(NOI2003 Day 2-2 berry test6~test9 ) 题目大意: 给出一片草莓中每个草莓的重量以及它们的连接情况。定义:sum(i)表示第i 块草莓田 中所有草莓重量的和 (1= i = k ),x = min { sum(i) | 1= i =k } 。你的任务就是要把一块草 莓田分割成k 块, 分割方案需要满足如下的条件: ·每一块中的草莓必然是直接或者间接的和其他草莓相连接的; ·这种分割方案所对应的x 尽可能的大。 最后输出你的分割方案和结果。 这是一道提交答案式的题目,其中第6 个数据至第 9 个数据所给的图是一棵树,若不 考虑具体的数据情况,我们可以将原问题抽象成如下问题:给定一棵树以及树中每个顶点的 一个非负权值,将树划分为k 棵子树,定义:sum(i)表示第i 棵子树中所有节点权值的和,x = min { sum(i) | 1= i =k } ,请求出x 的最大值并输出此时的划分方案。 简单的说,就是将一棵树划分成 k 棵子树,使得其中权值和最小的那棵子树最大,我 们把它称作最大-最小划分问题。 二、 算法1:转化问题 第 1 页 共 7 页 IOI2004 国家集训队论文 贝小辉 1.转化为新问题 初次面对这个问题,或许我们会觉得无从下手,动态规划,贪心等经典算法在这里似 乎都不适用,重要的是,我们不知道这个最小值是多少,令我们的思维过程遇到了很大困难。 这时,我们不妨先考虑这样一个问题: 对于一个确定的下界,最多可将树划分为多少棵子树使得每棵子树的权值和都不小于 此下界? 2 .解决新问题 如果可以解决这个问题,我们便可以再通过二分法找到原问题的解。而事实上,新问 题的解决只需要一个以贪心思想为基础的扫描算法。 扫描算法: 按照深度由大至小的顺序扫描整棵树,对于扫描到的每 个节点,计算以此节点为根的完全子树的权值和,若权值和 大于等于给定下界,则将以这个节点为根的子树划分出来, 并将其从原树中删去。直至整棵树所剩部分的权值和小于下 界,将剩余部分归入最后划分出去的子树中。最终所得到的 即是一种划分数目最多的最优划分。 算法正确性的证明比较简单,这里略去了。容易看出,算法的时间复杂度是线性的, 已经到达了理论的下界。接下来的任务就很简单了:我们可以通过二分法来找到最大的下界 x 使得划分的最大子树数目不小于k,x 既为原问题的解。 3 .小结 我们终于找到了一种解决问题的途径,但问题是否已经被完美的解决了呢?当我们分 这个算法总的时间复杂度是时候,我们发现它是依赖于节点权值的范 的。更加确切的说, 如果每个节点权值的上界是c,那么算法的时间复杂度就是O( n log(nc) ) 。虽然在大多数情 况下,程序的实际运行效率是

文档评论(0)

山丹丹 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档