树上分治

(借鉴漆子超的国家队论文:http://wenku.baidu.com/view/e087065f804d2b160b4ec0b5.html

树的分治分为:树上点分治和树上边分治。

基于点的分治:首先选取一个点将无根树转为有根树,再递归处理每一颗以根结点的儿子为根的子树。


基于边的分治:在树中选取一条边,将原树分成两棵不相交的树,递归处理。


基于点的分治:我们选取一个点,要求将其删去后,结点最多的树的结点个数最小,这个点被称为“树的重心”。

基于边的分治:我们选取的边要满足所分离出来的两棵子树的结点个数尽量平均,这条边称为“中心边

这两个问题,都可以使用在树上的动态规划来解决,时间复杂度均为O(N),其中N为树的结点总数。

两个定理(证明略)

 1)存在一个点使得分出的子树的结点个数均不大于N/2;

 2)如果一棵树中每个点的度均不大于D,那么存在一条边使得分出的两棵子树的结点个数在[N/(D+1),N*D/(D+1](N>=2)

 (由定理 1 可得,在基于点的分治中每次我们都会将树的结点个数减少一半,因此递归深度最坏是O(logN),在树是一条链的时候达到上界。)

 (由定理 2 我们可以得到在D为常数时,基于边的分治递归最坏深度为O(logN)。)


转载于:https://www.cnblogs.com/lris-searching/p/9403117.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值