Comment déterminer efficacement si une échelle donnée est valide?


28

Dans mon club de squash local, il y a une échelle qui fonctionne comme suit.

  1. Au début de la saison, nous construisons une table avec le nom de chaque membre du club sur une ligne distincte.
  2. Nous écrivons ensuite le nombre de parties gagnées et le nombre de parties jouées à côté de chaque nom (sous la forme: joueur gagne / parties).

Ainsi en début de saison la table ressemble à ceci:

Carol 0/0
Billy 0/0
Alice 0/0
Daffyd 0/0

Deux joueurs peuvent jouer un match, un joueur gagnant. Si le joueur le plus proche du bas de la table gagne, alors la position des joueurs est changée. Nous répétons ensuite l'étape 2., en mettant à jour le nombre de victoires et de jeux à côté de chaque joueur. Par exemple, si Alice bat Billy, nous avons

Carol 0/0
Alice 1/1
Billy 0/1
Daffyd 0/0

Ces matchs se poursuivent tout au long de la saison et finissent par entraîner l'inscription des joueurs dans l'ordre de force approximatif.

Malheureusement, la mise à jour se fait de manière plutôt aléatoire, donc des erreurs sont commises. Voici quelques exemples de tableaux invalides, c'est-à-dire des tableaux qui n'ont pas pu être produits en suivant correctement les étapes ci-dessus pour un ordre de départ (nous avons oublié l'ordre que nous avons utilisé au début de la saison) et la séquence des matchs et des résultats:

Alice 0/1
Billy 1/1
Carol 0/1
Daffyd 0/0

Alice 2/3
Billy 0/1
Carol 0/0
Daffyd 0/0

Alice 1/1
Billy 0/2
Carol 2/2
Daffyd 0/1

Étant donné un tableau, comment pouvons-nous déterminer efficacement s'il est valide? Nous pourrions commencer par noter ce qui suit:

  1. L'ordre des noms n'a pas d'importance, car nous avons oublié l'ordre de départ d'origine.

  2. Le nombre total de victoires doit correspondre à la moitié du nombre de parties jouées. (Cela montre que le premier exemple ci-dessus n'est pas valide.)

  3. Supposons que la table soit valide. Ensuite, il y a un multigraphe - un graphique admettant plusieurs bords mais pas de boucles - avec chaque sommet correspondant à un joueur et chaque bord à un match joué. Ensuite, le nombre total de parties jouées par chaque joueur correspond au degré du sommet du joueur dans le multigraphe. Donc, s'il n'y a pas de multigraph avec les degrés de sommet appropriés, le tableau doit être invalide. Par exemple, il n'y a pas de multigraphe avec un sommet de degré un et un de degré trois, le deuxième exemple n'est donc pas valide. [Nous pouvons vérifier efficacement l'existence d'un tel multigraphe.]

Nous avons donc deux vérifications que nous pouvons appliquer pour commencer, mais cela permet toujours des tables invalides, comme le troisième exemple. Pour voir que cette table n'est pas valide, nous pouvons travailler en arrière, en épuisant toutes les manières possibles dont la table aurait pu apparaître.

Je me demandais si quelqu'un pouvait penser à un algorithme de temps polynomial (en nombre de joueurs et en nombre de jeux) pour résoudre ce problème de décision?


2
Peut-être existe-t-il un théorème de type Havel Hakimi pour les multigraphies dirigées ...
Aryabhata

Pourquoi le troisième exemple n'est-il pas possible? Et si Alice gagnait Bob, Carol gagnait Bob et Carol gagnait Daffyd. Puis Alice a gagné 1 match sur 1, Bob a gagné 0 match sur 2, Carol a gagné 2 matchs sur 2 et Daffyd a gagné 0 matchs sur 1?
utdiscant

utdiscant: Après chaque partie, si le joueur inférieur gagne, les joueurs sont changés. Pour montrer que le troisième exemple est possible, vous devez donner une configuration de départ et une séquence de jeux - c'est-à-dire avec une commande - résultant dans le tableau donné.
Ben

aryabhata: Merci - oui, ce serait une étape utile. Malheureusement, cela semble plutôt difficile ...
Ben

1
une suggestion pour étudier / résoudre ce problème. spécifiez-le comme un problème SAT. essayez ensuite de nombreux cas aléatoires. voir si certains sont difficiles pour un solveur standard. sinon, c'est peut-être un sous-ensemble contraint en P.
vzn

Réponses:


1

Ce n'est pas une réponse complète. Je donne un énoncé plus simple du problème et quelques remarques.

Nous commençons par un graphe où les sommets sont étiquetés avec .[n]

vulabel(v)<label(u)

Gne

NPG

Observation

label(v)vv

Je pense qu'il devrait être possible de combiner cette observation avec Havel-Hakimi pour donner un algorithme de temps polynomial.


Salut. Merci. Pourriez-vous énoncer à nouveau votre observation formulée dans le contexte des échelles? Je pense qu'il y a un contre-exemple pour un graphique d'ordre 3, mais peut-être que j'ai mal lu.
Ben

@Ben, je pense que ce serait le suivant: vous pouvez supposer que la dernière personne sur l'échelle a joué tous les matchs qu'il a gagnés au début du tournoi et a joué tous les matchs qu'il a perdus à la fin du tournoi . Faites-moi savoir s'il y a un contre-exemple à cela, je n'ai pas vérifié attentivement.
Kaveh

Malheureusement, il existe des échelles comme celle-ci: A 2/2 B 0/1 C 0/1
Ben

@Ben, je pense que l'exemple est cohérent avec ce que j'ai écrit, c'est-à-dire qu'il n'est pas un contre-exemple à l'observation.
Kaveh

L'échelle est valide. Supposons que le dernier match joué était une défaite pour C. Alors avant le dernier match, l'échelle devait ressembler à ceci: C 0/0 B 0/1 A 1/1, mais cette échelle n'est pas valide. Par conséquent, nous ne pouvons pas supposer que le dernier match était une défaite pour C.
Ben

0

Je n'ai pas résolu le problème, mais j'ai des résultats partiels, dont les déclarations sont données ci-dessous. J'écrirai les épreuves si quelqu'un est intéressé.

Proposition . Supposons que l'échelle (1) contient plus d'un joueur (2) contient un nombre égal de victoires et de pertes; et (3) est tel que chaque joueur a gagné au moins un match et perdu au moins un match. Ensuite, l'échelle est valide.

WiiLiiRi le rang (où le plus haut est le mieux).

Proposition (due à Fabio Parisi) . Si et l'échelle est valide, alors W ik : R k > R i , W k > 0Li=0

Wik:Rk>Ri,Wk>0(Lk1)++k:Rk<RiLk,
LiWi=0
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.