学习 Top Cluster 树分块(未完成版)

前言

树收缩

  • 对于这种树分块,我们需要先学树收缩理论
  • 树收缩,就是把树收缩,在 \(Top\>\>Tree\) 里极为常用但是msjing没学过
  • 斯,好像必须学 \(Top\>\>Tree\)
  • 树收缩有两个操作,\(compress\)\(rake\)

\(compress\)

  • 对于一个出度为 \(2\) 的点 \(x\),其连向的点为 \(y\)\(z\),那我们可以将 \(y - z\) 连边,将 \(x,x - y,x - z\) 的信息全部统计到 \(y - z\) 边里,删去 \(x,x - y,x - z\)

2026-09-08 10-46-56屏幕截图

  • trdraw 神中神

\(rake\)

  • 对于一个度数为 \(1\) 的点 \(x\),与其相连的点为 \(y\),且 \(y\) 的度数大于 \(1\)\(y\) 有一个临点 \(z\),那我们把 \(x,x - y\),的信息全部统计到 \(y - z\) 边里去,删去 \(x,x - y\)

2026-09-08 10-52-31屏幕截图

  • 现在讲完了树收缩的操作,我们发现任何一棵树都可以用树收缩来缩成两个点加一条边

2026-09-08 11-00-38屏幕截图

  • 基于树收缩,我们有关于的定义
  • 不过在这之前,我们可以先探讨一下树收缩过程中的一个边包含的信息
  • 还是那上面的图说

2026-09-08 11-09-39屏幕截图

  • 紫边包含了原树中框的所有信息,我们发现框住的部分是联通的,我们发现一个收缩的树的每一条边对于原树来说都是一个联通子图,我们称这样的联通子图为
  • 但是我们再看看上图的紫框,你会发现 \(1 - 2\) 被框分割开了,\(2\) 不被簇包含,这样的点我们称为端点,被簇包含的点称为内点,被簇包含的边称为内边

一个树簇(\(cluster\))是树上的一个连通子图,有至多两个点和全树的其他位置连接
这两个结点被称做界点(\(boundary\>\>node\)),不是界点的点被称做内点(\(internal\>\>node\)
—— \(from\>\>thesis\)

  • 对于两个端点的路径称之为簇路径

这两个界点之间的路径被称做簇路径(\(cluster\>\>path\)
—— \(from\>\>thesis\)

  • 对于原树的所有边,由于只包含自己的信息,称为基簇,对于最后收缩完成的那一条边,称为根簇
  • 你会发现上面提到的树收缩其实就是簇的合并
  • 我们发现簇的合并会产生一个二叉树,节点表示簇,其儿子表示进行 \(compress/rake\) 操作的两个簇,这样的二叉树称为 \(Top\>\>Tree\)
  • 艹我把画的图擦了

2026-09-08 11-43-05屏幕截图

  • 不过 \(Top\>\>Tree\) 以后再说,我们先搞树分块

树分块(未完成)

  • 终于开始树分块了。。。
  • 学会了树收缩,树分块就很好弄了
  • 大家一直在寻找一个在树上做分块的方式时复杂度正确,但是要么被卡,要么复杂度劣,所以介绍一种基于树收缩理论的分块方式:\(Top\>\>Cluster\) 树分块
  • 这好像是最优的树分块
  • 接下来就是读论文环节了,建议自己读,我就不粘论文了
  • sbmqwm:你这和没讲有啥区别
  • msjing:读懂了再来,先去学树上撒点的树分块,这个有点难,对了你放多久
  • sbmqwm:明天走

后话

  • 欸woc学错了。。。这个太难了。。。
posted @ 2026-09-08 12:10  msjing  阅读(13)  评论(3)    收藏  举报