# Introduction

Adversarial search is a type of search algorithm used in artificial intelligence and computer science to find the best move in a two-player game. In an adversarial search, one player (the maximizer) tries to maximize their score while the other player (the minimizer) tries to minimize the maximizer's score. This is in contrast to non-adversarial search algorithms, which are used to find a solution to a problem without considering the actions of any other player.

# Where are they used?

Adversarial search algorithms are commonly used in games such as chess, checkers, and Go, where players take turns making moves and the goal is to win the game. They are also used in other fields, such as finance and military strategy, where there is a need to make decisions in the face of an opposing player.

One of the key components of adversarial search algorithms is the evaluation function, which is used to evaluate the current state of the game and predict the outcome if the game were to continue from that state. The evaluation function takes into account factors such as the number of pieces each player has, their positions on the board, and any potential moves that could be made.

# Minimax Algorithm

One popular adversarial search algorithm is the minimax algorithm, which is a recursive algorithm that explores all possible moves and countermoves in a game tree, evaluating the scores of each possible outcome. The minimax algorithm starts at the root of the game tree and works its way down to the leaf nodes, assigning a score to each node based on the evaluation function. The minimax algorithm then "minimizes" the score of the maximizer's moves and "maximizes" the score of the minimizer's moves, leading to an optimal move for the maximizer.

# Alpha Beta Pruning

Another popular adversarial search algorithm is the alpha-beta pruning algorithm, which is a variant of the minimax algorithm that reduces the number of nodes that need to be evaluated by "pruning" the game tree. The alpha-beta pruning algorithm uses two values, alpha and beta, to keep track of the minimum and maximum scores that the maximizer and minimizer can achieve, respectively. If the alpha value becomes greater than the beta value, the algorithm can prune the remainder of the game tree, as it is no longer possible for the maximizer to achieve a better score.

# Conclusion

Adversarial search algorithms are a powerful tool for finding the optimal move in two-player games, but they can be computationally expensive, as they require the evaluation of a large number of possible moves and countermoves. However, with advances in computer hardware and optimization techniques, adversarial search algorithms have become increasingly efficient and are now commonly used in a variety of applications.