我了解 DFS 和 BFS 之间的差异,但我有兴趣知道选择 DFS 与 BFS 时要考虑哪些因素。
比如避免对非常深的树进行 DFS 等。
这在很大程度上取决于搜索树的结构以及解决方案(也称为搜索项)的数量和位置。
-
如果您知道解离树根不远,则
广度优先搜索(BFS)可能会更好。
-
如果树很深并且解决方案很少,则深度优先搜索
(DFS)可能需要很长的时间,但 BFS 可能会更快。
-
如果树很宽,BFS 可能需要太多内存,所以它
可能完全不切实际。
-
如果解很频繁但位于树的深处,则 BFS 可以是
不切实际的。
-
如果搜索树非常深,您将需要限制搜索
无论如何,深度优先搜索(DFS)的深度(例如
迭代深化)。
但这些只是经验法则;你可能需要尝试一下。
我认为在实践中你通常不会以纯粹的形式使用这些算法。可能有一些启发式方法有助于首先探索搜索空间中有前途的部分,或者您可能希望修改搜索算法以使其能够有效地并行化。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)