gpt4 book ai didi

prolog - Minimax 在 "Prolog Programming for Artificial Intelligence"中实现 - min_to_move/1 和 max_to_move/1 是什么?

转载 作者:行者123 更新时间:2023-12-04 19:17:14 24 4
gpt4 key购买 nike

首先让我说这个问题可能由没有 Prolog 经验的 AI 向导来回答。

Prolog Programming for Artificial Intelligence这本书有这个非常简洁和聪明的极小极大实现:

minimax( Pos, BestSucc, Val)  :-
moves( Pos, PosList), !, % Legal moves in Pos produce PosList
best( PosList, BestSucc, Val)
;
staticval( Pos, Val). % Pos has no successors: evaluate statically

best( [ Pos], Pos, Val) :-
minimax( Pos, _, Val), !.

best( [Pos1 | PosList], BestPos, BestVal) :-
minimax( Pos1, _, Val1),
best( PosList, Pos2, Val2),
betterof( Pos1, Val1, Pos2, Val2, BestPos, BestVal).

betterof( Pos0, Val0, Pos1, Val1, Pos0, Val0) :- % Pos0 better than Pos1
min_to_move( Pos0), % MIN to move in Pos0
Val0 > Val1, ! % MAX prefers the greater value
;
max_to_move( Pos0), % MAX to move in Pos0
Val0 < Val1, !. % MIN prefers the lesser value

betterof( Pos0, Val0, Pos1, Val1, Pos1, Val1). % Otherwise Pos1 better than Pos0

然而,作者并没有详细描述它,我想知道是什么 min_to_move/1max_to_move/1是。

任何人都可以向我解释这些吗?

提前致谢!

最佳答案

显然,当且仅当“最小化”玩家要在位置 Pos 移动时 min_to_move(Pos) 为真。相反,对于 max_to_move/1。就我个人而言,我发现这里的编码风格不是很好。例如,在某些情况下,if-then-else ((->)/2 和 (;)/2) 似乎更适合表达意图。谓词名称也可以更具描述性(例如考虑“positions_best/2”来描述位置列表和最佳选择之间的关系,而不仅仅是“best/3”)并且更具可读性(例如“Betterof”除了比例如“better_of”更难阅读?)。

关于prolog - Minimax 在 "Prolog Programming for Artificial Intelligence"中实现 - min_to_move/1 和 max_to_move/1 是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7979517/

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