当前位置: 首页 > news >正文

树的重心相关概念证明

树的大小:树的结点数
树的重心:相比于树中其它结点,其所有的子树中结点数最多的子树的结点数最少。
或定义结点的平衡值为以该结点为根的树的所有子树中结点数最多的子树的结点数。树的重心为平衡值最小的结点。

定理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=nsizuv<n2n=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/2sizevn/2,等价于sizev≤n−sizevsize_v \le n-size_vsizevnsizev

证明其他结点的所有子树中,最大子树的大小≥sizev\ge size_vsizev
考察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_vnsizevsizev
证毕。

定理2. 树的边权为正数时,树中所有结点到重心的路径长度加和最小

设u为树的重心,所有顶点到u的路径长度加和为s。
考虑到所有顶点到任意其它顶点x的路径长度加和
设x在u的以v为根的子树中,记总结点数为nnn,以v为根的子树的结点数为nvn_vnv
那么u以及u的所有除了v以外的子树中的结点数为n−nvn-n_vnnv,这些结点到x的路径长度比到u的路径长度增加了u到x的路径长度Dis(u,x)Dis(u, x)Dis(u,x),路径总长度增加值为(n−nv)Dis(u,x)(n-n_v)Dis(u,x)(nnv)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}nv2n,那么n≥2nvn\ge 2n_vn2nv,因此所有顶点到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(nnv)Dis(u,x)nvDis(u,x)=(n2nv)Dis(u,x)0,因此所有结点到x的路径长度加和比所有结点到u的路径长度加和是更大的。
因此树的边权为正数时,树中所有结点到重心的路径长度加和最小。

http://www.dtcms.com/a/285979.html

相关文章:

  • MyUI表单VcForm组件文档
  • 组件-多行文本省略-展开收起
  • VMC850立式加工中心Y轴传动机械结构设计cad【7张】三维图+设计说明书
  • 多模态大模型研究每日简报(2025-07-17)
  • 设计循环队列oj题(力口622)
  • 基于现代R语言【Tidyverse、Tidymodel】的机器学习方法与案例分析
  • OSPF路由协议的协商过程
  • (八)复习(拆分微服务)
  • 快速了解pycharm
  • 微服务基础环境搭建-centos7
  • HIVE实战处理(二十四)留存用户数
  • 第8天 | openGauss中一个数据库可以存储在多个表空间中
  • mybatisdemo(黑马)
  • 数据结构-3(双向链表、循环链表、栈、队列)
  • 前端-CSS (样式引入、选择器)
  • 7月18日总结
  • 深度学习之----对抗生成网络-pytorch-CycleGAN-and-pix2pix
  • Jenkins pipeline 部署docker通用模板
  • drm驱动学习(一)sunxi_drm初始化
  • 【leetcode】3201. 找出有效子序列的最大长度(1)
  • PyCharm 高效入门指南(核心模块详解二)
  • RoboBrain 2.0(具身智能论文阅读)
  • 笔试——Day12
  • 阿里云alicloud liunux3-安装docker
  • Python编程进阶知识之第二课学习网络爬虫(selenium)
  • JavaScript进阶篇——第九章 异常、this 与性能优化全解(终)
  • 14.链路聚合技术
  • 量化交易如何查询CFD指数实时行情
  • postman接口测试,1个参数有好几个值的时候如何测试比较简单快速?
  • IP协议深入理解