在图中查找带有BFS的路径

时间:2015-04-01 09:56:25

标签: java graph path breadth-first-search

我想在带有bfs的图中找到两个节点之间的路径。我写了一个以正确的顺序访问所有节点的函数(不确定它是否有效,但对我来说似乎是正确的)但是我需要存储路径(带有创建路径的所有边的列表)并且我不# 39;不知道怎么做:\

有人能帮助我吗?在此先感谢:)

2 个答案:

答案 0 :(得分:0)

您创建父类的数组p。因此,如果p[u] = v在从源到v的路径中存在从uu的边缘。源顶点的父级是null

因此,当我们在当前顶点v中时,在将其相邻顶点u插入队列之前,我们生成p[w] = v。当您找到目标顶点时,您将在数组p中向后移动。从目标顶点w开始,p[w]w的父级,p[p[w]]w的父级的父级,依此类推。

答案 1 :(得分:0)

这可能是其中一种方法。

在这种方法中,您将保留一个列表队列,您可以在其中获取列表并从该列表中获取第一个节点。

找到该节点的adj(),并且对于未访问的每个节点,在队列中添加新的path+[node],如果到达目的地,则返回path+[node]

step 1 : create a queue of to hold the paths.
step 2 : add the source as  [ source ] in the queue
step 3 : while the queue is not empty get one path from it
         (as this works for both bfs and dfs thats why "get" not "dequeue" or "pop")

step 4: get the last node of that path (list)
step 5: get the adj of that node and for each not explored create a new path i.e oldpath +[adj node]

step 6:if the adj node is what u want then return the path else add the path to the queue

我希望这很有帮助。