【问题标题】:Breadth First Search Pseudo Code Understanding广度优先搜索伪代码理解
【发布时间】:2017-07-25 14:58:52
【问题描述】:

关于上面的伪代码,我有两个问题。

  1. 函数 SOLUTION(node) 有什么作用?如何实现它?
  2. 在最后一行的第 3 行,我们检查孩子是否不在边境。如何在 FIFO 队列中检查它?

【问题讨论】:

  • 特别是:(1)网上对BFS的解释很多;这本质上是 Dijkstra 的算法。要求 SO 为您编写代码超出了该网站的目的。 (3) 要求 SO 校对您的实施是 远远 超出所述目的。运行代码。测试一下。调试它。

标签: algorithm data-structures artificial-intelligence graph-theory breadth-first-search


【解决方案1】:
  1. SOLUTION(node) 返回问题的完整解决方案,而不仅仅是一个节点。在寻路问题中,它可能会返回从开始到结束节点的完整路径

例子:

def SOLUTION(node): 
    result = []
    while(node.predecessor is not None):
        result.append(node.predecessor)
        node = node.predecessor
  1. 线性搜索边界。如果这不可能,只要您检查节点出队后是否处于探索状态,它仍然可以工作,但这需要额外的内存。

【讨论】:

  • 然后返回反转结果?
  • 如何验证您的第二个声明?为什么不需要检查?
  • 是的,你是对的,结果应该是相反的。检查是不必要的,因为不是在每个节点添加到边界时检查它,我们可以检查它何时从边界删除,并且所有节点仍然被检查。这和我上面写的不太一样,所以我编辑了
猜你喜欢
  • 2011-01-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多