这个类似BFS/DFS/ iddfs的算法有名字吗?



本质上,它是一个深度优先的搜索,在某个深度或代价处停止。例如,它可以在距离源的10个边内DFS所有节点,然后是20个边,然后是30个边。不同之处在于,我不是在每次迭代之后从头开始创建DFS,而是在每次搜索迭代达到极限时存储搜索区域的"周长"(节点列表)。

在下一次迭代中,i循环遍历周长上的所有节点,从每个节点执行DFS,在停止之前再次到固定的深度/成本,再次记录搜索区域的周长,以便下一次迭代开始。

我这样做的原因是因为我的图(这是一个树)被分割成一组逻辑"块",每一个都必须在它的子块开始被探索之前被完全探索。有大量的节点,但只有少量的块;我实际上是在做一个逐块的BFS,每个单独的块(包含大量单独的节点)都由它自己的mini-DFS进行充分的探索。

现在,我只是在现场完全编造了这个来解决我的问题,它确实是这样的,但是在文献中有类似的东西吗?我还没有找到任何东西,但我相信有人以前做过,并正确地分析了它的性能,渐近行为,缺点,bug等。在这种情况下,我想知道它

我现在还没有为这种混合类型命名。我也用过类似的东西,但我不认为它经常被使用,也没有名字。通常,其他算法更有意义:

如果你想在块中慢慢前进,为什么不使用BFS?

通常首选DFS,因为在那里您可以获得完整的跟踪。此外,做迭代深化DFS比你的算法更简单,只需要两倍的时间,并且需要更少的内存。

最新更新