Graph 在哪些情况下,我希望运行BFS或DFS而不是IDDFS?

Graph 在哪些情况下,我希望运行BFS或DFS而不是IDDFS?,graph,graph-algorithm,depth-first-search,breadth-first-search,iterative-deepening,Graph,Graph Algorithm,Depth First Search,Breadth First Search,Iterative Deepening,问题是关于树搜索。 我相信我理解DFS、BFS和IDDF之间的区别。 在最优性、完备性、时间复杂度和空间复杂度方面,IDDFS对于树搜索具有更好的性能 那么,我什么时候希望在树搜索中运行BFS或DFS而不是IDDFS 谢谢 这是我们对DFS和BFS的了解,以及为什么我们会考虑使用IDDFS: DFS DFS遍历节点,从与根相邻的节点开始,然后是与该节点相邻的下一个节点,依此类推。当目标节点靠近根节点,但不在算法遍历的第一个相邻节点的子树中时,这种方法可能会出现问题。这将导致算法遍历不包含目标节点

问题是关于树搜索。 我相信我理解DFS、BFS和IDDF之间的区别。 在最优性、完备性、时间复杂度和空间复杂度方面,IDDFS对于树搜索具有更好的性能

那么,我什么时候希望在树搜索中运行BFS或DFS而不是IDDFS


谢谢

这是我们对DFS和BFS的了解,以及为什么我们会考虑使用IDDFS:

DFS

DFS遍历节点,从与根相邻的节点开始,然后是与该节点相邻的下一个节点,依此类推。当目标节点靠近根节点,但不在算法遍历的第一个相邻节点的子树中时,这种方法可能会出现问题。这将导致算法遍历不包含目标节点的整个子树,效率不高

BFS

BFS逐层遍历一棵树。目标节点在深度上离根越近,找到它的速度就越快。如果目标节点不在最初遍历的子树中,这就消除了DFS的问题。这里的折衷是BFS需要更多的空间,O(n),其中n是DFS需要O(d)空间的节点数,其中d是树的深度

IDDFS

IDDFS将DFS的空间效率与BFS更快的搜索相结合(请注意BFS并不总是更快,但在许多情况下,它会首先找到目标节点)。IDDFS使用初始值调用不同深度的DFS。它本质上是以BFS方式调用DFS。这里的折衷是,IDDF的实现要复杂得多,因此只有在空间和时间都有限的情况下才应该真正使用它。否则,BFS或DFS将根据您的喜好而定

我希望这些信息是有用的