两种求解连通无向图的某一生成树上每一条树边的基本割集的方法
离散数学课上的脑洞
(可能已经被别人想到过了)
首先我们回顾一下基本割集的定义:
对于一个连通无向图G及其的某棵生成树T
对于生成树上面的树边e,将e割开后生成树T会被分成两个连通分量
新图记作T'
我们称e与起点终点在T'中属于不同连通分量的边组成的集合称作
e的基本割集
我提出一种基于树上启发式合并求解每条边的基本割集的做法:
假设我对于节点i求出了子树内所有边的基本割集
同时记录了i的所有直接孩子所在子树内只含一个端点的非树边
接下来我们合并直接孩子的答案,同时把i跟子树内的点的连边也要考虑进去,合并的时候我们去除重复的非树边,这些边不属于i和i的
家长连边的基本割集
剩下的边就是i和i的家长的连边的基本割集了
每个节点的遍历次数是O(logn)的,一共有n个节点
每条边关联两个节点,边产生的复杂度是O(mlogn)的
因为m>=n-1,所以复杂度瓶颈在这里
总复杂度O(mlogn)
输出答案用时比较大
另外还有一种办法可以应付考试
对于每条非树边,我们考察它出现在哪些基本割集中
不难发现这些边就是生成树上该非树边两端点间简单路径包含的边
SegmentTree

浙公网安备 33010602011771号