prolog - 序言中的广度优先

标签 prolog breadth-first-search logic-programming

在Prolog中使用广度优先而不是默认的深度优先搜索方案的一般想法是什么?

不采取无限分支?

有什么通用的方法可以在Prolog中使用广度优先?我一直在四处搜寻,但对于新手来说,我找不到太多有用的信息。

最佳答案

广度优先的优点是您将找到所有解决方案。使用深度优先,您可以陷入无限分支。

缺点是广度优先使用大量内存,因此通常不用于执行。

如果要使用它,则需要使用某种队列显式地实现它。

编辑:如果要在不占用大量内存的情况下获得广度优先搜索的优势,则可以使用迭代加深。这是具有深度限制的深度优先搜索,您会逐渐增加它。这将导致一些重复计算,但是如果您的搜索空间没有没有分支的长线性延伸,则该重复很小。

关于prolog - 序言中的广度优先,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/769658/

相关文章:

Prolog 内部变量名

Prolog 整数比较因 error_type 错误而失败

python - 如何遍历可变长度路径到达同一目的地?

c - C中的图遍历

reflection - 如何列出具有特定原子的所有谓词?

numbers - 使用 DCG 将 Prolog_Numbers 英语翻译成法语

c - 查找从给定的起始节点到结束节点的所有可能路径

logic - 关于逻辑和Curry-Howard对应的问题

scala - 你能用 Scala 进行逻辑编程吗?

java - Java的嵌入式Prolog解释器/编译器