枚举未定向/未加权图的节点集

时间:2013-01-09 14:42:28

标签: algorithm graph path enumeration

在无向和未加权的图上,如何枚举长度为1,2,...,n(n是用户定义的值)的所有连接节点组?

这个问题类似于one;有这种差异: 对于n = 3;我还需要找到路径:A-B-C和C-E-F。

如果n为4,则路径还应包括:

A-B-C-d

A-B-C-E

A-B-C-F

A-C-E-F

我想这是一个类似的问题; “所有对 - 所有路径”,其中每个路径最多可包含n个节点。 你还能告诉计算复杂性的方法吗?

我的想法是我需要同时使用DFS和BFS,但我不确定这是否有效?

1 个答案:

答案 0 :(得分:0)

你基本上可以使用DFS和一个额外的变量,该变量在length的递归下传递,在每次迭代时都会减少。停止条件是此额外变量达到0时。

有些事情:

DFS(source,length,path):
   print path //this is always done, because we want all paths up to n
   if (length == 0): //stop clause
      return
   for each (source,u) is an edge:
       path.append(u)
       DFS(u,length-1,path)
       path.removeLast() //clean up environment

另一个(效率较低,但可能更优雅)正在做一个Iterative Deepening DFS,长度= 1,2,...,n(并且只将print放在stop子句中)