图中2个节点之间的所有路径

seb*_*ibu 5 c# algorithm graph graph-algorithm

我必须进行一个不知情的搜索(广度优先搜索)程序,它接受两个节点并返回它们之间的所有路径.

public void BFS(Nod start, Nod end) {
            Queue<Nod> queue = new Queue<Nod>();
            queue.Enqueue(start);
            while (queue.Count != 0)
            {
                Nod u = queue.Dequeue();
                if (u == end)  break;
                else
                {
                    u.data = "Visited";
                    foreach (Edge edge in u.getChildren())
                    {
                        if (edge.getEnd().data == "")
                        {
                            edge.getEnd().data = "Visited";
                            if (edge.getEnd() != end)
                            {
                                edge.getEnd().setParent(u);
                            }
                            else
                            {
                                edge.getEnd().setParent(u);
                                cost = 0; 
                                PrintPath(edge.getEnd(), true);
                                edge.getEnd().data = "";
                                //return;
                            }
                        }
                        queue.Enqueue(edge.getEnd());
                    }
                }
            }
        }
Run Code Online (Sandbox Code Playgroud)

我的问题是,我只获得两条路径,而不是所有路径,我不知道在我的代码中编辑什么来获取它们.我的问题输入基于这张地图:地图

Gab*_*lle 3

在 BFS 算法中,找到解决方案后一定不能停止。一个想法是将除第一个城市之外的所有您访问过的城市的数据设置为空,并让函数运行更长的时间。我没有时间给你写一个片段,但如果你不明白,我至少会写一个伪代码。如果您不明白我的想法,请发表评论并提出您的问题,我会尽力更好地解释。