我希望你能帮助我。
我正在尝试学习Prolog中的深度优先搜索算法,我找到了以下代码:
go(Start, Goal) :-
empty_stack(Empty_been_list),
stack(Start, Empty_been_list, Been_list),
path(Start, Goal, Been_list).
% path implements a depth first search in PROLOG
% Current state = goal, print out been list
path(Goal, Goal, Been_list) :-
reverse_print_stack(Been_list).
path(State, Goal, Been_list) :-
mov(State, Next),
% not(unsafe(Next)),
not(member_stack(Next, Been_list)),
stack(Next, Been_list, New_been_list),
path(Next, Goal, New_been_list), !.
reverse_print_stack(S) :-
empty_stack(S).
reverse_print_stack(S) :-
stack(E, Rest, S),
reverse_print_stack(Rest),
write(E), nl.
我有点理解正在发生的事情,但我找不到或想出一些可以与之配合使用的事实。
请帮忙。即使只是一组非常简单的事实,我也需要一个起点。
提前感谢您的帮助。
closure0(mov,Start,Finis)
即可。 - falsego
。 - vmgmov/2
的事实。否则,你的代码仍然是假设性的。 - false