树的动态规划及构造.doc

  1. 1、本文档共20页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
【关键字】? ??? 树的动态规划? 上方子树? 树的构造 【摘要】 ??? 本文通过几道关于树的题目,分析了树的动态规划与构造这两种类型题目的解法。 【目录】 一、树的动态规划?2 『例1』Centroid?2 『例2』Computer Network?3 『例3』数据生成器?5 『例4』?7 小结?? ?7 二、树的构造?8 『例5』?8 『例6』树重建 (Rebuild)?9 『例7』毛毛虫 (Caterpillar)?10 三、总结?? ?12 【正文】 ??? 树,是一种很特殊的数据结构,关于它的题目十分的多,几乎在大部分的比赛当中都会出现这类型的题目,而且研究树的题目也是十分有趣的。由于以树为背景,题目会很明显地渗透了树的特征,而树的特征也正是我们解决这类问题的突破口。 ??? 树的问题往往会有一个十分突出的特点:数据量十分大。由于树是十分特殊的图:连通图,n个顶点,n-1条边。因此在空间可以承受的范围内n可以达到很大。而且树的特殊结构也决定了算法的优越性。正因为树的特殊,通常能够找到十分高效的算法(比如说是O(n))。于是我们解决这类题目的时候应当牢牢抓住树的特征,认真分析问题,这样就能比较好地解决题目了。 ??? 下面举一些例子谈谈树的动态规划与构造。 一、树的动态规划 ??? 树的动态规划,顾名思义,就是在树上面进行动态规划。树的动态规划很有特点,虽说对某个结点来说,状态转移的复杂度是不确定的(这取决于与它相连的边数),但是总体来说,每条边通常只会对应常数次状态转移,所以总的复杂度是O(n)的,这就使树的动态规划十分高效。 ??? 例如下面这道题目: 『例1』Centroid You are given an undirected connected graph, with N vertices and N-1 edges (a tree). You must find the centroid(s) of the tree.? ? In order to define the centroid, some integer value will be assosciated to every vertex. Lets consider the vertex k. If we remove the vertex k from the tree (along with its adjacent edges), the remaining graph will have only N-1 vertices and may be composed of more than one connected components. Each of these components is (obviously) a tree. The value associated to vertex k is the largest number of vertices contained by some connected component in the remaining graph, after the removal of vertex k. All the vertices for which the associated value is minimum are considered centroids.? Input The first line of the input contains the integer number N (1=N=16 000). The next N-1 lines will contain two integers, a and b, separated by blanks, meaning that there exists an edge between vertex a and vertex b.? Output You should print two lines. The first line should contain the minimum value associated to the centroid(s) and the number of centroids. The second line should contain the list of vertices which are centroids, sorted in ascending order.? Sample Input 7 1 2 2 3 2 4 1 5 5 6 6 7 Sample Output 3 1 1 ??? 题目的意思是说:给出一棵具有N个结点的树(1=N=16 000),找出这棵树的“质心”

文档评论(0)

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

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

1亿VIP精品文档

相关文档