prolog中的启发式算法

prolog中的启发式算法,prolog,Prolog,我对Prolog不是很有经验,我正在尝试解决一个关于使用启发式算法(f.e.a*或BFS或爬山)来找到给定问题的解决方案的练习 由于我不熟悉这种编程,而且谷歌搜索也没有真正帮助我,我想知道是否有人能给我一个类似的已经解决的例子的链接,看看如何做到这一点。 我不想复制任何东西,只是我确实学习了很多关于prolog命令等的知识,我确实知道这些算法在理论上是如何工作的,以及它们是如何解决问题的(例如,在我的练习中,我认为BFS或a*是一个很好的选择)但我不明白我应该如何用prolog编写一个程序,它实

我对Prolog不是很有经验,我正在尝试解决一个关于使用启发式算法(f.e.a*或BFS或爬山)来找到给定问题的解决方案的练习

由于我不熟悉这种编程,而且谷歌搜索也没有真正帮助我,我想知道是否有人能给我一个类似的已经解决的例子的链接,看看如何做到这一点。
我不想复制任何东西,只是我确实学习了很多关于prolog命令等的知识,我确实知道这些算法在理论上是如何工作的,以及它们是如何解决问题的(例如,在我的练习中,我认为BFS或a*是一个很好的选择)但我不明白我应该如何用prolog编写一个程序,它实际使用一个算法并给出一个解决方案

只是澄清一下,我真的相信真正的prolog代码示例将非常有用,而不是从理论上解释算法是如何工作的。我不知道应该如何解决这个问题,让它发生,尤其是在prolog中,这是我无法理解的


Thnx提前..

奇怪的是,我最近在Prolog中实现了一个BFS。我还没有将代码发布到任何地方,我也不太愿意这样做,因为这是一个任务的重新实现,可能会被重用

我可以给你实际的BFS定义:

% performs a BFS, with the given goal and queue
bfs( Goal, [[Goal|[Path]]|_], Path ).
bfs( Goal, [State|Rest], Result ) :-
    successors_list( State, Successors ),
    remove_seen( Successors, NewStates ),
    add_to_seen( NewStates ),
    append( Rest, NewStates, Queue ),
    bfs( Goal, Queue, Result ).
对于这个问题,“目标”是一个特定的数字,“路径”是达到该目标所需的一系列行动。第二个参数是队列,其中每个状态表示为两个元素的列表(第一个是当前编号,第二个是生成该编号所需的路径)。它返回获取“path”中给定数字所需的路径。SEED状态集使用断言记录在数据库本身中

在这个定义之外,一切都是特定于问题的

编辑:
我应该说大多数事情都是针对具体问题的。我重新访问了我的代码,做了一些小的编辑,并修改了它解决的问题。它与作业有很大的不同,我觉得可以贴出来,所以这里是:

thnx的答案。非常有用!