Skip to content

About

C++ adversarial search engine using Minimax and optimized Alpha-Beta pruning to solve complex zero-sum games with asymmetrical turn constraints.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

Adversarial Search Engine & Game Theory (Tactical 5-in-a-Row)

Resumen del Proyecto

Este proyecto implementa un motor de búsqueda con adversario en C++[cite: 78] diseñado para resolver una variante asimétrica y altamente restringida de juegos de tablero en una cuadrícula de 9x9[cite: 80]. El sistema es capaz de evaluar millones de estados futuros para tomar decisiones óptimas bajo estrictas limitaciones de tiempo.

El motor supera la complejidad de un 5-en-Raya estándar al integrar mecánicas que alteran dinámicamente el árbol de juego:

  • Secuencia Asimétrica de Turnos: Los jugadores colocan piezas en un patrón 1-2-2-2[cite: 80], lo que introduce un alto riesgo de ataques combinados en un solo turno.
  • Regla de la Trinidad (Restricción de Módulo 3): Los movimientos legales están matemáticamente limitados por la ecuación (fila + columna) % 3 == fase_actual % 3[cite: 80].
  • Topología Dinámica: Presencia de celdas de Sabotaje (convierten la pieza al color rival), Bombas (destruyen filas y columnas enteras) y celdas Místicas (otorgan turnos extra)[cite: 80, 81].

Arquitectura Algorítmica

1. Búsqueda con Adversario y Poda Alfa-Beta

Para navegar el intratable factor de ramificación del tablero de 9x9, el motor central utiliza el algoritmo Minimax[cite: 96]. Para lograr un rendimiento viable en tiempo real, se implementó Poda Alfa-Beta (\alpha-\beta)[cite: 96], la cual descarta ramas del árbol de decisión que matemáticamente no pueden influir en el resultado final[cite: 97].

2. Move Ordering (Ordenación Heurística de Sucesores)

La eficiencia de la poda Alfa-Beta depende directamente del orden en que se evalúan los nodos. Se desarrolló un sistema de Move Ordering que pre-evalúa superficialmente los estados hijos antes de la recursión[cite: 97]. Al forzar al algoritmo a explorar primero las ramas más prometedoras, se maximizan los cortes (podas) tempranos, permitiendo que el motor alcance una profundidad de búsqueda de 7 capas[cite: 97] dentro del límite de tiempo.

3. Escáner de Densidad por Ventanas Deslizantes (Función Heurística)

La evaluación de los estados hoja superó las vulnerabilidades de los conteos de contigüidad básicos mediante una arquitectura de Ventanas Deslizantes[cite: 98].

  • Detección de Líneas Rotas: En lugar de buscar piezas estrictamente adyacentes, el escáner analiza vectores de 5 casillas para detectar altas concentraciones de piezas (ej. O_OOO)[cite: 98, 100].
  • Penalización Asimétrica: La heurística asigna un peso negativo drástico a las estructuras ofensivas del rival para forzar un comportamiento de "bloqueo preventivo" contra la regla de turnos dobles[cite: 98, 100].

4. Resolutor de Finales (Status / Búsqueda Exhaustiva)

Para las fases finales (endgames), el sistema puede conmutar a un algoritmo de Búsqueda Exhaustiva (DFS puro) que abandona las estimaciones heurísticas para resolver matemáticamente el tablero hasta los nodos terminales, garantizando la victoria o forzando el empate si existe una ruta probada[cite: 96].

Tecnologías Utilizadas

  • Lenguaje: C++[cite: 78].
  • Conceptos Aplicados: Teoría de Juegos (Zero-Sum Games), Minimax, Alpha-Beta Pruning, Heurísticas de Evaluación, Árboles de Decisión.

Compilación y Ejecución

El motor incluye soporte para simulaciones automáticas (Batch mode) ideales para benchmarking de algoritmos, así como una interfaz visual renderizada con OpenGL[cite: 82, 84].

# Compilación
make -j

# Ejecución de un duelo automatizado (IA vs IA) en consola para análisis de rendimiento
./n_en_raya -p1 inteligente -id1 1 -p2 inteligente -id2 1 -d 7 -nogui

About

C++ adversarial search engine using Minimax and optimized Alpha-Beta pruning to solve complex zero-sum games with asymmetrical turn constraints.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages