UN PROBLÈME D EMPLOI DU TEMPS

Documents pareils
Introduction à la théorie des graphes. Solutions des exercices

Souad EL Bernoussi. Groupe d Analyse Numérique et Optimisation Rabat http ://

La NP-complétude. Johanne Cohen. PRISM/CNRS, Versailles, France.

Objectifs du cours d aujourd hui. Informatique II : Cours d introduction à l informatique et à la programmation objet. Complexité d un problème (2)

Chapitre 2 Le problème de l unicité des solutions

Baccalauréat ES Polynésie (spécialité) 10 septembre 2014 Corrigé

Programmation linéaire

Fonctions de plusieurs variables

Programmation Linéaire - Cours 1

Exo7. Calculs de déterminants. Fiche corrigée par Arnaud Bodin. Exercice 1 Calculer les déterminants des matrices suivantes : Exercice 2.

Eléments de Théorie des Graphes et Programmation Linéaire

Cours de Recherche Opérationnelle IUT d Orsay. Nicolas M. THIÉRY. address: Nicolas.Thiery@u-psud.fr URL:

Théorie des Graphes Cours 3: Forêts et Arbres II / Modélisation

DOCM Solutions officielles = n 2 10.

Exercices du Cours de la programmation linéaire donné par le Dr. Ali DERBALA

LE PROBLEME DU PLUS COURT CHEMIN

Continuité et dérivabilité d une fonction

Exemples de problèmes et d applications. INF6953 Exemples de problèmes 1

Calcul matriciel. Définition 1 Une matrice de format (m,n) est un tableau rectangulaire de mn éléments, rangés en m lignes et n colonnes.

aux différences est appelé équation aux différences d ordre n en forme normale.

Exercices - Polynômes : corrigé. Opérations sur les polynômes

Chapitre 3. Mesures stationnaires. et théorèmes de convergence

Groupe symétrique. Chapitre II. 1 Définitions et généralités

Eteindre. les. lumières MATH EN JEAN Mme BACHOC. Elèves de seconde, première et terminale scientifiques :

Cours 02 : Problème général de la programmation linéaire

Peut-on imiter le hasard?

III- Raisonnement par récurrence

Comparaison de fonctions Développements limités. Chapitre 10

La programmation linéaire : une introduction. Qu est-ce qu un programme linéaire? Terminologie. Écriture mathématique

Les devoirs en Première STMG

Exo7. Matrice d une application linéaire. Corrections d Arnaud Bodin.

Chaînes de Markov au lycée

La persistance des nombres

MIS 102 Initiation à l Informatique

Chapitre 2. Matrices

Probabilités sur un univers fini

Limites finies en un point

chapitre 4 Nombres de Catalan

Probabilités sur un univers fini

Optimisation Discrète

Chapitre 3. Quelques fonctions usuelles. 1 Fonctions logarithme et exponentielle. 1.1 La fonction logarithme

Exercices Alternatifs. Quelqu un aurait-il vu passer un polynôme?

Exercices Alternatifs. Quelqu un aurait-il vu passer un polynôme?

Programmation linéaire

Suites numériques 3. 1 Convergence et limite d une suite

Algorithmique et Programmation

Chapitre 6. Fonction réelle d une variable réelle

Manuel d utilisation 26 juin Tâche à effectuer : écrire un algorithme 2

Arithmétique binaire. Chapitre. 5.1 Notions Bit Mot

Feuille TD n 1 Exercices d algorithmique éléments de correction

Indications pour une progression au CM1 et au CM2

BACCALAUREAT GENERAL MATHÉMATIQUES

Optimisation non linéaire Irène Charon, Olivier Hudry École nationale supérieure des télécommunications

Chapitre 5 : Flot maximal dans un graphe

Définition 0,752 = 0,7 + 0,05 + 0,002 SYSTÈMES DE NUMÉRATION POSITIONNELS =

Université Paris-Dauphine DUMI2E 1ère année, Applications

I. Cas de l équiprobabilité

3 Approximation de solutions d équations

Baccalauréat ES/L Amérique du Sud 21 novembre 2013

Pour l épreuve d algèbre, les calculatrices sont interdites.

Communications collectives et ordonnancement en régime permanent pour plates-formes hétérogènes

Les indices à surplus constant

Extrait du poly de Stage de Grésillon 1, août 2010

Documentation de conception

Baccalauréat ES Antilles Guyane 12 septembre 2014 Corrigé

ÉPREUVE COMMUNE DE TIPE Partie D

La classification automatique de données quantitatives

Quelques algorithmes simples dont l analyse n est pas si simple

Fonctions homographiques

Mesure d angles et trigonométrie

Développements limités. Notion de développement limité

Algorithmes récursifs

L exclusion mutuelle distribuée

6. Les différents types de démonstrations

Modélisation géostatistique des débits le long des cours d eau.

Correction du baccalauréat STMG Polynésie 17 juin 2014

Exercices - Fonctions de plusieurs variables : corrigé. Pour commencer

Programmation Par Contraintes

Moments des variables aléatoires réelles

1 Recherche en table par balayage

CHAPITRE V SYSTEMES DIFFERENTIELS LINEAIRES A COEFFICIENTS CONSTANTS DU PREMIER ORDRE. EQUATIONS DIFFERENTIELLES.

Reconstruction de bâtiments en 3D à partir de nuages de points LIDAR

Cours de mathématiques

Chapitre 2. Eléments pour comprendre un énoncé

Encryptions, compression et partitionnement des données

ALGORITHMIQUE II NOTION DE COMPLEXITE. SMI AlgoII

3. Conditionnement P (B)

Suites numériques 4. 1 Autres recettes pour calculer les limites

Chp. 4. Minimisation d une fonction d une variable

Baccalauréat S Antilles-Guyane 11 septembre 2014 Corrigé

Calculateur quantique: factorisation des entiers

Structurer ses données : les tableaux. Introduction à la programmation

Programmation linéaire et Optimisation. Didier Smets

Qu est-ce qu une probabilité?

Faculté des sciences Département de mathématiques. Théorie des graphes

CORRIGE LES NOMBRES DECIMAUX RELATIFS. «Réfléchir avant d agir!»

Définitions. Numéro à préciser. (Durée : )

Cryptographie et fonctions à sens unique

Table des matières. 1 Programmation linéaire 1

Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT

Transcription:

UN PROBLÈME D EMPLOI DU TEMPS Des professeurs doivent donner chaque semaine des cours à des classes. La semaine est divisée en tranches horaires dans lesquelles doivent se placer ces cours et chaque professeur donne au plus un cours à chaque classe Par exemple, la semaine est divisée en demi-journées et 4 professeurs x 1, x 2, x 3 et x 4 doivent donner cours à 5 classes y 1, y 2, y 3, y 4 et y 5 comme l indique le tableau suivant : y 1 y 2 y 3 y 4 y 5 x 1 1 1 1 1 - x 2 1-1 1 1 x 3 1 1 1 1 - x 4-1 1 1 1 Il s agit d établir un emploi du temps hebdomadaire pour ces cours, c est à dire «qui fait quoi et à quel moment dans la semaine?» sachant que dans chaque tranche horaire un professeur ne donne cours qu à au plus une classe et que chaque classe n a cours qu avec un seul professeur Tel qu il est posé, ce problème a en général plusieurs solutions, on se propose ici de trouver le meilleur emploi du temps possible, c est-à-dire celui minimisant le nombre de créneaux horaires nécessaires (1) On peut modéliser la situation très naturellement par un graphe : quels sont ses sommets? quelles sont ses arêtes? et de quel type de graphe s agit-il? Faire un schéma représentant le graphe de l exemple proposé (2) Quelle est la structure correspondant à l affectation des professeurs aux classes dans un créneau horaire donné, et celle correspondant à l emploi du temps global? Établir que définir un emploi du temps pour la semaine revient à associer une couleur, un entier par exemple, à chaque arête du graphe de telle sorte que les arêtes adjacentes en chaque sommet aient des couleurs différentes, c est-à-dire comme une coloration des arêtes du graphe. On notera χ (G) l Indice Chromatique du graphe c est-à-dire le nombre minimum de couleurs nécessaires à une coloration. À quoi correspond ce nombre entier pour notre problème? (3) Si l on note Δ(G) le Degré Maximum du graphe c est-à-dire le nombre maximum d arêtes adjacentes en un sommet, on a χ (G) Δ(G), pourquoi? Montrer que, dans notre cas on a en fait χ (G) = Δ(G). Indication : construire une coloration des arêtes pas à pas, à partir d une coloration vide, en montrant que Δ(G) couleurs suffisent toujours quitte à intervertir les couleurs des arêtes le long d une chaîne partant de x lorsque la coloration d un nouvelle arête xy peut a priori nécessiter une nouvelle couleur quand les couleurs manquantes en x et en y ne sont pas les mêmes. On pourra noter 1, 2,, Δ(G) les couleurs à utiliser (4) En s inspirant de la preuve précédente, mettre au point dans ses grandes lignes un algorithme résolvant effectivement le problème : on précisera les structures de données à utiliser (stockage du graphe, des couleurs, ) ainsi que des estimations du nombre d opérations élémentaires nécessaires au déroulement de l algorithme (Complexité en Temps) et de l espace mémoire utilisé (Complexité en espace) (5) Considérons maintenant la situation plus générale où un professeur doit donner plusieurs cours à une même classe dans la même semaine, dans des créneaux horaires distincts bien sûr. En quoi cela change t il la modélisation? Le Théorème établi à la question (3) reste valable, pourquoi? Il faudra cependant légèrement modifier l algorithme, expliquer comment

UN PROBLÈME D EMPLOI DU TEMPS : QUELQUES EXPLICATIONS (1) Graphe modélisant le problème Notons X l ensemble des professeurs et Y l ensemble des classes, on peut alors associer à la situation décrite le graphe G = (X Y, E) dont les sommets sont les éléments de X Y et les arêtes l ensemble E défini par : E = { x i y j x i doit faire cours à la classe y j } C est donc un graphe simple non orienté biparti : - simple car tout x i donne au plus un cours à toute classe y j - non orienté car la relation entre professeurs et classes est symétrique - biparti car l ensemble des sommets est partitionné en deux sous ensembles, X et Y, tels que toute arête relie un sommet de X et un sommet de Y L exemple proposé peut donc se représenter par : x 1 x 2 x 3 x 4 y 1 y 2 y 3 y 4 y 5 (2) Structure d une Solution Une solution au problème consiste à donner la liste des cours (professeur, classe) dans chaque créneau horaire autorisé avec la contrainte : au plus un seul professeur par classe et au plus une seule classe par professeur. Dans notre modélisation, avec le graphe défini ci-dessus, dans un créneau horaire donné, cela correspond à un ensemble d arêtes indépendantes, c est-à-dire disjointes, autrement dit sans sommet commun. Cette notion porte le nom de Couplage Par exemple (x 1, y 3 ), (x 2, y 1 ), (x 3, y 4 ) et (x 4, y 5 ) pour un créneau horaire donné L emploi du temps cherché correspondra donc à définir une partition des arêtes du graphe en couplages, c est-à-dire à fournir des ensembles disjoints de couplages de toutes les arêtes du graphe Cette structure correspond exactement à la notion de Coloration des arêtes d un graphe, autrement dit il faut attribuer une couleur à chaque arête de telle sorte que deux arêtes adjacentes à un même sommet aient des couleurs différentes. Le nombre de couleurs nécessaires indiquera clairement le nombre de créneaux horaires pour organiser l emploi du temps et une numérotation de ces couleurs donnera la répartition dans le temps des différents cours On peut, bien entendu, attribuer naïvement une couleur différente à chaque arête du graphe, c est une solution viable mais pas forcément réaliste. La meilleure solution sera bien sûr celle correspondant au minimum de créneaux horaires, c est-à-dire au nombre minimum de couleurs d une coloration des arêtes, donc de l Indice Chromatique, χ (G) Le problème se ramène donc d une part au calcul du nombre chromatique et d autre part à la construction effective d une coloration optimale Notons que par définition Δ(G) χ (G), où Δ(G) est le degré maximal du graphe, c est-à-dire le nombre maximal d arêtes adjacentes en un sommet 1

Dans le cas général, le calcul de l indice chromatique d un graphe est NP Difficile, en pratique cela signifie qu il n existe pas à l heure actuelle d algorithme donnant une coloration optimale d un graphe quelconque en temps raisonnable. Notons que le Théorème de VIZING (1964) fournit malgré tout un encadrement utile, il affirme en effet que χ (G) Δ(G) + 1 et qu il existe un algorithme efficace, c est-à-dire polynomial, permettant d obtenir une coloration des arêtes en Δ(G) + 1 couleurs même si décider si l indice chromatique est Δ(G) ou Δ(G) + 1 reste un problème NP Complet, étonnant, non! (3) Preuve de χ (G) = Δ(G) Le résultat de VIZING reste délicat à établir, heureusement, dans notre cas, le graphe considéré est biparti, on peut alors montrer le résultat plus précis χ (G) = Δ(G) (Théorème de KÖNIG, 1916) Considérons pour cela les arêtes du graphe les unes après les autres dans un ordre quelconque. Supposons avoir construit une coloration d un sous ensemble E d arêtes du graphe en plus Δ(G) couleurs. Dans le cas où E = E c est terminé, sinon il reste encore une arête xy dans E E, donc non encore coloriée. Dans le graphe partiel G = (X Y, E ) x et y ont donc chacun au plus Δ(G) 1 voisins, on en déduit qu il existe au moins une couleur manquante, C x et C y, en x et y respectivement. Si C x = C y alors il suffit de colorier xy en C x car cela fournit bien une coloration en au plus Δ(G) couleurs. Supposons maintenant que C x C y, dans ce cas x est adjacent à une arête de couleur C y. Considérons alors une chaîne C maximale, c est-à-dire qu on ne peut pas augmenter, coloriée alternativement en C y et C x et partant de x Les points clés sont alors les suivants : - C ne contient pas deux fois le même sommet, en effet en tout sommet z apparaissant deux fois il y aurait au moins trois arêtes de C donc deux arêtes de même couleur. C est donc une chaîne élémentaire - C ne contient pas y, sinon C devrait se terminer en y avec la couleur C x et C + xy serait un cycle de longueur impaire de G, ce qui est impossible C étant maximale, on peut la colorier en échangeant les couleurs C x et C y, cela donne une Δ(G) - coloration de G + xy dans la quelle C y manque à x et à y, il suffit alors d utiliser cette couleur pour l arête xy Le processus se poursuit de la même façon jusqu à colorier toutes les arêtes de G en Δ(G) couleurs (4) Un algorithme de Coloration Optimale La preuve précédente est constructive dans le sens où elle permet de construire une coloration optimale façon itérative en listant toutes les arêtes du graphe dans un ordre quelconque Sans l écrire de façon très précise, nous allons décrire les étapes essentielles d un algorithme possible pour résoudre notre problème. Pour pouvoir en donner une estimation du temps de calcul et de l espace mémoire nécessaire il faut cependant préciser comment sont représentés les données et les résultats, puis expliciter de façon plus détaillée les traitements faits Il nous faut dons donner des réponses aux questions suivantes : - stockage du graphe? - stockage des couleurs? - calcul de Δ(G)? - listage des arêtes? - recherche d une couleur manquante commune aux deux sommets d une arête? - recherche éventuelle d une chaîne «alternée» maximale C à partir d un sommet? - modification des couleurs Il est usuel de représenter un graphe simple non orienté G par sa matrice d adjacence M : si on suppose les sommets numérotés de 1 à n où n est le nombre total de sommets du graphe alors M est une matrice n.n définie par M(x, y) = 1 si et seulement si xy est une arête de G, et 0 sinon. M est symétrique car le graphe est non orienté 2

Dans notre cas le graphe est biparti, on peut alors le stocker dans une matrice M ayant p = X lignes et q = Y colonnes comme l exemple donné dans l énoncé, les couleurs pourront aussi être stockées dans une matrice C de même taille et initialisée à 0 Le calcul du degré maximal, Δ(G), peut alors se faire par simple «balayage» des lignes et des colonnes de la matrice M. Remarquons que Δ(G) est au plus égal à max(p, q) La structure de l algorithme peut avoir la forme suivante : pour x = 1 à p faire pour y = 1 à q faire si M(x, y) = 1 alors «Traiter l arête xy» Il faut maintenant expliciter la partie «Traiter l arête xy» On doit tester s il existe une couleur manquante commune en x et y, pour rendre cette recherche aisée on peut définir une matrice CM, initialisée à 0, ayant n = p + q lignes, c est-à-dire une ligne par sommet, et Δ(G) colonnes, c est-à-dire une colonne par couleur, telle que CM(x, i) = 0 si la couleur i est manquante au sommet x, et CM(x, i) = z si l arête xz est de couleur i, bien sûr on aura aussi CM(z, i) = x. Le test de la couleur manquante commune à x et à y pourra donc simplement se faire en comparant les lignes de x et de y dans cette matrice, cela peut donc se faire en au plus Δ(G) étapes élémentaires Si x et y ont une même couleur manquante c alors on fait les affectations : C(x, y) = c, CM(x, c) = y et CM(y, c) = x Dans le cas contraire, c est-à-dire si les couleurs manquantes en x sont différentes des couleurs manquantes en y, soit C x en x et C y en y deux telles couleurs, il faut construire une chaîne maximale C(x) = x 1, x 2,, x k partant de x 1 = x et alternant les couleurs C y et C x. En chaque sommet x i, on cherche s il existe x i + 1 tel que CM(x i, C y ) = x i + 1 ou CM(x i, C x ) = x i + 1 suivant que i est impair ou pair. On modifie alors les couleurs sur C(x) comme indiqué dans la preuve et l on colorie xy en C y, en actualisant les matrices C et CM. Remarquons que C(x) étant élémentaire, c est-àdire ne contenant pas deux fois le même sommet, elle est de longueur inférieure à n, nombre total de sommet du graphe. C(x) est représentable par une liste ou un tableau En espace cet algorithme manipule les matrices M, C et CM, la liste ou le tableau C(x) et aura un nombre constant de variables auxiliaires, la complexité en espace est donc en O(n 2 ) Examinons la complexité en temps : - l initialisation des matrices C et CM se fait respectivement en O(p.q) et O(n. Δ(G)) - le calcul de Δ(G) nécessite O(p.q) étapes - le test des couleurs en x et y peut se faire en O(Δ(G)) - la construction de C(x) et la modification des couleurs est en O(n) La complexité en temps est donc globalement en O (n 2 ) Nous ne prétendons pas avoir là le meilleur algorithme possible pour ce problème, mais il montre que l on peut le résoudre par un algorithme polynomial, c est-à-dire dont les complexités en temps et en espace sont majorées par un polynôme en la taille du problème, ici les nombres de sommets et d arêtes, ce qui n est pas vrai, ou au moins non connu, dans le cas d un graphe quelconque En appliquant l algorithme sur l exemple où Δ(G) = 4, nous obtenons : - (1, 1) de couleur 1, (1, 2) de couleur 2, (1, 3) de couleur 3 et (1, 4) de couleur 4 - (2, 1) de couleur 2, (2, 3) de couleur 1, (2, 4) de couleur 3 et (2, 5) de couleur 4 - (3, 1) de couleur 3, (3, 2) de couleur 1, (3, 3) de couleur 2 3

Pour l arête (3, 4), la couleur manquante en x 3 est 4 et les couleurs manquantes en y 4 sont 1 et 2. Cherchons donc une chaîne maximale qui part de x 3 et alterne les couleurs 1, par exemple, et 4. Elle est formée de l unique arête x 3 y 2. On colorie donc cette arête en 4 et l arête x 3 y 4 en 1 - (4, 2) de couleur 1, (4, 3) de couleur 4, (4, 4) de couleur 2 et (4, 5) de couleur 3 (5) Plusieurs cours à une même classe Dans le cas ou certains professeurs doivent donner plusieurs cours à une même classe dans la semaine, il y aura ce que l on appelle des «arêtes multiples» entre certaines paires de sommets dans le graphe. Si, par exemple, le professeur x i doit faire trois cours à la classe y j, il y aura trois arêtes distinctes entre les sommets x i et y j. Cela modifie donc légèrement la modélisation dans le sens où le graphe, qui reste bien sûr biparti, n est plus simple, on le désignera sous l appellation de Multigraphe Biparti non orienté Cela ne change en rien la structure cherchée, c est toujours une coloration des arêtes, et le Théorème de KÖNIG, χ (G) = Δ(G), reste valable, on s en convaincra facilement en reprenant la preuve dans ce cas Par contre l algorithme doit être un peu modifié On peut noter k le nombre maximum d arêtes existant entre deux sommets du graphe Dans la matrice représentant M le multigraphe il faudra alors écrire M(x, y) = k xy s il existe k xy arêtes distinctes entre les sommets x et y, k xy est la multiplicité de l arête xy De même, la matrice C, stockant la coloration des arêtes, devra contenir dans chaque case un sous tableau de taille k ou une liste qui stockera les colorations des différentes arêtes reliant les deux sommets concernés Quant à la matrice CM des couleurs manquantes, sa structure n est pas modifiée La structure générale de l algorithme devra tenir compte de la multiplicité des arêtes : pour x = 1 à p faire pour y = 1 à q faire si M(x, y) 0 alors «Traiter chaque arête reliant x à y» Le traitement de chaque arête reste identique à celui déjà décrit Les complexités en temps et en espace sont donc maintenant en O(k.n 2 ) 4