Un juego de ajedrez tiene muchos matices.
El conjunto de habilidades principal que necesitará es las técnicas de poda Branch y Bound / Alpha-beta. El conjunto de movimientos posibles en una posición dada suele ser enorme, por lo que evaluar todos los movimientos es una pérdida de tiempo de CPU. Evaluar los movimientos de manera codiciosa, usar heurísticas como la ganancia de material y buscar eficientemente son partes de un programa de ajedrez.
A continuación, puede intentar ‘enseñar’ a una computadora cuáles son buenos movimientos posicionales (movimientos que ocupan el centro, atacan al rey, permiten el movimiento de piezas, cambian cuando están adelante, etc.). El aprendizaje automático es un candidato aquí, y los miles de juegos de ajedrez que se pueden alimentar a una computadora pueden entrenar su ‘intuición’ bastante bien.
- Teoría de los tipos: ¿la comprensión de la correspondencia de Curry-Howard lo convierte en un mejor programador?
- Si tengo un número (ej .: n = 28), ¿existe una fórmula cerrada para saber cuántos son los pares ordenados de números enteros (a, b) de manera que [matemáticas] a \ cdot b = n [/ matemáticas]?
- ¿A qué escuela debo asistir para un programa de posgrado de matemáticas: Stony Brook o UIUC?
- En términos simples, ¿qué es el algoritmo Z?
- ¿Qué son las funciones en matemáticas en lenguaje simple?
Representar matemáticamente una situación en el ajedrez es un poco difícil, y es posible que deba tomar múltiples heurísticas con diferentes pesos para llegar a una conclusión sobre una posición. Se aplica una gran cantidad de prueba y error a este proceso, solo para optimizar los parámetros.
Cuando haya terminado con esto, las otras partes son principalmente fuerza bruta. Aumente la memoria de la computadora en las aberturas al alimentarla con una mesa de apertura. Aliméntalo con una mesa de final de juego donde juegue perfectamente para cualquier posición con menos de X piezas. Resolver mate en X movimientos en cualquier posición dada. Haz que juegue muy rápido cuando esté cerca del límite de tiempo.
En general, hacer un programa de ajedrez requerirá tiempo y le sugiero que lea un poco sobre la poda alfa-beta eficiente antes de intentarlo.