【问题标题】:How can I find the actual path found by BFS?如何找到 BFS 找到的实际路径?
【发布时间】:2012-03-24 07:42:13
【问题描述】:

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

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

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

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

BFS 会搜索每一层,当其中一个到达我的目的地时,它会跳出运行循环,然后,我会得到一个已访问队列和一个未访问队列,我应该如何告诉用户什么当被访问的队列被 BFS 搜索到的每个节点填满时,他需要访问什么?

【问题讨论】:

  • 要忽略的中文单词在哪里???
  • @mahmood 在我发布的图片上。

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


【解决方案1】:

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

您将在 BFS 迭代期间填充此地图。

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

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

【讨论】:

  • 嘿,如果我必须跟踪多条一定长度的路径怎么办?
  • @bewithaman 这是一个非常困难的问题。查找某些k 是否存在长度为k 的路径是NP-Hard 问题(没有已知的多项式解决方案)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-06-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多