Question

J'ai donc été chargé de créer une application qui génère le calendrier d'un double Tournoi de tennis (c'est-à-dire des équipes de deux) d'une manière que, à la fin, tout le monde aurait joué contre le reste des joueurs. L'astuce est que chaque équipe devrait changer à chaque tour, de sorte que non seulement tout le monde a joué contre tout le monde, mais les équipes ne sont pas répétées.

J'ai essayé de l'implémenter en utilisant une recherche gourmand avec du retour en arrière, mais il faut trop de temps pour trouver une solution valide, donc ce que je demande, c'est la sursociation d'un algorithme plus efficace que je peux utiliser pour résoudre ce problème. Ce sont les particuliers du problème:

  • Il y a un multiple de 4 nombres de joueurs.
  • Il y a au moins des champs N / 4 à jouer, de sorte que dans chaque tour, tous les joueurs aient un match.
  • Aucun joueur ne peut jouer deux fois avec le même partenaire, donc à chaque tour, les équipes doivent changer.
  • Aucun joueur ne peut jouer deux fois contre le même adversaire. À la fin du tournoi, chaque joueur a dû jouer contre les autres.

    L'algorithme doit rechercher la combinaison idéale de matchs afin qu'il réponde aux requérits ci-dessus.

    Des idées? Merci en avance.

Edit 2: Ce n'est pas possible pour 4 joueurs.

TOUR 1

  • Joueur 1 et joueur 2 vs joueur 3 et joueur 4

Jusqu'ici tout va bien.

2ÈME ROUND

  • Joueur 1 et joueur 3 vs joueur 2 et joueur 4

Le joueur 1 a déjà joué contre le joueur 4, pas une solution valide. L'autre possibilité:

2ÈME ROUND'

  • Joueur 1 et joueur 4 vs joueur 2 et joueur 3

Le joueur 1 a déjà joué contre le joueur 3, pas une solution valide non plus.

Edit: C'est le double tennis, désolé pour le malentendu. Chaque joueur doit avoir joué contre le reste, mais il n'est pas obligatoire que chaque joueur ait fini par jouer avec le reste. Question édité pour plus de clarté.

Pas de solution correcte

Licencié sous: CC-BY-SA avec attribution
Non affilié à cs.stackexchange
scroll top