我们以此图为例:
现在让我们说我从顶点3开始,想要找到顶点7。 深度优先搜索(取决于实现)将首先查看孩子。现在,在我们的例子中,为了参数,我从顶点2开始,然后转到顶点4和顶点2,返回到顶点并转到顶点7,问题解决了。
我想要的是:我想得到所有可能从x到y的路径(例如3到7:3,1,4,7 - 3,5,7 - 3,4 ,7 - 3,5,6,9,7)。我没有从Depth第一次搜索中获得。
你建议的算法是什么?
谢谢!
答案 0 :(得分:4)
您应该使用修改后的BFS算法(http://en.wikipedia.org/wiki/Breadth-first_search)。在每个顶点上,您应该保存邻居列表,这些邻居通向此顶点(前导),而不是只有一个邻居通向此顶点。
当你想要从中找到所有路径时,你只需要在你的终端节点上开始并在每个顶点分支你的路径,这个顶点有超过1个前身,并且按照每个顶点中前辈创建的方式进行操作,直到你到达使用您拥有的所有分支启动节点。
编辑: 您可以使用DSF算法代替BFS,并以相同的方式对其进行修改。