Consiste en la elección del mejor movimiento para cada jugador, es decir la máquina para quien programaremos el sistema tratará de maximizar las oportunidades para ganar y el humano tratará de minimizar las oportunidades que tiene la máquina para ganar.
El espacio de estados se representa mediante árboles alternados para cada jugador, sea la máquina o el humano, donde: Nodo: Representa una situación del juego, un estado actual. Sucesores de un nodo: Son todos aquellos estados posibles que pueden surgir a partir de aplicar las reglas al estado actual. Nivel: Es aquel donde cada jugador tiene todas las opciones.
Es un valor que sirve como variable para determinar a donde se debe mover un jugador, dependiendo a un max o min. El jugador que juegue con max elegira la opción mas alta de todas, mientras que el jugador min tratara de elegir la opción que sea la menor de todas las opciones.
Generación del árbol de juego. Se generarán todos los nodos hasta llegar a un estado terminal o a una profundidad concreta. Se calculan los valores de la función Heurística para cada nodo terminal y según a eso se elige sea para min o para max y se elige el mayor o el menor respectivamente. El juego termina según a las condiciones que tenga cada juego.
Función Heurística Tres en Raya F(x)=#posibilidadesMax-#posibilidadesMin Max: Elegirá los valores que sean mayores. Min: Elegirá los valores que sean los menores posibles, para asi minimizar las posibilidades de ganar de max.