确定深度问题.docVIP

  • 8
  • 0
  • 约 5页
  • 2016-08-12 发布于北京
  • 举报
确定深度问题.doc

算法作业: 确定深度问题 闵洪波 051073 作业1:用三种方法(递归、栈和仅用while循环)实现新的Find指令,不仅能实施路径压缩,而且在压缩时能够正确地修改weight值。 作业2:编写Find_Depth(i)指令的程序,返回i在原森林中的深度,并上机验证。 作业3:编写实现Link(v, r)指令的程序。 算法思路 在D_森林中执行Find(i)指令实施路径压缩时,即把从结点i到其所在集合的树根结点root路径上所有的结点变成根结点root的子结点,为了保证结点weight值所具有的性质(结点i在原森林中的深度等于它所有祖先结点的weight值之和),还必须更改结点的weight的值,同时改变结点的父结点意味着原父结点的count值也要改变。对D_森林和原森林之间的关系以及weight值的性质可得到以下两个计算公式: (1)结点i的新weight值 = i的旧weight值+i原父结点的新weight值; (2)结点i的新count 值 = i的旧count值—i原子结点的旧count 值 其中根结点的子结点的weight值应该保持不变。 用递归实现Find指令的函数原型为FindByRecursion(int i, int w)实施路径压缩并返回结点i的父结点,函数中的引用变量w记录结点i原父结点的新weight值,每次递归调用FindByRecurs

文档评论(0)

1亿VIP精品文档

相关文档