En esta sección se detalla el funcionamiento del algoritmo de generación de emparejamiento entre jugadores para torneos del tipo suizo y Round Robin.
Reglas de Emparejamiento en Torneos de tipo Sistema Suizo
A continuación, se describen las reglas generales sobre generación de emparejamientos para torneos suizos entre jugadores:
1. El número de rondas a disputar debe anunciarse de antemano.
2. Dos jugadores sólo se enfrentan entre sí una vez.
3. Los jugadores serán pareados con otros del mismo puntaje, o el puntaje más cercano.
4. Siempre que sea posible, un jugador durante todo el torneo deberá conducir las piezas blancas tantas veces como haya conducido las piezas negras, aunque para el caso del presente sistema se está considerando que el jugador al final del torneo puede jugar hasta tres veces más con un color de piezas que el otro.
5. Siempre que sea posible, cada jugador deberá conducir piezas del color contrario a las que haya conducido en la ronda previa.
6. El orden final queda determinado por la suma de puntos, recibiendo un punto por partida ganada, medio punto por tablas y cero puntos por perder. Recibirá un punto aquel jugador cuyo oponente programado no se presente a disputar la partida.
Algoritmo de Emparejamiento de Jugadores según Torneo Suizo
1. Si el número de jugadores es impar se determina al jugador que descansa en la ronda seleccionándolo como BYE y se le asigna el puntaje previamente indicado en la configuración del torneo.
2. Dividir en grupos a jugadores según puntuación y ordenarlos según valor del ELO.
3. Crear subgrupos dentro de cada grupo.
a. Si el subgrupo es homogéneo (todos tienen el mismo puntaje) se divide el grupo en dos y se emparejan a los jugadores de la siguiente manera: el primero del primer subgrupo se empareja con el primero del segundo subgrupo, el segundo del primer subgrupo con el segundo del segundo subgrupo y así sucesivamente.
b. Si el subgrupo es heterogéneo (hay jugadores de puntuación diferente) se emparejan primero los de mayor puntuación y los restantes siguen el proceso del paso 3.a.
4. Se inicia el proceso de emparejamiento empezando con el grupo de mayor puntuación y se termina con el de menor puntuación.
5. Si los emparejamientos resultantes son imposibles de realizar (porque hay parejas que ya han jugado antes o porque hay jugadores que repiten jugar tres veces con un mismo color) se procede a permutar las posiciones de los jugadores del segundo subgrupo hasta encontrar la combinación que empareje correctamente a todos los jugadores de grupo.
6. A los jugadores de un grupo que no hayan sido emparejados ya sea porque hayan jugado con todos los jugadores de su grupo, por impedimentos de asignación de color de piezas o porque el grupo tiene un número impar de jugadores, pasan al siguiente grupo siendo estos los primeros en ser emparejados.
7. Si es imposible poder encontrar una combinación que empareje a todos los jugadores de un mismo grupo con el procedimiento indicado se procede a trasladar a todos los jugadores del grupo no emparejado hasta el siguiente grupo y se procede a emparejar siguiendo el proceso desde 3.a.
8. Si al llegar al último grupo de puntuación es imposible poder emparejar a los jugadores siguiendo el proceso indicado se procede a fusionar a los jugadores del último grupo con los jugadores del penúltimo grupo deshaciendo los emparejamientos obtenidos y empezando el proceso de emparejamientos desde 3.a. Repetir sucesivamente este procedimiento hasta encontrar la combinación de emparejamientos que cumpla con los requisitos mostradas en la sección anterior.
9. Si resultara imposible emparejar a los jugadores siguiendo el procedimiento indicado se procede a seguir el proceso de emparejamiento sin considerar el requisito de la asignación de colores. Es decir que en este caso es posible que un jugador juegue tres veces seguidas con un mismo color.
Algoritmo de Emparejamiento de Jugadores según Torneo Round Robin
El algoritmo usual para implementar torneos del tipo Round Robin es asignar a cada competidor un número y emparejarlos en la primera ronda de la siguiente manera:
01 02 03 04 05 06 07
14 13 12 11 10 09 08
Es decir en la primera ronda juegan: 1-14, 2-13, 3-12, 4-11, 5-10, 6-9 y 7-8. Luego se fija al competidor número uno y se empiezan a rotar a los jugadores según en sentido horario, de la siguiente forma:
En la segunda ronda:
01 14 02 03 04 05 06
13 12 11 10 09 08 07
En la tercera ronda:
01 13 14 02 03 04 05
12 11 10 09 08 07 06
En la cuarta ronda:
01 12 13 14 02 03 04
11 10 09 08 07 06 05
El procedimiento se sigue hasta dar la vuelta completa asegurándose que todos jueguen contra todos. Para efectos de la implementación del algoritmo Round Robin en este proyecto se implementó una lista enlazada circular con nodos que contenían el identificador de cada jugador para simular el comportamiento indicado en las tablas anteriores.