|
Publicité | |||||||||||||||||||||||
|
|
#1 (permalink) |
|
Membre du Club
![]() Date d'inscription: novembre 2007
Localisation: PARIS
Âge: 62
Messages: 94
|
Bonjour,
Je vous propose ce petit problème d'algorithme posté par "constant2001" sur 01net. Je cite : Code :
- j'aimerai que quelqu'un m'aide en me rédigeant l'Algo de l'élaboration d'un calendrier d'un championnat de football comprenant n équipes. n étant un entier naturel supérieur ou égal à trois. - L'équipe citée en première position est celle qui reçoit et l'autre l'équipe visiteuse. - L'équipe qui reçoit à une journée sera reçue à la prochaine et recevra à la journée surprochaine et ainsi de suite. - Les matches se jouent en aller et retour. Par exemple : Pour un championnat de 4 équipes, n = 4 et les équipes sont A1, A2, A3 et A4. voici ce que donne le calendrier : Phase Aller : 1ère journée : A1 x A2 ; A3 x A4 2ème journée : A4 x A1 ; A3 x A2 3ème journée : A1 x A3 ; A2 x A4 Phase retour : 4ème journée : A2 x A1 ; A4 x A3 5ème journée : A1 x A4 ; A2 x A3 6ème journée : A3 x A1 ; A4 x A2 J'aimerais que l'algo génère automatiquement le calendrier à l'entrée du nombre n d'équipes. Code :
et recevra à la journée surprochaine et ainsi de suite. Personnellement, je n'ai pas traité l'étape d'initialisation dépendante de n, qui ne présente pas vraiment de difficultés algorithmiques majeures, ni la phase retour qui correspond au résultat de la phase aller en inversant les équipes. Je ne vous soumets pas tout de suite le résultat de ma réflexion sur le sujet, j'attends que constant2001 se manifeste sur 01net ou ici. Bonne réflexion !... Dernière modification par IFA2377 ; 08/03/2008 à 22h13. |
|
|
|
|
|
#2 (permalink) |
![]() Nom : Xavier Philippeau
Date d'inscription: décembre 2006
Localisation: Montpellier
Âge: 37
Messages: 6 734
|
Sujet déja traité:
http://www.developpez.net/forums/sho...d.php?t=497637 avec comme conclusion: "Round Robin Tournament Scheduling"
__________________
ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple. |
|
|
|
|
|
#3 (permalink) |
|
Membre du Club
![]() Date d'inscription: novembre 2007
Localisation: PARIS
Âge: 62
Messages: 94
|
Bonjour,
Code :
Sujet déja traité Cela dit, je n'ai pas trouvé les réponses très fouillées, je veux dire pédagogiques. Elle où l'algorithmique dans tout ça ? Dernière modification par IFA2377 ; 03/03/2008 à 12h58. |
|
|
|
|
|
#4 (permalink) | |
![]() Nom : Xavier Philippeau
Date d'inscription: décembre 2006
Localisation: Montpellier
Âge: 37
Messages: 6 734
|
Citation:
Cela dit, le premier lien donné par google explique très bien le principe (avec une zolie animation graphique)
__________________
ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple. |
|
|
|
|
|
|
#5 (permalink) | ||
|
Membre du Club
![]() Date d'inscription: novembre 2007
Localisation: PARIS
Âge: 62
Messages: 94
|
Bonjour pseudocode,
Citation:
http://www.developpez.net/forums/d6800/general-developpement/debats-developpement-best-of/pratique-programmation-spontanee/ Concernant précisément ce sujet, j'ai voulu comprendre les motivations à poursuivre la discussion. J'ai posté un bilan qui a eu pour effet de tuer la discussion. Ce n'était pas le but recherché, je voulais juste faire le point. Lorsque le sujet est intéressant, il échappe en quelque sorte à son auteur. Il serait intéressant à partir d'un certain moment, d'en faire une synthèse à l'instar d'elitost avec la question "Les logiciels indispensables pour le développement" : http://ericreboisson.developpez.com/...ndispensables/ Citation:
Cela m'intéresse car j'ai exploré le problème et avant de dévoiler le résultat de mes élucubrations, j'aimerais savoir ce qui existe sur le sujet. Il n'est peut-être pas nécessaire que j'aille plus loin. Je viens de voir le bouton "Délestage". |
||
|
|
|
|
|
#6 (permalink) | |
![]() Nom : Xavier Philippeau
Date d'inscription: décembre 2006
Localisation: Montpellier
Âge: 37
Messages: 6 734
|
Citation:
).L'idée de l'algorithme c'est de fixer une équipe (la #1) et de lui faire rencontrer une équipe différente par rotation (la #2, puis la #3, etc.) Là ou l'algo est malin, c'est qu'en faisant cela on determine également les rencontres des autres equipes: ![]() image 1: Configuration initiale (journée n°1) Rencontres: (#1,#2), (#3,#6) et (#4,#5) Image 2: Principe de rotation des équipes L'equipe #1 ne bouge pas image 3: Configuration suivante (journée n°2) Rencontres: (#1,#3), (#4,#2) et (#5,#6) Et ainsi de suite jusqu'à revenir à la configuration initale.
__________________
ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple. |
|
|
|
|
|
|
#7 (permalink) |
|
Membre du Club
![]() Date d'inscription: novembre 2007
Localisation: PARIS
Âge: 62
Messages: 94
|
Bonjour pseudocode,
C'est vrai que la démarche est intéressante. Il reste encore à finaliser pour établir le calendrier. Mais tu as peut-être autre chose à faire alors que pour ce qui me concerne, j'ai tout mon temps. Merci quand même d'avoir consacré un peu de ton temps. Je ne dessine pas trop mais je suis tenté quand même de soumettre ma vision des choses. Pas tout de suite toutefois. Ce sera du rustique. Je préviens... La notation "#1, #2" à une signification particulière ? L'auteur de la discussion a utilisé la même notation ? Dernière modification par IFA2377 ; 08/03/2008 à 18h34. |
|
|
|
|
|
#8 (permalink) | |||
![]() Nom : Xavier Philippeau
Date d'inscription: décembre 2006
Localisation: Montpellier
Âge: 37
Messages: 6 734
|
Citation:
Citation:
![]() Citation:
__________________
ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple. |
|||
|
|
|
|
|
#9 (permalink) | |
|
Membre du Club
![]() Date d'inscription: novembre 2007
Localisation: PARIS
Âge: 62
Messages: 94
|
Bonjour pseudocode,
J'ai le sentiment que les professionnels s'intéressent davantage que les étudiants aux interrogations qu'ils soumettent. Citation:
Code :
PLANNING DES MATCHS
+-----------+
P010 | D_PROG |
+-----------+
|
+<--------------------------+
| |
+-----------+ |
P020 | D_JOURNEE | |
+-----------+ |
| |
+<-----------------------+ |
| | |
+-----------+ | |
P030 | T_MATCH | | |
+-----------+ | |
< >-----------------------+ |
| |
+-----------+ |
P040 | F_JOURNEE | |
+-----------+ |
< >--------------------------+
|
+-----------+
P050 | F_PROG |
+-----------+
+---------------------------------------------------------------------+
| EQUIPES MATCH ALLER (Tableau T0) |
+---------------------------------------------------------------------+
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
|---------------------------------------------------------------------|
| A1 x A2 | | | | | | |
| A1 x A3 | A2 x A3 | | | | | |
| A1 x A4 | A2 x A4 | A3 x A4 | | | | |
| A1 x A5 | A2 x A5 | A3 x A5 | A4 x A5 | | | |
| A1 x A6 | A2 x A6 | A3 x A6 | A4 x A6 | A5 x A6 | | |
| A1 x A7 | A2 x A7 | A3 x A7 | A4 x A7 | A5 x A7 | A6 x A7 | |
| A1 x A8 | A2 x A8 | A3 x A8 | A4 x A8 | A5 x A8 | A6 x A8 | A7 x A8 |
+---------------------------------------------------------------------+
+---------------------------------------------------------------------+ +-------------------------------------------+
| EQUIPES MATCH ALLER (Tableau T1) | | JOURNEES (Tableau T2) |
+---------------------------------------------------------------------+ +-------------------------------------------+
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | | J | 1 | 2 | 3 | 4 |
|---------------------------------------------------------------------| |-------------------------------------------|
| A1 x A3 | | | | | | | | 1 | A1 x A2 | A3 x A4 | A5 x A6 | A7 x A8 |
| A1 x A3 | A2 x A3 | | | | | | | 2 | A1 x A3 | | | |
| A1 x A4 | A2 x A4 | A3 x A4 | | | | | | 3 | A1 x A4 | | | |
| A1 x A5 | A2 x A5 | A3 x A5 | A4 x A5 | | | | | 4 | A1 x A5 | | | |
| A1 x A6 | A2 x A6 | A3 x A6 | A4 x A6 | A5 x A6 | | | | 5 | A1 x A6 | | | |
| A1 x A7 | A2 x A7 | A3 x A7 | A4 x A7 | A5 x A7 | A6 x A7 | | | 6 | A1 x A7 | | | |
| A1 x A8 | A2 x A8 | A3 x A8 | A4 x A8 | A5 x A8 | A6 x A8 | A7 x A8 | | 7 | A1 x A8 | | | |
+---------------------------------------------------------------------+ +-------------------------------------------+
I_T1_L -> Indice courant Ligne de la table T1
J_T1_L -> Indice borne Ligne de la table T1
I_T1_C -> Indice courant Colonne de la table T1
J_T1_C -> Indice borne Colonne de la table T1
I_T2_L -> Indice courant Ligne de la table T2
J_T2_L -> Indice borne Ligne de la table T2
I_T2_C -> Indice courant Colonne de la table T2
J_T2_C -> Indice borne Colonne de la table T2
P010 - Initialiser Tableau T0
- Initialiser Tableau T2 à partir de T1
- I_T2_L = 0
P020 - Recopier Tableau T0 dans Tableau T1
- I_T2_L = I_T2_L + 1
- I_T2_C = 0
P030 - Supprimer les T1_CELLULE dont une équipe existe dans T2
- I_T1_L = N° de ligne de la 1ère cellule [A2 x An] renseignée
- I_T2_C = I_T2_C + 1
- T2_CELLULE(I_T2_L(I_T2_C) = T1_CELLULE(I_T1_L(I_T1_C))
- Placer 1er T1_CELLULE (I_T1_C(I_T1_L)) dans 1er T2_CELLULE disponible (I_T2_L(I_T2_C))
- Si I_T2_C < J_T2_C ALLER A P030
P040 - Si I_T2_L < J_T2_L ALLER A P020
P050 - Si le nombre d'équipes est impair -> supprimer de T2 les matchs impliquant la dernière équipe
- Imprimer le tableau T2
Sinon, j'ai démarré ma réflexion sur Excel, c'est peut-être plus visuel. Je voulais faire comme toi, insérer une image (capture d'écran Excel) mais je crois comprendre que l'insertion d'une image passe par un transfert de cette image vers un site. Trop compliqué pour moi. J'ai réussi à faire toute ma carrière avec trois instructions "IF", "LET" et "PRINT"... Enfin presque. Malgré mon bavardage important, il y a encore du non-dit sur la démarche et surtout, il faudait tester sur une machine. J'ai fait tourné manuellement sur Excel en faisant différents choix, ça a l'air de bien fonctionner. Etonnant ! Non ? L'histoire des matchs retour, ce n'est à mon sens qu'une question de date et de lieu. Je ne suis pas sûr d'avoir fait progressé le schmilblick mais ça m'aura occupé. C'était la campagne à Paris ! Ca tombe bien le salon de l'Agriculture vient de se terminer. Au fait, cest vrai, j'ai fait plus de 15 ans l'Agriculture. Ca laisse des traces. Un Dinosaure Dernière modification par IFA2377 ; 03/03/2008 à 21h00. |
|
|
|
|
|
|
#10 (permalink) | ||||||
![]() Nom : Xavier Philippeau
Date d'inscription: décembre 2006
Localisation: Montpellier
Âge: 37
Messages: 6 734
|
Citation:
Citation:
Citation:
Citation:
![]() Citation:
Citation:
__________________
ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple. |
||||||
|
|
|
|
|
#11 (permalink) |
|
Invité de passage
![]() Date d'inscription: mars 2008
Messages: 3
|
Bonjour à Tous,C'est que que depuis que j'ai posté cet algo, j'étais un peu absent, c'est pas grave, je suis là actuellement pour vous donner plus de détails. En fait mon probleme est plus compliqué que cà car je dois normalement tenir compte des réalités africaines. En passant je ne suis pas "parsy". Allons au vif du sujet : Quant je parle de " Recevra à la prochaine journée " cela veut dire que : - L'équipe qui est citée en première position dans une journée sera citée en deuxième position à la prochaine journée et ainsi de suite. - Le terme # veut dire vs ou contre tout simplement Je ne sais pas si cela vaut la peine d'inserer l'autre aspect du probleme mais je l'ajoute quant même . certaines équipes n'ont pas assez de moyens financiers raison pour laquelle les rencontres sont divisées en deux : celles du Nord et celles du Sud. cela veut dire que lorsqu'une équipe du Sud va jouer au Nord, le calendrier devrait lui permettre de livrer 2 matchs au Nord avant de revenir au Sud sans tenir compte du fait "Locale, Visiteuse" : elle reste visiteuse pendant les deux matches et pareil pour une équipe du Nord qui va jouer au Sud. Je suis à votre entiere disposition pour d'éventuels détails et je sais que certains vont avoir l'impression d'avoir une boucle dont on ne peux en sortir c'est ce qui m'arrive chaque fois que je penses à ce probleme. Merci beaucoup pour le temps que chaque de vous accorde à mon probleme. A bientot Constant2001 |
|
|
|
|
|
#12 (permalink) | ||
|
Membre du Club
![]() Date d'inscription: novembre 2007
Localisation: PARIS
Âge: 62
Messages: 94
|
Bonjour constant2001,
Bon ! J'ai réfléchi sur l'algo qu'a proposé pseudocode et sur tes dernières informations. Citation:
disons le dimanche et que ce jour là, toutes les équipes jouent. Disons également qu'une saison se déroule sur une année, il ne peut donc y avoir que 52 rencontres maximum incluant les matchs aller et les matchs retour. Le nombre d'équipes maximum ne peut donc être supérieur à : ((nombre de rencontres / 2) + 1), une équipe ne pouvant pas jouer contre elle-même. Soit : 27. Je n'y connais rien en fooball mais je déduis de cette réflexion que cela explique l'existence des ligues, non ? J'en déduis également que le nombre d'équipes devrait être connu et figé au départ. Citation:
équipe du Nord et une équipe du Sud, c'est l'équipe du Nord qui reçoit et qui organise la revanche un nombre de jours après à convenir. La difficulté, c'était de constituer les rencontres par journées. Les rencontres "Equipe Locale" - "Equipe Visiteuse" étant constituées, pour tenir compte de la contrainte géographique, il suffit d'inverser "Equipe Locale" et "Equipe Visiteuse" lorsque c'est nécessaire pour faire en sorte que dans le calendrier "Aller", ce soit toutes les équipes du Nord qui reçoivent. Dans le calendrier "Aller", la première équipe citée d'une rencontre est déclarée "Equipe Locale" et la seconde "Equipe Visiteuse". Pour ce qui concerne les rencontres d'équipes Nord-Sud, le traitement du tableau propose une rencontre au même endroit, un nombre de jours après à définir. Pour les rencontres "Retour", dans ce même calendrier, la première équipe citée devient "Equipe Visiteuse" et la seconde "Equipe Locale". Pour ce qui concerne les rencontres d'équipes Nord-Sud le traitement du tableau les ignore, tout simplement. Dernière modification par IFA2377 ; 05/03/2008 à 10h14. |
||
|
|
|
|
|
#13 (permalink) |
|
Expert Confirmé Sénior
![]() ![]() Date d'inscription: novembre 2005
Messages: 4 335
|
Impossible tel quel: deux equipes recevant la premiere journee doivent finir pour jouer l'une contre l'autre, donc elles ne peuvent pas alterner maison/exterieur simultanement. Si je ne me trompe pas, l'algo de pseudocode est tel qu'il n'y a qu'un changement par equipe (sauf pour une).
__________________
Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça. |
|
|
|
|
|
#14 (permalink) |
|
Membre du Club
![]() Date d'inscription: novembre 2007
Localisation: PARIS
Âge: 62
Messages: 94
|
Bonjour,
Je vois donc 3 tables : - une table EQUIPES (id_equipe, nom, situation géographique Nord/Sud, coordonnées) - une table DATES (id_date, date) - une table MATCHS (id_date, id_local, id_visiteur) EQUIPES et DATES existent. L'objectif est de créer la table MATCHS Il restera à exploiter les 3 tables pour faire ce que l'on veut : convoquer, etc. 1. Faire tourner T1, T2 et T3 pour obtenir T4 Code :
+------------------------------------------------+ | +T2-------------------+ | | | +---+ +---+ +---+ | | | +------| |N-3| |N-4| |S-5| |<-+ | | V | +---+ +---+ +---+ | | | | +T1-------------+ +---------------------+ | | | | +---+ +---+ | | | | | |N-1| x |N-2| | x x x | | | | +---+ +---+ | | | | +---------------+ +T3-------------------+ | | | | | +---+ +---+ +---+ | | | | +----->| |S-8| |S-7| |S-6| |--+ | | | +---+ +---+ +---+ | | | +---------------------+ | +------------------------------------------------+ +T4-------------------------------------------------------------------------------+ | | | +-+ +---------------+ +---------------+ +---------------+ +---------------+ | | | | | +---+ +---+ | | +---+ +---+ | | +---+ +---+ | | +---+ +---+ | | | |1| | |N-1| x |N-2| | | |N-3| x |S-8| | | |N-4| x |S-7| | | |S-5| x |S-6| | | | | | | +---+ +---+ | | +---+ +---+ | | +---+ +---+ | | +---+ +---+ | | | +-+ +---------------+ +---------------+ +---------------+ +---------------+ | | | | +-+ +---------------+ +---------------+ +---------------+ +---------------+ | | | | | +---+ +---+ | | +---+ +---+ | | +---+ +---+ | | +---+ +---+ | | | |2| | |N-1| x |N-3| | | |N-4| x |N-2| | | |S-5| x |S-8| | | |S-6| x |S-7| | | | | | | +---+ +---+ | | +---+ +---+ | | +---+ +---+ | | +---+ +---+ | | | +-+ +---------------+ +---------------+ +---------------+ +---------------+ | | | | +-+ +---------------+ +---------------+ +---------------+ +---------------+ | | | | | +---+ +---+ | | +---+ +---+ | | +---+ +---+ | | +---+ +---+ | | | |3| | |N-1| x |N-4| | | |S-5| x |N-3| | | |S-6| x |N-2| | | |S-7| x |S-8| | | | | | | +---+ +---+ | | +---+ +---+ | | +---+ +---+ | | +---+ +---+ | | | +-+ +---------------+ +---------------+ +---------------+ +---------------+ | | | | +-+ +---------------+ +---------------+ +---------------+ +---------------+ | | | | | +---+ +---+ | | +---+ +---+ | | +---+ +---+ | | +---+ +---+ | | | |4| | |N-1| x |S-5| | | |S-6| x |N-4| | | |S-7| x |N-3| | | |S-8| x |N-2| | | | | | | +---+ +---+ | | +---+ +---+ | | +---+ +---+ | | +---+ +---+ | | | +-+ +---------------+ +---------------+ +---------------+ +---------------+ | | | | +-+ +---------------+ +---------------+ +---------------+ +---------------+ | | | | | +---+ +---+ | | +---+ +---+ | | +---+ +---+ | | +---+ +---+ | | | |5| | |N-1| x |S-6| | | |S-7| x |S-5| | | |S-8| x |N-4| | | |N-2| x |N-3| | | | | | | +---+ +---+ | | +---+ +---+ | | +---+ +---+ | | +---+ +---+ | | | +-+ +---------------+ +---------------+ +---------------+ +---------------+ | | | | +-+ +---------------+ +---------------+ +---------------+ +---------------+ | | | | | +---+ +---+ | | +---+ +---+ | | +---+ +---+ | | +---+ +---+ | | | |6| | |N-1| x |S-7| | | |S-8| x |S-6| | | |N-2| x |S-5| | | |N-3| x |N-4| | | | | | | +---+ +---+ | | +---+ +---+ | | +---+ +---+ | | +---+ +---+ | | | +-+ +---------------+ +---------------+ +---------------+ +---------------+ | | | | +-+ +---------------+ +---------------+ +---------------+ +---------------+ | | | | | +---+ +---+ | | +---+ +---+ | | +---+ +---+ | | +---+ +---+ | | | |7| | |N-1| x |S-8| | | |N-2| x |S-7| | | |N-3| x |S-6| | | |N-4| x |S-5| | | | | | | +---+ +---+ | | +---+ +---+ | | +---+ +---+ | | +---+ +---+ | | | +-+ +---------------+ +---------------+ +---------------+ +---------------+ | | | +---------------------------------------------------------------------------------+ Code :
+-----------+
P010 | D_PROG |
+-----------+
|
+<--------------------------+
| |
+-----------+ |
P020 | D_JOURNEE | |
+-----------+ |
| |
+<-----------------------+ |
| | |
+-----------+ | |
P030 | T_MATCH | | |
+-----------+ | |
< >-----------------------+ |
| |
+-----------+ |
P040 | F_JOURNEE | |
+-----------+ |
< >--------------------------+
|
+-----------+
P050 | F_PROG |
+-----------+
- Le traitement T_MATCH consiste a alimenter les items MATCH (2) à (n) pour une journée de la table T4 à partir des tables T2 et T3. - Le traitement F_JOURNEE consiste à faire tourner T1, T2 et T3 - le traitement F_PROG consiste à permuter les équipes faisant rencontrer une équipe SUD contre une équipe NORD ainsi que je le disais dans mon précédent message, puis à créer un fichier out (id_date, id_local, id_visiteur) à partir de la table T4 pour alimenter une table MATCHS. Le traitement de cette petite Base de données est une autre histoire. Dernière modification par IFA2377 ; 08/03/2008 à 15h49. |
|
|
|
|
|
#15 (permalink) |
|
Invité de passage
![]() Date d'inscription: mars 2008
Messages: 3
|
Bonjour IFA2377,
Merci pour tous tes apports. En fait quand je parle de Calendrier, je veux parler de programme des rencontres sans les dates quite à les inserer manuellement car il faut tenir compte des calendriers FIFA et CAF; donc une équipe peut livrer 2 matchs par semaine soit le mercredi et le dimanche et en plus certains matchs au sommet peuvent etre programmés le samedi, somme toute les dates sont manuelles. Oui effectivement cela explique l'existence des ligues. justement le nombre d'équipes avant une saison est connu et figé car un certain descend en division inférieur et d'autre accède en division supérieur. Pour le second probleme, vous ne m'aviez pas bien saisi, en principe, on peut avoir environ trois équipes au nord, quand l'une d'elles va jouer au Sud, le programme des matchs devrait lui permettre de rencontrer deux équipes du Sud avant qu'elle ne reparte au nord à la troisième journée suivante. |
|
|
|
|
|
![]() |
||
'Tit PB d'algo intéressant : Calendrier d'un championnat de football
|
||
| Outils de la discussion | |
|
|