- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
NOI导刊___树型动态规划
树型动态规划
长沙市雅礼中学 朱全民
加分二叉树
• 给定一个中序遍历为1,2,3,…,n的二叉树
• 每个结点有一个权值
• 定义二叉树的加分规则为:
– 左子树的加分×右子树的加分+根的分数
– 若某个树缺少左子树或右子树,规定缺少的子
树加分为1。
• 构造符合条件的二叉树
– 该树加分最大
– 输出其前序遍历序列
• 样例
• 中序遍历为1,2,3,4,5的二叉树有很多,下图
是其中的三棵,其中第三棵加分最大,为
145.
分析
• 性质:中序遍历是按“左-根-右”方式进行遍历二叉树,
因此二叉树左孩子遍历序列一定在根结点的左边,右孩子
遍历序列一定在根结点的右边!
• 因此,假设二叉树的根结点为k,那么中序遍历为1,2,…,n
的遍历序列,左孩子序列为1,2,…,k-1,右孩子序列为
k+1,k+2,…,n,如下图
动态规划
• 设f(i,j) 中序遍历为i,i+1,…,j的二叉树的最大加分,则
有:
f(i,j)=max{f[i,k-1]*f[k+1,j] +d[k]}
• 显然f(i,i)=d[i]
• 答案为f(1,n)
• 1=i=k==j=n
• 3
时间复杂度 O(n )
• 要构造这个树,只需记录每次的决策值,令b(i,j)=k,
表示中序遍历为i,i+1,…,j的二叉树的取最优决策时
的根结点为k
• 最后前序遍历这个树即可。
选课
• 给定M门课程,每门课程有一个学分
• 要从M门课程中选择N门课程,使得学分总
和最大
• 其中选择课程必须满足以下条件:
– 每门课程最多只有一门直接先修课
– 要选择某门课程,必须先选修它的先修课
• M,N=500
分析
• 每门课程最多只有1门直接先修课,如果我们把课
程看成结点,也就是说每个结点最多只一个前驱
结点。
• 如果把前驱结点看成父结点,换句话说,每个结
点只有一个父结点。显然具有这种结构的模型是
树结构,要么是一棵树,要么是一个森林。
• 这样,问题就转化为在一个M个结点的森林中选
取N个结点,使得所选结点的权值之和最大。同
时满足每次选取时,若选儿子结点,必选根结点
的条件。
样例分析
• 如图1,为两棵树,我们可以虚拟一个结点,将这
些树连接起来,那么森林就转会为了1棵树,选取
结点时,从每个儿子出发进行选取。显然选M=4
时,选3,2,7,6几门课程最优。
转化为二叉树
• 如果该问题仅仅只是一棵二叉树,我们对儿子的分配就仅
仅只需考虑左右孩子即可,问题就变得很简单了。因此我
们试着将该问题转化为二叉树求解。
• 图2就是对图1采用孩子兄弟表示法所得到的二叉树
动态规划
• 仔细理解左右孩子的意义(如右图):
左孩子:原根结点的孩子
右孩子:原根结点的兄弟
• 也就是说,左孩子分配选课资源时,
根结点必须要选修,而与右孩子无关。
• 因此,我们设f(i,j)表示以i为根结点的二叉树分配j 门课程的所获
得的最大学分,则有,
k f i j k − +a i
f (i , ) + ( , − 1) [ ], 根结点选修
l r
f (i j
, ) max
f (ir , j), 根结点不选修
• 0=kjn, i ∈(1..
原创力文档


文档评论(0)