对已完成的图形进行DFS扫描



我有一些有趣的问题想得到你的帮助:

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

您的问题很有趣。我相信你说的是具有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 )

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

最新更新