动态图连通性总结

本文探讨了动态图连通性的算法实现,包括暴力解法和优化策略。通过维护权值为边考虑次数的图,并利用平衡树和最大生成树进行动态更新,实现了高效的动态图连通性算法。在删除边时,通过权值判断和联通块分析,确保了算法的正确性和效率。总的时间复杂度为O(Nlog^2),其中N为图中节点数量。
摘要由CSDN通过智能技术生成

动态图连通性

实时在线的动态图连通性算法。

考虑暴力

首先我们考虑怎样获得一个比较优秀的暴力。显然,为了维护图的连通性,我们可以只维护一颗树,在加边的时候若不能连接则丢入非树边中,否则链接。删边时若不是树边,删去后即可;否则,遍历所有小的联通块的边,若有替代它的边则更新之。这样仍然是n^2的,但是为我们理解下面的算法做了铺垫。

动态图连通性

首先定义一个边的权值为“考虑次数”,即这条边被我们考虑了几次。这个权值是我们给它定义的,类似于treap中的随机值,它的这个值与出现位置有关。

算法

我们对于每个权值维护这个权值的所有边构成的图,令G[i]表示权值为i的边的图,利用平衡树维护每个点的所有出边以维护整个图。同时维护权值大于等于i的边构成的最大生成树,令它为t[i],我们。加入一条边,我们把它的考虑次数设置为0,然后判断它是否能改变整个图的连通性,若联通则加入lct维护的最大生成树中,否则将它放在考虑次数为0的图里面。删除边时我们先找到它的权值。若它不在这个权值中的最大生成树中,在图中删除即可。否则,即它是生成树的树边,则必然在所有t[i] (i<边的权值)的树中也存在。将这些树边全部删除。显然,删除后树被删为两个联通块。小的那个联通块的大小不超过1/2树的大小。我们枚举所有小的联通块的点的相关边。若这条边链接的是两个同在这个小联通块的点,则将它的考虑次数加一,判断是否能放入下一层生成树中。否则,它就能替代之前被删的边的作用。在所有权值小于他的生成树中加入此边。从权值大到权值小依次考虑所有边。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值