点分治总结(未完成)

穿精又带淫゛_ 提交于 2020-02-13 20:46:20

点分治常用于静态树上的路经统计问题,我们可以很自然的设计出这样一种分治算法:
1.找出根结点Root;
2.计算以Root为根的树的答案;
3.删除结点Root,分治解决Root的每个子树;
但这样并不是最优,当树退化成链时,递归层数就会退化为O(N), 整个程序时间复杂度也会退化成O(N ^ 2)。
为了解决这个问题,我们每次找的Root必须是树的重心。这样的话递归的复杂度就能稳定在O(N)。

树的重心:

树的重心也叫树的质心。找到一个点,其所有的子树中最大的子树节点数最少,那么这个点就是这棵树的重心,删去重心后,生成的多棵树尽可能平衡。 --百度百科

根据树的重心的概念,



标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!