寻求支持边增删及变种查询的高效dynamic connectivity数据结构实现
动态连通性高效实现求助
图的动态连通性问题,指维护一种支持边添加、删除操作,且能处理连通性查询的图数据结构,典型查询为“节点u和v是否连通?”,其变种还支持2-edge-连通性或双连通性查询。
现询问:是否存在低分摊操作成本的高效动态连通性数据结构实现?需排除每操作复杂度为O(n)的简易实现。
已知仅允许边插入的场景可通过disjoint-set(又称并查集)实现,该结构在多语言中有现成实现;但支持边删除的场景实现匮乏,支持2-edge-连通性或双连通性查询的情况更差。Holm等人(2001)的算法是当前该领域最优方案,配有实验研究但代码未公开,且仅覆盖常规连通性问题。这类算法实现难度高,需专业知识落地。
已找到的实现情况如下表:
| 图操作类型 | 连通性 | 2-edge-连通性 | 双连通性 |
|---|---|---|---|
| 增量型(仅支持添加边) | disjoint-set | ||
| 减量型(仅支持删除边) | Rafael Glikis实现 | ||
| 全动态型(支持添加及删除边) |
我已在GitHub、维基相关资源及文献中搜索,未找到符合需求的实现,特寻求相关高效实现。
内容的提问来源于stack exchange,提问作者badboul
相关产品推荐
相关产品推荐

