树的重心相关概念证明
树的大小:树的结点数
树的重心:相比于树中其它结点,其所有的子树中结点数最多的子树的结点数最少。
或定义结点的平衡值为以该结点为根的树的所有子树中结点数最多的子树的结点数。树的重心为平衡值最小的结点。
定理1. 一个结点是树的重心的充要条件是:以该结点为根时,所有子树的大小都不超过整棵树大小的一半。
证明充分性:如果一个结点是树的重心,那么所有子树的大小都不超过整棵树大小的一半。
反证法
假设:以重心为根时,存在一棵子树的结点数量大于整棵树结点数量的一半
即设整棵树结点数量为n,重心为u。记重心为u时,以u的邻接点v为根的子树的结点数为sizuvsiz_uvsizuv。假设存在根结点为v的子树,该子树结点数最多,其结点数量sizuv>n2siz_uv > \frac{n}{2}sizuv>2n。那么结点u的平衡值为sizeuvsize_uvsizeuv。
现在以结点v为整棵树的根结点,以其孩子u为根的子树的结点数为sizvu=n−sizuv<n−n2=n2siz_vu = n-siz_uv < n- \frac{n}{2} =\frac{n}{2}sizvu=n−sizuv<n−2n=2n
所以sizvu<sizuvsiz_vu<siz_uvsizvu<sizuv
对于以v为根的,以除了u以外的其它孩子为根的子树,在u为重心时就是以v为根的树的子树,其结点数自然小于sizuvsiz_uvsizuv。
因此,当选v为重心时,所有子树的结点数都小于sizuvsiz_uvsizuv,所以结点v的平衡值小于结点u的平衡值,这与以u为重心时,结点u的平衡值最小相悖。
因此假设不成立,原命题得证。
证明必要性:如果以某结点为根时,所有子树的大小都不超过整棵树大小的一半,那么该结点是树的重心。
证明:设该结点为u,u的所有子树的大小不超过整棵树大小的一半。
u的所有子树中,最大的子树的根结点为v,大小为sizevsize_vsizev
那么有sizev≤n/2size_v\le n/2sizev≤n/2,等价于sizev≤n−sizevsize_v \le n-size_vsizev≤n−sizev
证明其他结点的所有子树中,最大子树的大小≥sizev\ge size_v≥sizev
考察u的以v为根的子树之外的其它子树中的结点,设该结点为x。那么x的包含u的子树一定包含以v为根的子树,该子树的大小>sizev>size_v>sizev。
考察u的以v为根的子树中的结点,设该结点为x。x的“以v为根的子树”中的子树的总结点数小于等于sizevsize_vsizev,x的u所在子树的大小≥n−sizev≥sizev\ge n-size_v\ge size_v≥n−sizev≥sizev。
证毕。
定理2. 树的边权为正数时,树中所有结点到重心的路径长度加和最小
设u为树的重心,所有顶点到u的路径长度加和为s。
考虑到所有顶点到任意其它顶点x的路径长度加和
设x在u的以v为根的子树中,记总结点数为nnn,以v为根的子树的结点数为nvn_vnv
那么u以及u的所有除了v以外的子树中的结点数为n−nvn-n_vn−nv,这些结点到x的路径长度比到u的路径长度增加了u到x的路径长度Dis(u,x)Dis(u, x)Dis(u,x),路径总长度增加值为(n−nv)Dis(u,x)(n-n_v)Dis(u,x)(n−nv)Dis(u,x)
以v为根的子树中的顶点,从计算到u的路径长度变为计算到x的路径长度,
设以v为根的子树中的某顶点为z,z到u的路径长度为Dis(z,u)Dis(z,u)Dis(z,u),z到x的路径长度为Dis(z,x)Dis(z,x)Dis(z,x)。
如果x是z的祖先,那么Dis(z,u)=Dis(z,x)+Dis(x,u)Dis(z,u)=Dis(z,x)+Dis(x,u)Dis(z,u)=Dis(z,x)+Dis(x,u)
如果x不是z的祖先,那么Dis(z,u)<Dis(z,x)+Dis(x,u)Dis(z,u) < Dis(z,x) + Dis(x,u)Dis(z,u)<Dis(z,x)+Dis(x,u)
所以Dis(z,u)−Dis(z,x)≤Dis(x,u)Dis(z,u) - Dis(z,x) \le Dis(x,u)Dis(z,u)−Dis(z,x)≤Dis(x,u)
因此每个顶点到x比到u路径长度减少的最大值为Dis(u,x)Dis(u, x)Dis(u,x),总路径长度最大减少值为nvDis(u,x)n_vDis(u,x)nvDis(u,x)
根据定理1,可知nv≤n2n_v\le\frac{n}{2}nv≤2n,那么n≥2nvn\ge 2n_vn≥2nv,因此所有顶点到x比所有顶点到u的路径长度加和的增加值为:(n−nv)Dis(u,x)−nvDis(u,x)=(n−2nv)Dis(u,x)≥0(n-n_v)Dis(u,x)-n_vDis(u,x)=(n-2n_v)Dis(u,x)\ge 0(n−nv)Dis(u,x)−nvDis(u,x)=(n−2nv)Dis(u,x)≥0,因此所有结点到x的路径长度加和比所有结点到u的路径长度加和是更大的。
因此树的边权为正数时,树中所有结点到重心的路径长度加和最小。