Minimax is a recursive algorithm used to select an optimal move for a player assuming that the other player is also playing optimally.
A game can be defined as a search problem with the following components:
- Game Tree: A tree structure containing all the possible moves.
- Initial state: The initial position of the board and showing whose move it is.
- Successor function: It defines the possible legal moves a player can make.
- Terminal state: It is the position of the board when the game ends.
- Utility function: It is a function which assigns a numeric value for the outcome of a game.