Por lo general, es una combinación de búsqueda de árbol de juego y evaluación de posición en las hojas. Con muchas optimizaciones de búsqueda. En orden de importancia, estas optimizaciones son:
Método alfa-beta: para podar ramas que nunca ocurrirán. El puntaje para una posición debe estar entre alfa actual y beta: alfa <= puntaje <= beta, si no se descarta la rama.
Profundización iterativa: use la búsqueda más superficial para ordenar movimientos para la búsqueda más profunda más adelante. El orden de los movimientos es crucial para la efectividad de alfa-beta, los mejores movimientos primero. La esperanza es que los movimientos peores caerán fuera [alfa, beta].
- ¿Puedes copiar las características de una aplicación?
- ¿Cuál es el mejor reproductor de música para Windows?
- ¿Cuál es la mejor aplicación de división de facturas para amigos?
- ¿Cuál es el mejor y más barato software para GST?
- ¿Qué software usa John Green para las animaciones en sus videos de Crash Course?
Poda de movimiento nulo: omita un movimiento y si la posición sigue siendo buena, se puede podar toda la rama porque es demasiado buena. Más formalmente, habrá fallas en la parte superior de la rama, es decir, la puntuación de evaluación estará por encima del límite superior (beta en alfa-beta).
Poda de futilidad: si la puntuación actual más algún margen aún cae por debajo de alfa, descarte esta rama antes de realizar la búsqueda de profundidad máxima.
Quiescencia: solo evalúe estáticamente las posiciones tranquilas, por ejemplo, la posición donde está colgada su reina no es tranquila. Extienda la rama hasta que la posición esté tranquila.
Tabla de transposición (TT): tabla hash tecleada en la posición que contiene posiciones ya evaluadas en búsquedas anteriores para no repetir el trabajo. Por supuesto, si la posición en TT se evaluó a baja profundidad y queremos una búsqueda de mayor profundidad ahora, se volverá a evaluar (la profundidad y la puntuación también se almacenan en TT).
Bitboard: la posición está representada por un montón de bits, por lo que la aritmética de bits se puede utilizar tanto como sea posible, por ejemplo, para la generación de movimientos legales.
Función de evaluación: puntaje de seguridad del rey, puestos avanzados para piezas menores, estructura de peones, movilidad general de piezas, etc. Algunos conocimientos están codificados.