gpt4 book ai didi

prolog - "Returning"Prolog 中谓词的列表

转载 作者:行者123 更新时间:2023-12-02 11:44:52 25 4
gpt4 key购买 nike

resolve(K, K, _) :- writeln('finished'). %goal state

resolve(CurrentState, GoalState, Path) :-
suc(_, CurrentState, NextState, GoalState),
append(Path, [CurrentState], NextPath),
resolve(NextState, GoalState, NewPath).

我目前有这个算法,它可以正常工作。我是这样运行的:

resolve(0, 10, Path).

我确信算法正在按预期运行,它会达到目标状态,尽管 Path 的值为

Path = []

这不应该发生。路径应包含我的算法已通过的“状态”序列。可能是什么问题?

最佳答案

使用 DCG 表示法来描述列表是最简单的:

path(State0, Target) -->
( { State0 == Target } -> []
; { suc(_, State0, State1, Target) },
[State1],
path(State1, Target)
).

您也可以手动执行:

path(State0, Target, Path) :-
( State0 == Target -> Path = []
; suc(_, State0, State1, Target),
Path = [State1|Rest],
path(State1, Target, Rest)
).

这里不需要累加器来获得线性时间。

关于prolog - "Returning"Prolog 中谓词的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3871419/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com