Explore Courses Blog Tutorials Interview Questions
0 votes
in AI and Deep Learning by (50.2k points)

Let me start by saying that this question can be answered by AI wizards with no Prolog experience.

The excellent Prolog Programming for Artificial Intelligence book has this quite terse and clever minimax implementation:

 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 

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

However, the author didn't go to any lengths in describing it and I'm left to wonder what min_to_move/1 and max_to_move/1 are.

Can anyone explain this to me?

Thanks in advance!

1 Answer

0 votes
by (108k points)

Clearly, min_to_move(Pos) is true if and only if the "minimizing" player is to make a move in position Pos. Conversely for max_to_move/1. Subjectively, the coding style depicted here as not very good. For example, on many occasions, if-then-else ((->)/2 and (;)/2) seems to be a better fit to express the intention. The predicate names could also be much more descriptive and more appealing.

If you are looking to learn more about Artificial Intelligence then you join Artificial Intelligence certification. Also, if you are appearing for job profiles of AI Engineer or AI Expert then you can prepare for the interviews on Artificial Intelligence Interview Questions.

Browse Categories