C++ 如何找到BFS找到的实际路径?
我试图解决的问题涉及捷运系统的树 每个节点最多可以连接4个点,简化了很多事情。这是我的想法C++ 如何找到BFS找到的实际路径?,c++,algorithm,path,breadth-first-search,C++,Algorithm,Path,Breadth First Search,我试图解决的问题涉及捷运系统的树 每个节点最多可以连接4个点,简化了很多事情。这是我的想法 struct stop { int path, id; stop* a; stop* b; stop* c; stop* d; }; 我可以编写代码来保存BFS搜索所有点所需的所有信息,但我主要关心的是,即使BFS正确地找到了点,我如何知道它的路径 BFS将搜索每个级别,当其中一个级别到达我的目的地时,它将跳出运行循环,然后,我将得到一个已访问队列和一个未访问队列
struct stop {
int path, id;
stop* a;
stop* b;
stop* c;
stop* d;
};
我可以编写代码来保存BFS搜索所有点所需的所有信息,但我主要关心的是,即使BFS正确地找到了点,我如何知道它的路径
BFS将搜索每个级别,当其中一个级别到达我的目的地时,它将跳出运行循环,然后,我将得到一个已访问队列和一个未访问队列,当已访问队列充满BFS搜索的每个节点时,我该如何告诉用户他需要访问哪些站点,您需要存储一个
映射:V->V
(从顶点到顶点),它将从每个节点V
映射,“发现”的顶点u
您将在BFS迭代期间填充此映射
稍后-您可以通过简单地从目标节点(在地图中)一直到返回到源节点来重建路径,这将是您的路径(当然是反向的)
请注意,如果您枚举顶点,此地图可以实现为一个数组。忽略的中文单词在哪里?@mahmood在我发布的图像上。嘿,如果我必须跟踪一些长度的多条路径怎么办?@Bewishaman这是一个更难的问题。对于某些
k
,查找是否存在长度为k
的路径是NP难问题(没有已知的多项式解)