DFS扫描完成的图形

时间:2018-07-10 20:32:19

标签: algorithm graph-algorithm dfs

我有一个有趣的问题想要得到您的帮助:

假设我有一个具有n(n-1)/ 2条边的图(数据结构),这意味着完成的图。
从图形中的某个随机元素进行一次DFS扫描可以得到多少种不同的DFS树?

2 个答案:

答案 0 :(得分:2)

您的问题很有趣。我相信您是在谈论具有 n 个顶点和两个顶点之间的 n(n-1)/ 2 个边的完整图形。
如果我们从任何一个顶点开始深度优先搜索(DFS),它将最终精确地访问 n 个顶点。在DFS中,我们会跟踪已访问的顶点,以便一旦访问它们就不会访问它们,因此只要DFS进行,输出选项就会减少。我们可以总结为:

  • 共有n个选项可以选择第一个顶点。
  • 总共有n-1个选项可以选择第二个顶点,因为已经访问了1个顶点。
  • 总共有n-2个选项可以选择第三个顶点,因为已经访问了2个顶点。
  • 总共有n-3个选项可以选择第三个顶点,因为已经访问了3个顶点。

  • 依此类推。 。

  • 只有一个选项可以选择第n个顶点。

因此,在这种图中我们可以从DFS中获得不同的DFS树:

Total ways = n*(n-1)*(n-2)*(n-3)*....*1
           = n! ( n factorial )

答案 1 :(得分:0)

实际上,它不是树,而是给定完整图的节点列表。因此,问题是:图的n个节点有多少个排列?显然,答案是n!。