Minimax
In abstract, this algorithm calculates all possible combination of moves a player can play in a certain state of the game, and chooses the best possible move by simply calculating the winning potential of the each move which is based on no. of moves, no. of wins and no. of loses.