我正在尝试解决一个问题,在一棵树上应用广度优先搜索算法和深度优先搜索算法,并找出这两种算法找到的遍历和最终路径。
我实际上感到困惑的是我如何计算这两种不同的路径?它们真的不同吗?
例如,考虑下面的树,
假设,我们的起始节点是A,目标节点是H
对于这两种算法,这就是我所感觉的穿越路径和最终路径
遍历路径:A B C D E F G H
最终路径:A C F H
如果这就是它的工作方式,那么我如何才能找到最终的路径?找到遍历的路径非常容易,但找到最终的路径却不那么容易。
同样地,
遍历路径:A B D E C F G
最终路径:A C F H
同样,我如何从DFS的遍历路径中提取最终路径。
这实际上变得有点复杂。如果我的目标节点可以从两侧到达,该怎么办?在这种情况下,我如何找到最终路径?
例如,考虑以下方案,
假设在这种情况下,我们的起始节点是A,目标节点也是H。
使用BFS和DFS都很容易计算遍历路径。
但是对于最终路径,“H”可以从两边到达,它可以从F到达,也可以从G到达
对于DFS,您可以将最终路径写成A C F G,因为从F节点开始,我们将首先到达H(因为G仍然未被探索,但是您仍然必须从遍历路径中提取此最终路径,我不知道该如何做)
但是对BFS来说,你不能这样做。那么,在这种情况下,我的最终道路会是什么呢?在这种情况下,应该有两条最终道路吗?
有人能帮我一下吗?
一种方法是维护目标到源节点的映射。每次前进时,记录前进的源节点。因此,在BFS的情况下,它看起来像:
parents = {
'A': NULL,
'B': 'A',
'C': 'A',
'D': 'B',
'E': 'B',
'F': 'C',
'G': 'C'
}
然后,从最后一个节点开始,向后重建路径:
node = target
path = []
while node:
path.append(node)
node = parents[node]
同样的方法适用于DFS和Dijkstra
我们得到了表格的邻接列表 意味着从U到V有一个成本C的优势。 给定的邻接列表适用于具有N个节点的单连通树,因此包含N-1条边。 给出了一组节点。 现在的问题是,在F中的节点中找到最长路径的最佳方法是什么?可以用O(N)来做吗? 来自F中每个节点的DFS是唯一的选项吗?
我有一个一般性的问题,关于如何在边没有权的无向图中找到最短路径和最长路径。 我们需要使用DFS算法来寻找图中的最长路径,而我们需要使用BFS算法来寻找图中的最短路径,这是一个正确的结论吗?
你有一辆2005年本田雅阁,油箱里还剩50英里(最大重量)。在50英里半径范围内,你可以访问哪些麦当劳的位置(图节点)?这是我的问题。 如果你有一个加权有向无环图,你如何找到在给定的权限制内可以访问的所有节点? 我知道Dijkstra的算法,但我似乎找不到任何关于它在最小路径问题之外的用途的文档。在我的例子中,我们没有特别想结束的节点,我们只想在不超过最大权重的情况下尽可能多地结束。似乎您应该能够
问题内容: 我需要使用二进制路径设置环境。在外壳中,我可以使用它来查找路径。python中是否有等效项?这是我的代码。 问题答案: 有。
你好,亲爱的朋友们。 我想在随机图中找到最短路径。我使用boost图形库。据我所知,我需要利用点之间的现有距离构建图形。之后,我需要使用一些算法。。。 正如我所见,Dijkstra的算法实际上是找到从1点到其他点的所有路径。(应该很慢?) A*需要一些额外的数据(不仅仅是距离) 如何找到2点之间的最短路径?我在bgl文件夹中看到了许多最短路径算法标头,但我没有找到如何使用它们的示例。 此外,我可以
主要内容:最短路径算法在给定的图存储结构中,从某一顶点到另一个顶点所经过的多条边称为 路径。 图 1 图存储结构 例如在图 1 所示的图结构中,从顶点 A 到 B 的路径有多条,包括 A-B、A-C-B 和 A-D-B。当我们给图中的每条边赋予相应的权值后,就可以从众多路径中找出总权值最小的一条,这条路径就称为 最短路径。 图 2 无向带权图 以图 2 为例,从顶点 A 到 B 的路径有 3 条,它们各自的总权值是: