是否存在一种算法,可以在插入/删除的情况下有效维护DAG的连接信息?
给定有向无环图,是否有可能有效地支持以下操作?G(V,E)G(V,E)G(V,E) :确定 G中是否存在从节点 a到节点 b的路径isConnected(G,a,b)isConnected(G,a,b)isConnected(G,a,b)GGGaaabbb :在图形 G中从 a到 b添加一条边link(G,a,b)link(G,a,b)link(G,a,b)aaabbbGGG :删除从边缘一至 b在 ģunlink(G,a,b)unlink(G,a,b)unlink(G,a,b)aaabbbGGG :向G添加一个顶点add(G,a)add(G,a)add(G,a) :从G删除一个顶点remove(G,a)remove(G,a)remove(G,a) 一些注意事项: 如果我们不允许,现在看来,这将是很容易保持连通性信息,使用不相交集类型的数据结构。unlinkunlinkunlink 显然,可以使用深度或广度优先搜索,使用曲线图的幼稚基于指针的表示来实现。但这效率低下。isConnectedisConnectedisConnected 我希望所有这三个操作的摊销常数或对数时间。这可能吗?