Solo me pregunto si ya existe un algoritmo de programación de torneos que pueda usar o incluso adaptar un poco.
Aquí están mis requisitos:
- Un número variable de oponentes que pertenecen a un número variable de equipos / clubes cada uno debe ser emparejado con un oponente
- Dos oponentes no pueden ser del mismo club.
- Si hay un número impar de jugadores, se selecciona 1 de ellos al azar para obtener un adiós
Cualquier algoritmo relacionado con este tipo de conjunto de requisitos sería apreciado.
EDITAR: solo necesito ejecutar esto un máximo de una vez, creando enfrentamientos para la primera 'ronda' del torneo.
algorithms
barfoon
fuente
fuente
Respuestas:
Como puedo ver, desea encontrar la coincidencia máxima en el gráfico. De hecho, los nodos son jugadores, se conectan entre sí si no están en el mismo club, ahora debes encontrar el número máximo de bordes que no tienen el mismo vértice. Consulte el algoritmo de coincidencia máxima de Edmonds .
fuente
Desde mi breve tiempo en Wikipedia hace veinte segundos, parece que primero tendrá que decidir una estrategia de eliminación. Ver Wikipedia:
El artículo de eliminación única describió las técnicas de siembra (el algoritmo que está buscando) de manera bastante genérica y parecía útil, aunque no del todo un algoritmo.
fuente
Haciendo esto a medida que avanzo, parece que un algoritmo de coincidencia inicial es bastante simple:
Si queda una persona, será una persona aleatoria, con una excepción. Si un club tiene más miembros que todos los jugadores opuestos juntos, entonces las sobras siempre serán de ese club. Siendo realistas, esa es una situación súper rara, y elegir una compra de cualquier otro club dejaría aún más personas sobrantes.
fuente