我想在什么情况下运行BFS或DFS而不是IDDFS?

问题描述 投票:0回答:1

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

所以,我什么时候要在树搜索中运行BFS或DFS而不是IDDFS?

谢谢

graph graph-algorithm depth-first-search breadth-first-search iterative-deepening
1个回答
0
投票

这是我们对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。这里的权衡是IDDFS的实现要复杂得多,因此仅当您担心有限的时间和空间时才应真正使用它。否则,根据您的偏好,BFS或DFS就足够了。

希望此信息对您有所帮助!

© www.soinside.com 2019 - 2024. All rights reserved.