我实际上没有问题编码,但搜索算法,我希望这没关系。 在作业中,我需要解决以下问题:
“描述dfid比dfs差得多的状态空间,例如O(n²)对O(n)。” dfid是深度优先迭代 - 深化搜索和dfs正常深度优先搜索。 我不知道如何解决这个问题,我知道最坏的情况运行时就像树中的两次搜索都是O(b ^ d),但我发现很难找到一个很好的例子。
我想到了一个只有2的分支的树,因为分支越低,dfid运行时越差。
有人可以帮我解决这个问题吗?
答案 0 :(得分:8)
如果您的状态空间类似于链接列表(即每个节点只有1个子节点)并且目标状态是叶子,那么您最终将得到您所描述的情况。
使用DFS,您将沿着每个孩子前进,直到您到达叶子。如果有n
个节点,则运行时间为O(n)。
使用IDS,在第一次迭代中,您将只访问根的子级。在第二次迭代中,您将访问root的子项及其自己的子项(depth = 2,访问2个节点)。在第三次迭代中,您将深入3,访问3个节点。 因此,总访问次数为1 + 2 + .... + n = O(n ^ 2)。