如何找到BFS找到的实际路径?

时间:2012-03-06 19:15:08

标签: c++ algorithm path breadth-first-search

我试图解决的问题涉及MRT系统树。

每个节点最多可以连接4个点,这简化了很多事情。这是我的想法。

struct stop {
    int path, id;
    stop* a;
    stop* b;
    stop* c;
    stop* d;
};

我可以编写代码来保存BFS搜索所有点所需的所有信息,但我主要担心的是,即使BFS正确找到了这一点,我怎么知道它的路径呢?

BFS将搜索每个级别,当其中一个到达目的地时,它将跳出运行循环,然后,我将获得一个访问队列和一个未访问的队列,我该怎么告诉用户什么当访问的队列被BFS搜索到的每个节点填满时,他需要访问哪些停止?

1 个答案:

答案 0 :(得分:22)

为此,您需要存储map:V->V(从顶点到顶点),它将从每个节点v映射,即“发现”{{1}的顶点u }}

您将在BFS的迭代过程中填充此地图。

稍后 - 你可以通过简单地从目标节点(在地图中)向上重建路径,直到你回到源头,这将是你的路径(当然是逆转的。)

请注意,如果枚举顶点,则可以将此地图实现为数组。