4树型动态规划.pptVIP

  • 4
  • 0
  • 约4.55千字
  • 约 32页
  • 2019-08-10 发布于广东
  • 举报
* * * * * 树型动态规划 长沙市雅礼中学 朱全民 加分二叉树 给定一个中序遍历为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 时间复杂度 O(n3) 要构造这个树,只需记录每次的决策值,令b(i,j)=k,表示中序遍历为i,i+1,…,j的二叉树的取最优决策时的根结点为k 最后前序遍历这个树即可。 选课 给定M门课程,每门课程有一个学分 要从M门课程中选择N门课程,使得学分总和最大 其中选

文档评论(0)

1亿VIP精品文档

相关文档