¿Existe un algoritmo conocido para programar enfrentamientos de torneos?

10

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.

barfoon
fuente
Es posible que desee buscar la coincidencia máxima .
svick

Respuestas:

1

Desde mi breve tiempo en Wikipedia hace veinte segundos, parece que primero tendrá que decidir una estrategia de eliminación. Ver Wikipedia:

  1. Sistema suizo
  2. Torneo de eliminación simple
  3. Torneo de doble eliminación

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.

Chris Pfohl
fuente
Prefiero el suizo, que otorga clasificaciones medias a diferencia de la eliminación doble / simple, y encuentra a los mejores jugadores N en la misma cantidad de rondas que un torneo de eliminación N.
Mooing Duck el
1

Haciendo esto a medida que avanzo, parece que un algoritmo de coincidencia inicial es bastante simple:

While two or more clubs have at least one member not paired  
    select the two clubs with the most unpaired members
    select a random unpaired member from each club
    pair those members

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.

Pato mugido
fuente