【问题标题】:How to apply Iterative Deepening Depth First Search(IDDFS) on Graphs如何在图上应用迭代深化深度优先搜索(IDDFS)
【发布时间】:2016-11-14 03:56:12
【问题描述】:

我尝试在此图上应用 IDDFS,首先将其制成树形,结果是这样的:

 At level 1: d,e,p
 At level 2: d,b,e,c,e,h,r,p,q
 At level 3: d,b,a,e,h,c,a,e,h,q,p,r,f,p,q
 At level 4: d,b,a,e,h,p,q,c,a,e,h,q,p,q,r,f,c,GOAL

我对路径中的那些重复节点感到困惑,我们可以消除它们还是它们会出现在最终路径中?

这是遍历图形以达到目标的正确方法吗?以及我们如何知道在图中接下来要访问哪个节点(例如,在树中,我们从左到右开始)。

如果我们在同一张图上应用 DFS 和 BFS,路径会是什么?

DFS 结果和 IDDFS 会有什么不同吗?好像很像

【问题讨论】:

  • 这是一道作业题吗?
  • 不是作业,我只是在练习
  • 我在互联网上找不到任何有用的资料,关于如何在图表上应用 IDDFS,这些都是我的一些困惑
  • 1 级似乎是正确的。 2 级实际上是db, dc, de, eh, er, pq。所以搜索似乎是正确的,但输出格式需要一些工作。

标签: artificial-intelligence depth-first-search breadth-first-search iterative-deepening


【解决方案1】:
  1. 是的,当您实施 DFS 时,您可以并且应该通过跟踪您已经访问过的节点来消除重复的节点。如果你不这样做,你的代码在找到一个循环时不会终止。不要忘记清除每个新级别的访问节点集。因此,请从您的列表中忽略访问过的节点,除非包含正在考虑但未重新访问过的节点很重要。

  2. 如果你写出 BFS 和 DFS 的扩展,你会发现 IDDFS 开始看起来像 BFS,最终看起来越来越像 DFS,你越提高级别。当 level = length-of-longest-path 时,瞧,你得到了 DFS,这并不奇怪,因为 IDDFS DFS,只有在给定数量处被切断的路径;在那种特殊情况下,这个数字没有任何影响,因为没有足够长的路径可以被切断。

  3. 图中的顺序没有很好地定义。您自己选择一个或另一个订单。如果您随机选择下一个节点,您将获得非确定性算法。如果您按字母顺序选择它们,不知道,那么您会得到一些确定性。有时区别并不重要,但确定性对于调试代码等很有用。现在,当你做这个练习时,你这样做是为了查看模式,所以最好忽略随机性。

你的问题看起来确实像家庭作业。 ;)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-15
    • 1970-01-01
    • 1970-01-01
    • 2022-08-03
    • 2019-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多