测试总可达性的最佳方法

时间:2009-12-12 17:08:53

标签: language-agnostic graph-theory projection reachability

我有一组节点,每个节点都连接到至少一个其他节点。我想知道连接是否可以使每个节点彼此可达。例如:

1--2
   |
3--4

对战:

1--2

3--4

我确信这种可达性测试可以用exact cover problem来预测,但是我似乎无法让我的脑子如何去做。有没有人有关于如何做到这一点的任何指针,文档,网站等?例子非常有价值。

更新:我的无知背叛了我,因为对于这种测试来说似乎有更有效的算法。如果你有,请指出我。

2 个答案:

答案 0 :(得分:3)

  • 从任何节点开始并执行深度/广度优先遍历
  • 计算被访问节点的数量(当然,不要两次访问任何节点!)
  • 将计算的数字与总数进行比较

答案 1 :(得分:0)

还有一种快速(但相当复杂)的算法,用于动态维护连接(即在边缘插入/删除下),如本文所示:Poly-logarithmic deterministic fully-dynamic algorithms for connectivity, minimum spanning tree, 2-edge, and biconnectivity

基本思想是维护生成树。简单的情况是插入边缘,并删除非生成树边缘。问题是当删除生成树边缘时,因为现在没有保证连接 - 我们必须有效地搜索备用路由以连接损坏的部分,否则图形将被断开。