我需要编写一个无信息搜索(广度优先搜索)程序,该程序接受两个节点并返回它们之间的所有路径。
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());
}
}
}
}
我的问题是我只得到了两条路径,而不是全部路径,我不知道该如何编辑我的代码以获取所有路径。我的问题的输入基于这张地图:
break;
?可能还有其他解决方案等待发现...此外,它一定要是BFS吗?我认为像迭代加深深度优先搜索这样的算法会更容易实现,以找到所有最短路径...但这可能只是我的想法:\ - amit