【发布时间】:2020-06-15 16:07:23
【问题描述】:
如何使用呼吸优先搜索从起始顶点查找所有可能的生成树。 不止一个。
【问题讨论】:
-
显然你不能使用广度优先搜索来做到这一点。想象一个完全连接的图,一个可能的跨越是一个长字符串,例如通过深度深度优先搜索找到,但 BFS 并非旨在找到它。
标签: c++ graph breadth-first-search spanning-tree
如何使用呼吸优先搜索从起始顶点查找所有可能的生成树。 不止一个。
【问题讨论】:
标签: c++ graph breadth-first-search spanning-tree
如果您正在寻找所有可能的生成树,那么您实际上不需要执行 BFS。您可以将每条边的权重设置为 1,然后运行一个算法来查找图中的所有最小生成树。
之所以有效,是因为所有生成树都有V-1 边(其中V 表示顶点数)。由于我们将所有边的权重设置为 1,因此每棵生成树都是最小生成树!
编辑:由于您只寻找从某个根开始的生成树,因此您可以使用深度优先搜索来解决此问题。
以起始节点为根目标执行深度优先搜索过程。您可以扩充该过程以仅连接不同组件中的节点。
【讨论】: