在Prolog中使用广度优先而不是默认的深度优先搜索方案的一般想法是什么?
不采取无限分支?
有什么通用的方法可以在Prolog中使用广度优先?我一直在四处搜寻,但对于新手来说,我找不到太多有用的信息。
最佳答案
广度优先的优点是您将找到所有解决方案。使用深度优先,您可以陷入无限分支。
缺点是广度优先使用大量内存,因此通常不用于执行。
如果要使用它,则需要使用某种队列显式地实现它。
编辑:如果要在不占用大量内存的情况下获得广度优先搜索的优势,则可以使用迭代加深。这是具有深度限制的深度优先搜索,您会逐渐增加它。这将导致一些重复计算,但是如果您的搜索空间没有没有分支的长线性延伸,则该重复很小。
关于prolog - 序言中的广度优先,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/769658/