Eléments de Théorie des Graphes

Dimension: px
Commencer à balayer dès la page:

Download "Eléments de Théorie des Graphes"

Transcription

1 INSTITUT NATIONAL POLYTECHNIQUE DE LORRAINE Ecole Nationale Supérieure d Electricité et de Mécanique Eléments de Théorie des Graphes Didier Maquin Version provisoire du mai 00

2

3 Table des matières Avant propos Un bref historique de la théorie des graphes Introduction 6. Qu est-ce qu un graphe? Graphes et applications multivoques Principales définitions Modes de représentation d un graphe 9. Listes de succession Matrice d adjacence Matrice d incidence Etude de la connexité. Chaînes et cycles, élémentaires et simples Chemins et circuits, élémentaires et simples Graphes et sous-graphes connexes Graphes et sous-graphes fortement connexes Cycles et nombre cyclomatique Parcours eulériens et hamiltoniens. Chaînes et cycles eulériens Chaînes et cycles hamiltoniens Méthode de recherche de chemins 8 6. Rappel sur les opérations booléennes sur les matrices Recherche de chemins Le problème du plus court chemin Arbres et arborescences 7. Définitions et propriétés Arbres couvrants de poids minimum Réseaux, réseaux de transport et problèmes de flots 6 8. Définitions Recherche d un flot complet Amélioration du flot Recherche d un flot maximal : algorithme de Ford et Fulkerson Exemple traité manuellement Recherche d un flot maximal à coût minimal Couplages 9. Le problème du couplage maximal Couplage maximal et flot maximal Couplage de poids maximal Problèmes d affectation

4 0 Problèmes d ordonnancement 0 0. Le graphe potentiels-tâches Le graphe potentiels-étapes ou graphe PERT Résolution Compléments Annexe A - Implémentation de l algorithme de Moore-Dijkstra 6 Annexe B - Implémentation de l algorithme de Floyd 0 Annexe C - Implémentation de l algorithme de Prim Références

5 Avant propos Faut t faire un dessin?. La représentation d un problème par un dessin, un plan, une esquisse contribue souvent à sa compréhension. Le langage des graphes est construit, à l origine, sur ce principe. Nombres de méthodes, de propriétés, de procédures ont été pensées ou trouvées à partir d un schéma pour être ensuite formalisées et développées. Chacun d entre nous a, au moins une fois, vu ou utilisé un plan de métro, une carte de lignes ferroviaires, un plan électrique, un arbre généalogique ou un organigramme d entreprise ; ainsi, tout le monde sait plus ou moins intuitivement ce qu est un graphe. Toutefois, entre cette notion vague où des points, représentant des individus, des objets, des lieux ou des situations, sont reliés par des flèches, il y a une longue élaboration des concepts. La première difficulté à laquelle on peut être confronté concerne la terminologie (très abondante en théorie des graphes). Nous avons donc choisi d isoler les principales définitions du reste du cours en utilisant une mise en page différente. La théorie des graphes constitue aujourd hui un corpus de connaissances très important. Comme son nom l indique, ce cours ne constituera donc qu une introduction à cette théorie. Nous le préciserons ultérieurement, le développement de cette théorie doit beaucoup à celui des calculateurs. Il nous a donc semblé incontournable d exposer quelques algorithmes de base (recherche de chemin, d arbre, de flots, etc.). Cependant, ceci ne constitue pas le corps de cet enseignement même si les problèmes pratiques de mise en œuvre sont importants. Nous n évoquerons pas, par exemple, l optimalité de telle ou telle représentation d un graphe au regard du traitement que l on souhaite effectuer, ni la complexité (au sens nombre d opérations élémentaires) des algorithmes. De manière à permettre au lecteur intéressé de juger des difficultés de mise en œuvre des algorithmes littéraux, plus clairs pour la compréhension, décrits dans le corps du texte, quelques implémentations à l aide du langage Matlab r sont donnés en annexe. Ces fonctions ne prétendent nullement à être efficaces ou efficientes sur des données quelconques ; elles ne sont données qu à titre d illustration. De même, nous nous sommes efforcés ce citer, au moment de l introduction des méthodes de base, les fonctions de la boîte à outils de manipulation de graphes Metanet du logiciel Scilab c qui leur correspondent. Un bref historique de la théorie des graphes Tout le monde s accorde à considérer que la théorie des graphes est née en 76 avec la communication d Euler (707-78) dans laquelle il proposait une solution au célèbre problème des ponts de Königsberg (Euler, 76). Le problème posé était le suivant. Deux îles A et D sur la rivière Pregel à Königsberg (alors capitale de la Prusse de l Est, aujourd hui rebaptisée Kaliningrad) étaient reliées entre elles ainsi qu aux rivages B et C à l aide de sept ponts (désignés par des lettres minuscules) comme le montre la figure. Fig. La rivière Pregel et l île de Kneiphof

6 Le problème posé consistait, à partir d une terre quelconque A, B, C, ou D, à traverser chacun des ponts une fois et une seule et à revenir à son point de départ (sans traverser la rivière à la nage!). Euler représenta cette situation à l aide d un dessin où les sommets représentent les terres et les arêtes, les ponts comme le montre la figure. C A D B Fig. Graphe associé au problème des ponts de Königsberg Comme nous le montrerons ultérieurement, Euler démontra que ce problème n a pas de solution. Le problème des ponts de Königsberg est identique à celui consistant à tracer une figure géométrique sans lever le crayon et sans repasser plusieurs fois sur un même trait. Pendant les cent années qui suivirent, rien ne fut fait dans ce domaine de recherche. En 87, Kirchhoff (8-887) développa la théorie des arbres pour l appliquer à l analyse de circuits électriques. Dix ans plus tard, Cayley (8-89) découvrit la notion d arbre alors qu il essayait d énumérer les isomères saturés des hydrocarbures de type C n H n+. A cette époque, deux autres problèmes d importance pour la théorie des graphes furent également proposés et partiellement résolus. Le premier est la conjecture des quatre couleurs qui affirme que quatre couleurs suffisent pour colorier n importe quelle carte plane telle que les pays ayant une frontière commune soient de couleurs différentes. C est sans doute Möbius ( ) qui présenta le premier ce problème dans l un de ses cours en 80. Environ dix ans après, de Morgan (806-87) essaya de résoudre ce problème. Les lettres de de Morgan à ces divers collègues mathématiciens constituent les premières références à la conjecture des quatre couleurs. Le problème devint célèbre après sa publication, par Cayley en 879, dans le premier volume des Proceedings of the Royal Geographic Society. Ce problème est resté très longtemps sans solution. Il fallut attendre jusqu en 976 pour que Appel et Haken prouvent ce théorème en réduisant le problème à un nombre fini de situations particulières et en trouvant une solution pour chacune d entre elles à l aide d un ordinateur. Le second problème est dû à Sir Hamilton (80-86). En 89, il inventa un casse-tête qu il vendit pour guinées à un fabricant de jouet de Dublin. Ce jeu consiste en un dodécaèdre régulier en bois (un polyèdre à faces et 0 sommets), chaque face étant un pentagone régulier comme le montre la figure. Trois arêtes sont donc issues de chaque sommet. Un clou est fiché sur chaque sommet marqué du nom de vingt grandes villes mondiales. Le casse-tête consiste à enrouler une ficelle passant une fois et une seule fois par chacune des villes (sommets). Bien que la solution de ce problème soit aisée à obtenir, personne n a encore trouvé de condition nécessaire et suffisante de l existence d un tel chemin (appelé chemin Hamiltonien) dans un graphe quelconque. Cette période fertile fut suivie d un demi-siècle de relative inactivité. Les années 90 virent 6

7 Fig. Un dodécaèdre régulier la résurgence de l intérêt pour les graphes. L un des pionniers de cette période fut König à qui l on doit le premier ouvrage consacré entièrement à la théorie des graphes (König, 96). Il est sans doute à l origine de l utilisation du terme graphe pour désigner ce qui était préalablement considéré comme un ensemble de points et de flèches. A partir de 96, la théorie des graphes a connu un développement intense sous l impulsion de chercheurs motivés par la résolution de problèmes concrets. Parmi ceux-ci, citons de manière privilégiée Kuhn (9), Ford et Fulkerson (96) et Roy (99). Parallèlement, un important effort de synthèse a été opéré en particulier par Claude Berge. Son ouvrage Théorie des graphes et ses applications publié en 98 (Berge, 98) marque sans doute l avènement de l ère moderne de la théorie des graphes par l introduction d une théorie des graphes unifiée et abstraite rassemblant de nombreux résultats épars dans la littérature. Depuis, cette théorie a pris sa place, en subissant de très nombreux développement essentiellement dus à l apparition des calculateurs, au sein d un ensemble plus vaste d outils et de méthodes généralement regroupées sous l appellation recherche opérationnelle ou mathématiques discrètes. Introduction. Qu est-ce qu un graphe? Définition On appelle graphe G = (X, A) la donnée d un ensemble X dont les éléments sont appelés sommets et d une partie de A symétrique ( (x, y) A (y, x) A) dont les éléments sont appelés arêtes. En présence d une arête a = (x, y) qui peut être notée simplement xy, on dit que x et y sont les extrémités de a, que a est incidente en x et en y, et que y est un successeur ou voisin de x (et vice versa). On dit qu un graphe est sans boucle si A ne contient pas d arête de la forme (x, x), c est-à-dire joignant un sommet à lui-même. Le nombre de sommets est appelé ordre du graphe. Un graphe ne possédant pas de boucle ni d arêtes parallèles (deux arêtes distinctes joignant la même paire de sommets) est appelé graphe simple ou -graphe. En revanche un p-graphe ou graphe généralisé est un graphe pour lequel il n existe jamais plus de p arêtes de la forme (x, x). Graphiquement, les sommets peuvent être représentés par des points et l arête a = (x, y) par un trait reliant x à y. On notera que la disposition des points et la longueur ou la forme 7

8 (rectiligne ou incurvée) des traits n a aucune importance. Seule l incidence des différentes arêtes et sommets compte. A titre d exemple, les deux graphes de la figure sont identiques. Fig. Deux représentations graphiques d un même graphe Dans le tracé graphique d un graphe, deux arêtes peuvent sembler avoir une intersection en un point qui n est pas un sommet. C est le cas, par exemple, des arêtes e et f du graphe de la figure. De telles arêtes peuvent être vues comme étant placées dans des plans différents et n ayant donc aucun point commun. a e d b f c Fig. Les arêtes e et f n ont pas de point commun Les graphes ainsi définis sont dits graphes non orientés. Dans certaines situations cependant, l orientation des arêtes est importante. Définition On appelle graphe orienté ou digraphe G = (X, A) la donnée d un ensemble X dont les éléments sont appelés sommets et d une partie A de X X dont les éléments sont appelés arcs ou arêtes. En présence d un arc a = (x, y) qui peut être noté simplement xy, on dit que x est l origine (ou extrémité initiale) et y l extrémité (terminale) de a, que a est sortant en x et incident en y, et que y est un successeur de x tandis que x est un prédécesseur de y. On dit aussi que x et y sont adjacents.. Graphes et applications multivoques L ensemble des successeurs d un sommet x X est noté Γ(x). L application Γ qui, à tout élément de X, fait correspondre une partie de X (un élément de P(X)) est appelée une application multivoque. L ensemble des prédécesseurs d un sommet x X peut alors être noté Γ (x) 8

9 où Γ est l application (multivoque) réciproque de Γ. Si le graphe G est un -graphe, on constate qu il est parfaitement déterminé par la donnée de l ensemble X et de l application multivoque Γ de X P(X). Un tel graphe peut donc aussi être noté : G = (X, Γ).. Principales définitions Les définitions qui suivent sont énoncées dans le cadre des graphes orientés. Le lecteur transposera aisément ces définitions (si elles ont un sens) au cas des graphes non orientés. Définition On appelle degré sortant ou demi-degré extérieur d un sommet x le nombre d arcs de la forme a = (x, y) avec y x, c est-à-dire le nombre d éléments de Γ(x)\ {x}. On note d s (x) ce degré. On appelle degré entrant ou demi-degré intérieur d un sommet x le nombre d arcs de la forme a = (y, x) avec y x, c est-à-dire le nombre d éléments de Γ (x)\ {x}. On note d e (x) ce degré. On appelle degré de x (ou valence) la somme du degré entrant et du degré sortant. Un sommet de degré entrant non nul et de degré sortant nul est appelé puits, tandis qu un sommet de degré entrant nul et de degré sortant non nul est appelé source. Un sommet n ayant pas d arcs incidents est appelé sommet isolé ; ces sommets ont un degré nul. Deux arcs adjacents sont dits en série si leur sommet commun est de degré égal à deux. Dans la définition d un graphe, l ensemble des arcs A peut être vide ; dans ce cas, on a affaire à un graphe nul. Tous les sommets d un graphe nul sont donc des sommets isolés. En revanche, l ensemble des sommets X ne peut être vide sinon le graphe correspondant n existe pas. Cela signifie donc qu un graphe comporte au moins un sommet. Définition On appelle graphe réflexif un graphe possédant une boucle sur chaque sommet. Un graphe est symétrique si, pour tout arc a a = (y, x) appartient également à A. = (x, y) appartenant à A, l arc Un graphe est antisymétrique si, pour tout arc a = (x, y) appartenant à A, l arc a = (y, x) n appartient pas à A. Enfin, un graphe est transitif si, quelque soit deux arcs adjacents a = (x, y) et a = (y, z) appartenant à A, alors l arc a = (x, z) appartient également à A. Le concept de graphe symétrique est très proche de celui des graphes non orientés. En fait, à tout graphe symétrique, on peut associer un graphe non orienté en substituant aux arcs a = (x, y) et a = (y, x), une arête a = (y, x). 9

10 Définition Un graphe G = (X, A) est dit complet si, pour toute paire de sommets (x, y), il existe au moins un arc de la forme (x, y) ou (y, x). Un graphe simple complet d ordre n est noté K n. Un sous-ensemble de sommets C X tel que deux sommets quelconques de C sont reliés par une arête est appelé une clique. Définition 6 Soit un graphe G = (X, A) et X X. Le sous-graphe engendré par X est G = (X, A ), A étant formé des arêtes dont les deux extrémités sont dans X. Si l on se donne un sous-ensemble A de A, le graphe partiel engendré par A est G = (X, A ). Dans certaines situations, les sommets de G ayant un degré nul (sommets isolés n ayant aucune arête incidente appartenant à A ) peuvent être supprimés du graphe partiel. D après la définition précédente, une clique d un graphe G est donc un sous-graphe complet de G. Modes de représentation d un graphe Comme nous l avons mentionné précédemment, l essor de la théorie des graphes est essentiellement dû à l avènement de puissants calculateurs. Il est donc légitime de s intéresser à la manière de représenter les graphes au sein d un ordinateur. Plusieurs modes de représentation peuvent être envisagés selon la nature des traitements que l on souhaite appliquer au graphe considéré.. Listes de succession Un graphe peut être représenté à l aide d un dictionnaire ; il s agit d une table à simple entrée où chaque ligne correspond à un sommet et comporte la liste des successeurs ou des prédécesseurs de ce sommet. Considérons le graphe de la figure Fig. 6 Un graphe élémentaire Celui-ci peut être représenté par les deux tables suivantes : 0

11 ,,, -,,,, Dans la mesure où, pour une table donnée, le nombre de successeurs ou de prédécesseurs n est pas le même pour chaque sommet, il est préférable de représenter le dictionnaire sous forme de deux tableaux : le premier comprenant autant d éléments que de sommets, ces éléments pointant, dans un second tableau, les débuts de listes de successeurs (ou de prédécesseurs). La figure 7 montre cette organisation en ce qui concerne la table des successeurs Fig. 7 Codage d une liste de successeurs Cette représentation est un peu redondante dans le cas des graphes non orientés ; elle est cependant assez commode pour parcourir le graphe. L encombrement de cette représentation est minimal puisqu il correspond exactement à la quantité d information fournie par le graphe.. Matrice d adjacence Les outils classiques d algèbre linéaire peuvent également être utilisés pour coder les graphes. La première idée consiste à considérer chaque arc comme un lien entre deux sommets. Définition 7 Considérons un graphe G = (X, A) comportant n sommets. La matrice d adjacence de G est égale à la matrice U = (u ij ) de dimension n n telle que { si (i, j) A (c est-à-dire (i, j) est une arête) u ij = 0 sinon Une telle matrice, ne contenant que des 0 et des est appelée, de manière générale, une matrice booléenne. Un graphe orienté quelconque a une matrice d adjacence quelconque, alors qu un graphe non orienté possède une matrice d adjacence symétrique. L absence de boucle se traduit par une diagonale nulle. La matrice d adjacence du graphe de la figure 6 est la suivante : U =

12 Ce mode de représentation engendre des matrices très creuses (i.e. comprenant beaucoup de zéros). Cependant la recherche de chemins ou de chaînes s effectue aisément avec une telle représentation (cf 6.). De plus, la matrice d adjacence possède quelques propriétés qui peuvent être exploitées. Considérons un graphe G et sa matrice d adjacence associée U : la somme des éléments de la i eme ligne de U est égale au degré sortant d s (x i ) du sommet x i de G. la somme des éléments de la j eme colonne de U est égale au degré entrant d e (x j ) du sommet x j de G. U est symétrique si, et seulement si, le graphe G est symétrique.. Matrice d incidence La seconde idée permettant une représentation matricielle d un graphe exploite la relation d incidence entre arêtes et sommets. Définition 8 Considérons un graphe orienté sans boucle G = (X, A) comportant n sommets x,..., x n et m arêtes a,..., a m. On appelle matrice d incidence (aux arcs) de G la matrice M = (m ij ) de dimension n m telle que : si x i est l extrémité initiale de a j m ij = si x i est l extrémité terminale de a j 0 si x i n est pas une extrémité de a j Pour un graphe non orienté sans boucle, la matrice d incidence (aux arêtes) est définie par : { si xi est une extrémité de a m ij = j 0 sinon La matrice d incidence du graphe de la figure 6 s écrit sous la forme suivante : M = Etude de la connexité Chaînes et cycles, élémentaires et simples Définition 9 Une chaîne est une séquence finie et alternée de sommets et d arêtes, débutant et finissant par des sommets, telle que chaque arête est incidente avec les sommets qui l encadre dans la séquence. Une arête ne doit pas intervenir plusieurs fois dans la séquence contrairement à un sommet. Le premier et le dernier sommet sont appelés (sommets) extrémités de la chaîne.

13 La longueur de la chaîne est égale au nombre d arêtes qui la composent. Si aucun des sommets composant la séquence n apparaît plus d une fois, la chaîne est dite chaîne élémentaire. Si aucune des arêtes composant la séquence n apparaît plus d une fois, la chaîne est dite chaîne simple. Un cycle est une chaîne dont les extrémités coïncident. Un cycle élémentaire (tel que l on ne rencontre pas deux fois le même sommet en le parcourant) est un cycle minimal pour l inclusion, c est-à-dire ne contenant strictement aucun autre cycle.. Chemins et circuits, élémentaires et simples Toutes les définitions précédentes, s appliquant au cas des graphes non orientés, peuvent être transposées au cas des graphes orientés. Définition 0 Un chemin est une séquence finie et alternée de sommets et d arcs, débutant et finissant par des sommets, telle que chaque arc est sortant d un sommet et incident au sommet suivant dans la séquence (cela correspond à la notion de chaîne orientée ). Si aucun des sommets composant la séquence n apparaît plus d une fois, le chemin est dit chemin élémentaire. Si aucune des arêtes composant la séquence n apparaît plus d une fois, le chemin est dit chemin simple. Un circuit est un chemin dont les extrémités coïncident. En parcourant un circuit élémentaire, on ne rencontre pas deux fois le même sommet.. Graphes et sous-graphes connexes De manière intuitive, la notion de connexité est triviale. Un graphe est connexe si l on peut atteindre n importe quel sommet à partir d un sommet quelconque en parcourant différentes arêtes. De manière plus formelle, on a : Définition Un graphe G est connexe s il existe au moins une chaîne entre une paire quelconque de sommets de G. La relation : x i R x j { soit xi = x j soit il existe une chaîne joignant x i à x j est une relation d équivalence (réflexivité, symétrie, transitivité). Les classes d équivalence induites sur X par cette relation forment une partition de X en X, X,..., X p.

14 Le nombre p de classes d équivalence distinctes est appelé nombre de connexité du graphe. On peut alors donner une autre définition concernant la connexité d un graphe. Un graphe est dit connexe si et seulement si son nombre de connexité est égal à. Les sous-graphes G, G,..., G p engendrés par les sous-ensembles X, X,..., X p sont appelés les composantes connexes du graphe. Chaque composante connexe est un graphe connexe. La vérification de la connexité d un graphe est un des premiers problèmes de la théorie des graphes. Nous décrirons ultérieurement des algorithmes permettant d établir cette connexité. Définition Un point d articulation d un graphe est un sommet dont la suppression augmente le nombre de composantes connexes. Un isthme est une arête dont la suppression a le même effet. Un ensemble d articulation E X d un graphe connexe G est un ensemble de sommets tel que le sous-graphe G déduit de G par suppression des sommets de E, ne soit plus connexe.. Graphes et sous-graphes fortement connexes Définition Un graphe orienté est dit fortement connexe s il existe un chemin joignant deux sommets quelconques. La relation : soit x i = x j x i R x j soit il existe à la fois un chemin joignant x i à x j et un chemin joignant x j à x i est une relation d équivalence et les classes d équivalence induites sur X par cette relation forment une partition de X en X, X,..., X q. Les sous-graphes G, G,..., G q engendrés par les sousensembles X, X,..., X q sont appelés les composantes fortement connexes du graphe. Pour le graphe de la figure 8, les différentes composantes fortement connexes sont : C = {,,,, } C = {6, 7} C = {8} Définition On appelle graphe réduit G r le quotient du graphe G par la relation de forte connexité G r = G/R ; les sommets de G r sont donc les composantes fortement connexes et il existe un arc entre C i et C j si et seulement s il existe au moins un arc entre un sommet de C i et un sommet de C j dans le graphe G. On vérifie que le graphe G r est sans circuit. Le graphe réduit correspondant au graphe de la figure 8 est donné figure 9. La recherche des composantes fortement connexes et la détermination du graphe réduit revêtent une grande importance pour l analyse structurale d un système.

15 7 6 8 Fig. 8 Graphe orienté C C C Fig. 9 Graphe réduit du graphe de la figure 8. Cycles et nombre cyclomatique Les notions de cycle et de cycle élémentaire ont déjà été définies au paragraphe.. Pour un cycle µ donné, on désigne par µ + l ensemble des arcs du cycle orientés dans le sens de parcours et par µ l ensemble des arcs orientés en sens contraire. Si le graphe possède m arcs désignés par a,..., a m, on peut faire correspondre à tout cycle µ un vecteur µ = (µ, µ,..., µ m ) tel que : si a i µ + µ i = si a i µ 0 si a i / µ + µ On remarque que µ est aussi un vecteur associé au cycle µ (obtenu en choisissant l autre sens de parcours). Au signe près, on pourra donc identifier le cycle µ au vecteur µ. Définition On dit que p cycles µ, µ,..., µ p sont dépendants s il existe, entre leurs vecteurs associés, une relation vectorielle de la forme : avec les λ i non tous nuls. λ µ + λ µ λ p µ p = 0 Si la satisfaction de la relation précédente implique λ i = 0, i =,..., p, les p cycles sont dits indépendants.

16 Une base de cycles est un ensemble minimal de cycles indépendants tel que tout vecteur représentatif d un cycle puisse s exprimer comme combinaison linéaire des cycles de la base. On appelle nombre cyclomatique d un graphe G, la dimension de la base de cycles. On peut noter que le nombre cyclomatique v(g) d un graphe à n sommets, m arcs et p composantes connexes est égal à v(g) = m n + p. Parcours eulériens et hamiltoniens L étude des problèmes eulériens ou hamiltoniens (recherche d une chaîne ou d un cycle passant exactement une fois par chaque arête ou par chaque sommet ) remonte aux origines de la théorie des graphes. L intérêt porté aujourd hui à ces problèmes s explique par leurs nombreuses applications : tournées de distribution, tracé automatique sur ordinateur, problèmes d ordonnancement d atelier, etc.. Chaînes et cycles eulériens Il s agit là d une généralisation du jeu bien connu consistant à dessiner toutes les arêtes d un graphe avec un crayon sans jamais le soulever, ni passer deux fois sur la même arête. Définition 6 Soit G = (X, A) un graphe orienté. Une chaîne eulérienne est une chaîne empruntant une fois et une fois seulement chaque arête de G. Un cycle eulérien est une chaîne eulérienne dont les extrémités coïncident. Un graphe possédant un cycle eulérien est appelé graphe eulérien. Le problème de l existence et de la détermination d un cycle eulérien (d une chaîne eulérienne) dans un graphe non orienté a été posé la première fois et résolu par Euler en 76 à propos du célèbre problème des ponts de Königsberg évoqué au premier paragraphe. Euler prouva l impossibilité de l obtention d une solution en démontrant le théorème suivant : Théorème Un graphe non orienté connexe possède une chaîne eulérienne si et seulement si le nombre de sommets de degré impair est égal à 0 ou. Il admet un cycle eulérien si et seulement si tous ses sommets ont un degré pair. Montrons que la condition est nécessaire. Si le cycle eulérien existe, on peut l orienter de manière arbitraire. En chaque sommet, le nombre d arcs incidents doit être égal au nombre d arcs sortants, les sommets doivent donc être de degré pair. Dans le cas d une chaîne, les deux extrémités font exception ; on part ou l on arrive une fois de plus, d où un degré impair pour ces 6

17 deux sommets extrémités. Montrons maintenant que la condition est suffisante. Raisonnons par récurrence en supposant que le théorème est vérifié pour des graphes connexes ayant moins de m arêtes. Soit G = (X, A) un graphe de m arêtes vérifiant la condition du théorème. Si G possède deux sommets de degré impair, soient a et b ces sommets (si tous les sommets de G sont de degré pair, on choisit a quelconque et b confondu avec a). Soit L la chaîne parcourue par un voyageur partant de a dans une direction quelconque et seulement soumis à l interdiction d emprunter deux fois la même arête. Si, à un instant donné, il arrive en un sommet x b, il aura utilisé un nombre impair d arêtes incidentes à x et il pourra donc repartir par une arête non déjà utilisée. Quand il ne peut plus bouger, c est donc qu il est en b. Si toutes les arêtes ont été utilisées, L est une chaîne eulérienne et le théorème est vrai. Dans le cas contraire, le graphe partiel, défini par les arêtes non utilisées, a tous ses sommets de degré pair (de part la nature des suppressions effectuées). Soient G, G,..., G p les composantes connexes de G qui comportent au moins une arête. Chacun des sous graphes G i possède moins de m arêtes et d après l hypothèse de récurrence, il admet un cycle eulérien µ i. Comme G est connexe, L rencontre successivement G, G,..., G p en les sommets x, x,..., x p. Le parcours alors constitué par : la chaîne L entre a et x, le cycle µ entre x et x, la chaîne L entre x et x, le cycle µ entre x et x,... la chaîne L entre x p et b. constitue bien une chaîne eulérienne entre a et b dans G. Le théorème est donc vrai à l ordre m. Comme il est vrai à l ordre, il est démontré pour tout m. Le problème d Euler peut aussi être considéré avec des sens uniques. Définition 7 Un chemin dans un graphe orienté est dit eulérien s il passe exactement une fois par chaque arête. Un graphe orienté est dit eulérien s il admet un circuit eulérien. La démonstration précédente peut aisément être adaptée à cette nouvelle situation. Théorème Un graphe orienté connexe admet un chemin eulérien (mais pas de circuit eulérien) si, et seulement si, pour tout sommet sauf deux (a et b), le degré entrant est égal au degré sortant et d e (a) = d s (a) et d e (b) = d s (b) + Un graphe orienté connexe admet un circuit eulérien si, et seulement si, pour tout sommet, le degré entrant est égal au degré sortant. Parmi les problèmes prototypes classiques des formulations précédentes, citons le problème du postier chinois (non orienté) qui consiste à parcourir les rues d une ville en passant au moins 7

18 une fois dans chaque rue, le graphe n étant pas nécessairement eulérien ; on cherche bien sûr à minimiser la longueur totale du parcours. On rencontre ce genre de problème dans les organisations de tournées de distribution de courrier, de ramassage d ordures, d inspection de réseaux de distribution. Dans le cas orienté où chaque arc doit être emprunté dans un sens privilégié, le problème se ramène à la recherche d un flot à coût minimum (cf. 8.). Il s agit d abord de savoir si le parcours chinois a au moins une solution. Nous énonçons ici sans démonstration les résultats suivants. Théorème Un graphe non orienté admet un cycle chinois si, et seulement si, il est connexe. Un graphe orienté admet un circuit chinois si, et seulement si, il est fortement connexe. La résolution du problème du postier chinois peut s inspirer des méthodes de recherche de chaînes ou cycles eulériens. Cependant, on préfèrera formuler le problème en termes de couplage parfait de poids minimum (cf. 9.). Chaînes et cycles hamiltoniens Soit G = (X, A) un graphe connexe d ordre n. Définition 8 On appelle chemin hamiltonien (chaîne hamiltonienne) un chemin (une chaîne) passant une fois, et une fois seulement, par chacun des sommets de G. Un chemin hamiltonien (une chaîne hamiltonienne) est donc un chemin (une chaîne) élémentaire de longueur n. Un circuit hamiltonien (un cycle hamiltonien) est un circuit (un cycle) qui passe une fois, et une seule fois, par chacun des sommets de G. On dit qu un graphe G est hamiltonien s il contient un cycle hamiltonien (cas non orienté) ou un circuit hamiltonien (cas orienté). La notion de cycle hamiltonien trouve son origine dans le jeu inventé par Hamilton que nous avons évoqué au premier paragraphe. De nombreux problèmes concrets peuvent être formulés en termes de recherche de parcours hamiltoniens. On peut en particulier citer le problème du voyageur de commerce. Un représentant de commerce doit rendre visite à n clients x, x,..., x n en partant d une ville x 0 et revenir à son point de départ. Il connaît les distances d 0j qui séparent le dépôt x 0 de chacun de ses clients x j, ainsi que la distance d ij entre deux clients quelconques x i et x j. Dans quel ordre doit-il rendre visiste à ses clients pour que la distance totale parcourue soit minimale? Ce problème revient à chercher un cycle hamiltonien de longueur totale minimale dans le graphe complet G construit sur l ensemble des sommets X = {x 0, x,..., x n }, les 8

19 arêtes étant munies des longueurs d ij. Lorsque le point d arrivée est différent du point de départ, le problème revient à rechercher une chaîne hamiltonienne de longueur totale minimale. Un autre problème classique concerne l ordonancement de tâches. On cherche un ordre dans lequel on peut effectuer n tâches données (deux tâches quelconques ne pouvant être effectuées simultanément) tout en respectant un certain nombre de contraintes d antériorité. Si l on construit le graphe G dont l ensemble des sommets correspond à l ensemble des tâches, et où il existe un arc (i, j) si la tâche i peut être effectuée avant la tâche j, le problème revient à déterminer un chemin hamiltonien de G. D autres problèmes concrets peuvent se ramener également à la problématique précédente. On appelle cycle (circuit) préhamiltonien d un graphe G, un cycle (un circuit) passant au moins une fois par chaque sommet de G. Un graphe G qui admet un tel cycle (ou circuit) est appelé graphe préhamiltonien et une condition nécessaire et suffisante pour qu il en soit ainsi est que G soit connexe (fortement connexe). La recherche d un cycle (circuit) préhamiltonien de longueur minimale dans un graphe G où les arêtes (arcs) ont des longueurs données se ramène à un problème de recherche de cycle (circuit) hamiltonien dans le graphe complet G construit sur le même ensemble de sommets, la longueur d une arête (arc) (i, j) de G étant égale à la longueur de la plus courte chaîne (chemin) entre i et j. De nombreux problèmes du type voyageur de commerce sont en réalité des problèmes préhamiltoniens et, pour les résoudre, on commencera par calculer la matrice des plus courts chemins (des plus courtes chaînes). Notons que l on ne connaît pas de condition nécessaire et suffisante d existence de cycles ou de circuits hamiltoniens. 6 Méthode de recherche de chemins 6. Rappel sur les opérations booléennes sur les matrices Rappelons brièvement les deux opérations d addition et de multiplication booléenne notées et. Les variables A et B sont booléennes et prennent donc leur valeur dans {0, } A B A B A B Avant de procéder à la recherche systématique de chemins, examinons, de façon générale, la signification des opérations sur les matrices d adjacence en termes de graphes. 9

20 Addition booléenne des matrices Soient deux graphes G et G, possédant les mêmes sommets, et leurs matrices d adjacence associées U et U de dimension n n. Calculons U = U U telle que : (U ) ij = (U ) ij (U ) ij Chaque élément non nul de U représente, par définition, un arc de G décrit par la matrice U. Pour qu un élément de U soit non nul, il faut que l un au moins des éléments correspondants de U ou U soit non nul. On conclut donc que cette opération revient à construire un graphe G comportant à la fois les arcs de G et ceux de G. Multiplication booléenne des matrices Considérons de nouveau les deux graphes G et G précédents et calculons U = U U telle que : (U ) ij = (U ) i (U ) j (U ) i (U ) j... (U ) in (U ) nj Pour que (U ) ij soit égal à, il faut qu il existe au moins un indice k tel que simultanément les éléments (U ) ik et (U ) kj soit égaux à. Cela revient à construire un graphe G dans lequel un arc (i, j) existe si et seulement s il existe un sommet k tel que (i, k) soit un arc de G et (k, j) un arc de G. 6. Recherche de chemins Soit U la matrice d adjacence associée au graphe G. Par définition, U ij = indique l existence d un chemin de longueur entre les sommets i et j. Multiplions U par elle-même, soit U = U U et considérons le graphe G associé à U. Chaque arc (i, j) de G exprime l existence d un chemin de longueur du sommet i au sommet j. En effet, d après l interprétation précédente, (i, j) existe si et seulement s il existe un sommet k tel que (i, k) et (k, j) sont des arcs de G. Démontrons par récurrence que, plus généralement, U p donne l existence des chemins de longueur p. Soit un graphe possédant n sommets et U sa matrice d adjacence associée. Admettons la propriété pour p et démontrons la pour p. Un chemin de longueur p entre les sommets i et j peut se décomposer en un chemin de longueur p entre les sommets i et k auquel on ajoute l arc (k, j). L existence du chemin entre les sommets i et k est donnée, par hypothèse, par l élément (U p ) ik, celle de l arc (k, j) par U kj. L existence d un chemin joignant les sommets i et j et passant par le sommet k est donc donnée par (U p ) ik U kj. Or, le sommet k est quelconque et peut être l un des n sommets du graphe. L existence d un chemin entre les sommets i et j s écrit donc : C ij = ( U p ) i U j ( U p ) i U j... ( U p ) in U nj L expression de C ij est, par définition, celle donnée pour calculer l élément (U p ) ij. Comme nous l avons vérifiée pour p =, la propriété est vraie quel que soit p. Remarquons que pour un graphe à n sommets, un chemin élémentaire comprend au plus n arcs. Il suffit donc, pour avoir l existence de tous les chemins, d élever successivement la matrice U jusqu à la puissance n. De plus, si deux matrices successives ainsi calculées sont identiques, il est inutile de poursuivre le calcul jusqu à la puissance n. 0

21 6. Le problème du plus court chemin Le problème de la recherche du plus court chemin dans un graphe se rencontre dans de nombreuses applications. On peut citer entre autres : les problèmes de tournées, certains problèmes d investissement et de gestion de stocks, les problèmes de programmation dynamique à états discrets et temps discret, les problèmes d optimisation de réseaux (routiers, télécommunications), certaines méthodes de traitement numérique du signal, de codage et de décodage de l information, les problèmes de labyrinthe et de récréations mathématiques. Le problème considéré se formule ainsi. Etant donné un graphe orienté G = (X, A), on associe à chaque arc a A un nombre l(a) R appelé longueur de l arc. On dit alors que G est valué par les longueurs l(a). Si a = (i, j), on utilisera également la notation l ij pour la longueur de l arc a. Le problème du plus court chemin entre deux sommets i et j sera de trouver un chemin µ(i, j) de i et j dont la longueur totale l(µ) = a µ(i,j) l(a) soit minimum. Ce problème a de nombreuses applications pratiques car la longueur l(a) peut s interpréter aussi bien comme un coût de transport sur l arc a, comme les dépenses de construction de l arc a, comme le temps nécessaire pour parcourir l arc a, etc. Selon les propriétés du graphe traité (les longueurs sont quelconques, positives ou toutes égales, le graphe est quelconque ou sans circuit) et selon le problème considéré (recherche du plus court chemin d un sommet à un autre, ou d un sommet à tous les autres, ou entre tous les couples de sommets) il existe de nombreux algorithmes permettant l obtention d une solution. Nous nous contenterons simplement ici de décrire les algorithmes les plus classiques, sans explorer toutes les situations. Dans beaucoup de situations, les longueurs sont positives. On utilisera alors l algorithme de Moore-Dijkstra pour calculer le plus court chemin d un sommet (arbitrairement le sommet numéro ) à tous les autres. Posons X = {,,..., n}. Soit l ij la longueur de l arc (i, j) si (i, j) A. Définissons π (i) comme la longueur minimum des chemins du sommet au sommet i ; en particulier π () = 0. L algorithme procède en n itérations. Au début de chacune des itérations, l ensemble des sommets est partitionné en deux sous-ensembles S et S = X\S. Le sous-ensemble S (initialisé à {}) contient les sommets définitivement marqués, c est-à-dire les sommets pour lesquels la marque π(i) représente effectivement la longueur du plus court chemin entre le sommet et le sommet i. Le complémentaire S contient tous les sommets ayant une marque provisoire définie par : k S : π(k) = min i S Γ k (π(i) + l ik ) On démontre alors aisément qu à une étape quelconque si j est le sommet de marque provisoire π(j) minimale c est-à-dire : π(j) = min (π(k)) k S

22 alors π(j) = π (j), c est-à-dire que le sommet j peut être inclus dans l ensemble S des sommets définitivement marqués (et, bien sûr, enlevé de S). On mettra donc à jour l ensemble S en incluant j (S S {j}) ainsi que les marques provisoires des sommets k de S reliés par un arc (j, k). Ceci se fera en considérant successivement tous les sommets k Γ(j) S et en remplaçant π(k) par π(j) + l jk chaque fois que π(j) + l jk < π(k). Si l on souhaite déterminer explicitement le plus court chemin, et non pas seulement sa longueur, on conservera, dans un tableau de prédécesseurs, l information selon laquelle le prédécesseur de k est j. Algorithme (Moore-Dijkstra) Recherche du plus court chemin entre deux sommets dans un graphe à longueurs positives. (a) - Initialisations S = {,,..., n} π() = 0 { li si i Γ() π(i) = + sinon (b) - Sélectionner j tel que π(j) = min (π(k)) k S Faire S S\{j} Si S = alors FIN (c) - Faire pour tout i S Γ(j) π(i) min (π(i), π(j) + l ji ) Retourner en (b) On trouvera en annexe A, un programme Matlab r implémentant cet algorithme. Sous Scilab c, la commande relative à la recherche du plus court chemin entre deux sommets se nomme shortest path. Considérons, à titre d exemple, le graphe de la figure 0. Les itérations de l algorithme précédent sont les suivantes : (a) S = {,,,, 6}, π() = 0, π() = 7, π() =, π() = π() = π(6) = (b) j =, S = {,,, 6} (c) S Γ() = {,, 6}, π() = min(7, + ) = 6, π() = min(, + ) =, π(6) = min(, + 7) = 8 (b) j =, S = {,, 6} (c) S Γ() = {, }, π() = min(6, + ) =, π() = min(, + ) = 8 (b) j =, S = {, 6} (c) S Γ() = {, 6}, π() = min(8, + ) = 8, π(6) = min(8, + ) = 6 (b) j = 6, S = {} (c) S Γ() = (b) j =, S =

23 7 7 6 Fig. 0 Graphe orienté Les longueurs des plus courts chemins seront donc : π() = 0, π() =, π() =, π() = 8, π() = et π(6) = 6 On peut également s intéresser à la détermination des plus courts chemins entre toutes les paires de sommets (on se place toujours dans la situation où les longueurs sont toutes positives). On peut, bien sûr, utiliser l algorithme précédent, mais son efficacité est faible devant ce type de problème. On préfèrera un algorithme se rattachant aux méthodes matricielles. L algorithme de Floyd que nous allons présenter est particulièrement simple dans sa mise en œuvre. Notons L = (l ij ) la matrice n n dont le terme (i, j) est égal à la longueur de l arc (i, j) si (i, j) A et + sinon (pour les termes diagonaux, on pose l ii = 0). Pour k n, notons L (k) = (l (k) ij ) la matrice dont le terme (i, j) représente la longueur minimale d un chemin d origine i et d extrémité j, et astreint à la condition que tous les sommets intermédiaires appartiennent au sous-ensemble {,,..., k}. Pour k = 0, on a L (0) = L, puisque l ij est la longueur du chemin direct (unique) entre i et j (sans sommet intermédiaire). On remarque alors que les matrices L (k) sont liées par la relation de récurrence : ( ) l (k) ij = min l (k ) ij, l (k ) ik + l (k ) kj En effet, deux situations peuvent se produire suivant que le plus court chemin de i à j à sommets intermédiaires dans {,,..., k} emprunte le sommet k ou non. Dans le premier cas, ce chemin est formé d un sous-chemin entre i et k, suivi d un sous-chemin entre k et j, chacun ne pouvant utiliser comme sommets intermédiaires que des sommets de {,,..., k } et devant être de longueur minimale. On doit donc avoir l (k) ij = l (k ) ik +l (k ) kj. Dans le second cas, on doit évidemment avoir l (k) ij = l (k ) ij. La matrice L (n), donnant l ensemble des valeurs des plus courts chemins dans le graphe, pourra donc être déterminée en n étapes de récurrence à partir de la relation précédente.

24 Algorithme (Floyd) Recherche de la matrice des plus courts chemins dans un graphe à longueurs positives. Pour k de à n Pour tout i et j de à n faire l ij = min (l ij, l ik + l kj ) Comme pour l algorithme précédent, si l on souhaite, en plus de la longueur des chemins, exhiber explicitement le chemin, on mettra à jour, au fûr et à mesure de l introduction d un nouveau sommet k, une matrice de prédécesseurs. Un programme Matlab r implémentant cet algorithme est donné en annexe B. 7 Arbres et arborescences 7. Définitions et propriétés Définition 9 Un arbre est un graphe connexe sans cycles. Un graphe sans cycle qui n est pas connexe est appelé une forêt (chaque composante connexe est un arbre). Par définition même, un arbre est donc un graphe simple. On constate également que T = (X, T ) est un arbre si et seulement s il existe une chaîne et une seule entre deux sommets quelconques. Etant donné un graphe quelconque G = (X, A) un arbre de G est un graphe partiel connexe et sans cycles. Si ce graphe partiel inclut tous les sommets du graphe G, l arbre est appelé arbre maximum ou arbre couvrant. Une forêt de G est un graphe partiel sans cycle de G (non nécessairement connexe). Une forêt maximale de G est une forêt de G maximale pour l inclusion (l ajout d une seule arête supplémentaire du graphe à cette forêt crée un cycle). Considérons un graphe G = (X, A) comportant n sommets, m arcs et p composantes connexes ; l algorithme suivant permet de construire une forêt maximale de G. Initialement, tous les arcs du graphe sont incolores. La méthode consiste à examiner successivement tous les arcs du graphe (dans n importe quel ordre) et à les colorer soit en rouge soit en vert. A une étape quelconque, G c est le graphe partiel engendré par les arcs colorés (rouges ou verts) et G r le graphe partiel engendré par les arcs rouges. Chaque fois qu un nouvel arc a incolore est examiné : soit il passe par a un cycle élémentaire µ dont tous les arcs (autres que a) sont rouges ; on colore alors l arc en vert, le nombre de connexité de G c et de G r reste constant, soit un tel cycle n existe pas, auquel cas l arc a permet de connecter deux sommets qui n étaient pas encore connectés dans G c ; on colore l arc a en rouge, le nombre de connexité de G c et de G r décroît de.

25 Pour montrer que le graphe partiel G r obtenu est bien une forêt maximale de G, il suffit d observer qu à tout instant, le graphe G r est sans cycle (c est donc bien une forêt de G) ; à la fin de la procédure, elle est bien maximale pour l inclusion car, en ajoutant un arc vert quelconque à G r, on crée un cycle. On peut également facilement démontrer les propriétés suivantes : Si G possède n sommets et p composantes connexes, une forêt maximale de G comporte exactement n p arcs. Soit T = (X, T ) une forêt maximale de G = (X, A). Alors T et G ont le même nombre de connexité. Soit T = (X, T ) une forêt maximale de G = (X, A). Alors, par tout arc a T = A T, il passe un cycle et un seul µ a dont tous les arcs (autres que a) appartiennent à T. Cette dernière propriété est importante car elle permet de construire une base de cycles d un graphe G (voir.). Soit un graphe G = (X, A) comportant n sommets, m arcs et p composantes connexes. Soit T = (X, T ) une forêt maximale de G = (X, A) et pour a T = A T, notons µ a le cycle (unique) contenu dans T + {a}. Les cycles {µ a } forment une base de cycles du graphe G, dont la dimension est le nombre cyclomatique de G. La notion d arborescense est l adaptation de la structure d arbre aux -graphes orientés. Définition 0 Un graphe G est une arborescence s il existe un sommet R appelé racine de G tel que, pour tout sommet S de G, il existe un chemin et un seul de R vers S. La notion d arborescence couvrante se définit comme celle d arbre couvrant, mais elle est plus délicate car il faut trouver une racine (qui n existe pas toujours). 7. Arbres couvrants de poids minimum Considérons le problème qui consiste à relier n villes par un réseau cablé de la manière la plus économique possible. On suppose connue la longueur l ij = l(a ij ) la longueur de câble nécessaire pour relier les villes i et j. Le réseau doit évidemment être connexe et il ne doit pas admettre de cycles pour être de coût minimal ; c est donc un arbre et ce doit être l arbre maximum le plus économique. Le problème à résoudre se pose donc dans les termes suivants : Définition Soit un graphe non orienté G, connexe, pondéré par une fonction positive l attachée aux arêtes. Soit un arbre couvrant T = (X, B) défini comme graphe partiel de G avec un ensemble d arêtes B. Son poids (ou coût) total est :

26 l(t ) = l(a) a B On dit que T est un arbre couvrant de poids minimal de G si l(t ) est minimal parmi les poids de tous les arbres couvrants possibles de G. On peut montrer que si toutes les arêtes sont de poids différents, l arbre couvrant de poids minimal est unique. Plusieurs algorithmes ont été proposés pour résoudre ce problème. Les plus simples sont les algorithmes de Prim et de Kruskal. L algorithme de Prim consiste à bâtir progressivement un arbre à partir d un sommet quelconque (arbitrairement le sommet numéro ) et en y greffant, à chaque étape, l arête de poids minimal parmi celles qui permettent de maintenir un graphe partiel qui soit un arbre. Si le graphe est connexe, le processus s arrête avec un arbre couvrant. Sinon, il aboutit à un arbre couvrant pour une composante connexe ; on poursuit avec les autres composantes connexes pour obtenir une forêt couvrante. Plus précisément, on construit progressivement, à partir du sommet numéro, un sousensemble de sommet S X contenant {} et un sous-ensemble T A tel que le graphe partiel (S, T ) soit un arbre de poids minimal du sous-graphe engendré par S. Pour cela, à chaque étape, on sélectionne dans le cocycle : ω(s) = {(k, l) (k, l) A, k S, l X\S} l arête de poids minimal, soit a = (i, j). Les sous-ensembles S et T sont alors augmentés en leur ajoutant le sommet j et l arête a respectivement : S S {j}, T T {a}. La mise en œuvre de cet algorithme peut se faire aisément à l aide d une procédure de marquage de la façon suivante. On associe, à chaque sommet i, un nombre réel π(i) appelé marque du sommet i. A une étape quelconque, la marque π(i) d un sommet i X\S représente le poids de l arête de poids minimal dans l ensemble des arêtes joignant i à S. D autre part, on conserve dans un tableau α l indice α(i) de l arête ayant permis d attribuer au sommet i, la marque π(i). Ces informations permettent aisément d obtenir, à l étape courante, l arête de poids minimal dans le cocycle ω(s) : il suffit en effet de déterminer le sommet i X\S ayant une marque minimale et l arête cherchée est α(i). Par ailleurs, lorsque le sous-ensemble S est augmenté du sommet i, les marques sont mises à jour en examinant toutes les arêtes issues de i et dont l autre extrémité j ne fait pas encore partie de l arbre (j X\S) et en effectuant la substitution π(j) min(π(j), l ij ). Chaque fois qu une marque est améliorée, le tableau α est mis à jour. Si le graphe est connexe, l algorithme s arrête lorsque S = X (tous les sommets ont été intégrés à l arbre). Les éléments du tableau α représentent alors les indices des arêtes constituant l arbre couvrant de poids minimal. Algorithme (Prim) Recherche d un arbre couvrant de poids minimal. (a) - Initialisations π() = 0 π(i) =, i {,,..., n} α(i) =, i {,,..., n} S = 6

27 (b) - Sélectionner i tel que π(i) = min j X\S (π(j)) Si π(i) = ou S = X alors FIN S S {i} (c) - Pour toutes les arêtes a = (i, j) telles que j X\S faire Si l ij < π(j) alors π(j) = l ij, α(j) = a Retourner en (b) L annexe C présente une implémentation Matlab r de cet algorithme et les résultats obtenus sur un exemple. Le problème de l optimisation du choix d une arborescence couvrante est plus difficile que pour les arbres couvrants parce qu il faut vérifier que le sommet choisi au départ est bien racine de l arbre. Plusieurs algorithmes ont été développés pour résoudre ce problème ; nous ne les décrirons pas ici. 8 Réseaux, réseaux de transport et problèmes de flots 8. Définitions Définition Un graphe fortement connexe, sans boucle et ayant plus d un sommet, est appelé un réseau. On appelle nœud d un réseau un sommet qui a plus de deux arcs incidents. Les autres sommets sont appelés antinœuds. On appelle branche tout chemin pour lequel seuls les premiers et derniers sommets sont des nœuds. Dans un graphe orienté G, un flot est l affectation d une valeur réelle à chaque arc de G, représentant une quantité transportée sur cet arc, de telle sorte que, en chaque sommet, la somme des flots entrants soit égale à la somme des flots sortants (loi de Kirchhoff : conservation des flux en chaque sommet). Parmi les problèmes les plus classiques, on peut citer celui de la recherche d un flot maximal. On se donne une capacité maximale sur chaque arc qui sera une borne supérieure du flot autorisé sur cet arc. Le problème du flot maximal consiste à déterminer un flot dont la valeur en un certain lieu est maximale. On peut, de plus, se donner un coût de transport d une unité de flot sur chaque arc et chercher le flot maximal de coût minimal. Définition On appelle réseau de transport un graphe orienté antisymétrique valué G = (X, A, C), sans boucle et dans lequel il existe : un sommet x sans prédécesseur (c est-à-dire Γ (x ) = ) nommé entrée ou source du réseau, un sommet x n sans successeur (c est-à-dire Γ(x n ) = ) nommé sortie ou puits du réseau, 7

28 et tel qu au moins un chemin unisse x à x n dans G. La fonction de pondération C est supposée positive et l on nomme capacité de l arc a le nombre C(a). Définition Si l on désigne par A x l ensemble des arcs sortants du sommet x et A + x l ensemble des arcs entrants de ce même sommet x, on dit qu une fonction ϕ(a) définie sur A et à valeurs réelles est un flot pour le réseau de transport si : il est positif : ϕ(a) > 0, a A, il vérifie la loi des nœuds de Kirchhoff : ϕ(a) ϕ(a) = 0, x x et x x n a A x a A + x il ne dépasse pas la capacité des arcs : ϕ(a) C(a), a A. Si x n est ni x ni x n, la quantité entrante en x doit être égale à la quantité sortante que nous désignons par ϕ x : ϕ x = ϕ(a) = ϕ(a) a A x Si ϕ est un flot sur un réseau de transport G, alors on a ϕ x = ϕ xn ; cette quantité s appelle la valeur du flot. La principale question qui se pose pour un réseau de transport donné est de déterminer un flot de valeur maximale ainsi que les flots le long de chaque arc. Il arrive fréquemment également que l on doive considérer des réseaux avec des capacités localisées non seulement sur les arêtes mais également sur les sommets. C est notamment le cas pour les réseaux téléphoniques pour lesquels la limite de capacité est autant due aux lignes qu aux centraux. On peut ramener aisément ce problème au précédent ; il suffit de dédoubler chaque sommet en une entrée et une sortie liées par un arc ayant pour capacité celle qu on attribuait précédemment au sommet. Dans ce qui suit, les valeurs des flots et des capacités sont considérées comme entières. Si l on ne peut pas se ramener directement à cette situation, on approche les valeurs réelles par des rationnels, on réduit ces nombres au même dénominateur commun d et l on choisit comme unité de référence /d. 8. Recherche d un flot complet Définition Pour un flot ϕ dans un réseau de transport G = (X, A, C), on dit qu un arc est saturé si on a ϕ(a) = C(a). a A + x Le flot est dit complet si tout chemin allant de x à x n contient au moins un arc saturé. Si l on considère le graphe partiel engendré par les arcs non saturés par le flot et si le flot n est pas complet, il existe nécessairement un chemin µ allant de l entrée à la sortie. On peut alors définir un nouveau flot pour le réseau en augmentant de le flot de chacun des arcs constituant le chemin µ ; la valeur du flot est alors également augmentée de. On peut donc progressivement 8

29 augmenter la valeur d un flot incomplet jusqu à ce qu il soit complet. En tenant compte des différences entre les capacités et la valeur du flot sur les arcs de µ, on peut connaître d avance l augmentation possible du flot. Cependant, le flot complet ainsi obtenu n est pas, en général, le flot maximal. 8. Amélioration du flot Soit ϕ un flot complet. On va utiliser une procédure itérative pour identifier et marquer tous les sommets du graphe où il est possible de faire transiter une unité de flot supplémentaire. On définit un processus d étiquetage de certains sommets du graphe. En x, on place une étiquette +. Soit x un sommet déjà marqué : on marque avec une étiquette +x tout successeur y non marqué de x pour lequel le flot n est pas à son maximum ((x, y) A et ϕ(x, y) < C(x, y)). on marque avec une étiquette x tout prédécesseur y non marqué de x pour lequel le flot n est pas nul ((x, y) A et ϕ(y, x) > 0). L étiquette a pour rôle de donner le nom d un prédécesseur ou d un successeur d un sommet donné en indiquant si le flot peut être augmenté dans le sens de parcours (étiquette +x ) ou diminué s il est dans le sens contraire (étiquette x ). Si l on parvient jusqu au marquage du sommet x n avec cette procédure, c est qu il existe une chaîne µ de x à x n dont tous les sommets sont marqués avec l indice du sommet précédent au signe près. Notons que l on est pas obligé de marquer tous les sommets (tous les successeurs ou prédécesseurs d un sommet donné) ; l objectif étant simplement d élaborer une chaîne marquée de x à x n. Soit alors : ϕ (a) = ϕ(a) si a / µ ϕ (a) = ϕ(a) + si a µ et si a est orientée dans le sens de µ ϕ (a) = ϕ(a) si a µ et si a est orientée dans le sens contraire de µ On vérifie aisément que ϕ est encore un flot. Comme ϕ x n = ϕ xn +, la valeur du flot ϕ est supérieure, donc meilleure que celle de ϕ. On peut alors systématiser l idée précédente en introduisant la notion de graphe d écart ou réseau résiduel. Définition 6 Soit un réseau de transport G = (X, A, C) possédant un flot complet ϕ. On appelle graphe d écart ou réseau résiduel, le réseau Ḡ(ϕ) = (X, A, C) tel que : si a A et ϕ(a) < C(a) alors a A et C(a) = C(a) ϕ(a) si a = (x, y) A et ϕ(a) > 0 alors a = (y, x) A et C(a ) = ϕ(a) Le réseau résiduel indique le long de quels arcs on peut augmenter ou diminuer le flot. L intérêt du graphe d écart apparaît dans le théorème suivant. 9

30 Théorème Soit ϕ un flot de G (de x à x n ) et Ḡ(ϕ) le réseau résiduel associé à ϕ. Une condition nécessaire et suffisante pour que le flot ϕ soit maximal est qu il n existe pas de chemin de x à x n dans Ḡ(ϕ). La démonstration de ce théorème s appuie sur le lemme des arcs colorés de Minty que nous ne détaillerons pas ici. 8. Recherche d un flot maximal : algorithme de Ford et Fulkerson A partir des résultats précédents, on peut maintenant proposer une méthode constructive de recherche d un flot maximal. Algorithme (Ford et Fulkerson) Recherche d un flot maximum. (a) - Itération k = 0 Partir d un flot initial ϕ 0 (compatible avec les contraintes de capacité), par exemple ϕ 0 = (0, 0,..., 0). (b) - A l itération k, soit ϕ k le flot courant. Rechercher un chemin µ k de x à x n dans le graphe d écart Ḡ(ϕk ). S il n en existe pas, FIN : le flot ϕ k est maximal. (c) - Soit ε k la capacité résiduelle du chemin µ k (minimum des capacités résiduelles des arcs du chemin). Définir le flot ϕ k+ par : { ϕ k+ a = ϕ k a + ε k si a µ et si a est orientée dans le sens de µ ϕ k+ a = ϕ k a εk si a µ et si a est orientée dans le sens contraire de µ Faire k k + et retourner en (b). Par définition du graphe d écart, les flots ϕ k sont tous compatibles avec les capacités. Par ailleurs, ε k est positif à chaque itération et, par suite, l algorithme produit une séquence de flots compatibles de valeurs strictement croissantes. A chaque étape, la méthode consiste donc à rechercher une chaîne joignant x à x n. Il est évident que le choix d une telle chaîne n est pas unique. Plusieurs travaux ont tenté de systématiser ce choix afin d améliorer les performances moyennes de l algorithme. 8. Exemple traité manuellement On considère le graphe de la figure (les nombres associés aux arcs représentent les capacités), pour lequel on cherche à déterminer un flot maximal entre le sommet et le sommet 7. Toutes les composantes du flot initial sont considérées nulles ϕ 0 = (0, 0,..., 0) (figure a) ; le graphe d écart Ḡ(ϕ0 ) est représenté figure b. Le chemin choisi est tracé en pointillés, sa capacité résiduelle vaut ε = min(,, 7) =. On augmente donc de quatre le flot sur les arcs composant le chemin (ils sont tous orientés 0

31 Fig. Graphe orienté élémentaire Fig. Flot initial et graphe d écart positivement). On obtient un nouveau flot ϕ, ainsi que son graphe d écart Ḡ(ϕ ), tous deux représentés aux figures a et b Fig. Flot à l itération numéro et graphe d écart Le nouveau chemin est toujours représenté en traits pointillés. Cette fois, sa capacité résiduelle vaut ε = min(,, ) =. Le nouveau flot ϕ et le graphe d écart correspondant sont donnés à la figure. En poursuivant ainsi l algorithme, on obtient les situations décrites aux figures et 6. Après l itération numéro, on constate qu il n existe plus de chemin joignant le sommet au sommet 7 dans le graphe d écart. L algorithme s achève donc et le flot maximal est celui obtenu lors de cette dernière étape ϕ = ϕ 7 = 9.

32 Fig. Flot à l itération numéro et graphe d écart Fig. Flot à l itération numéro et graphe d écart Fig. 6 Flot à l itération numéro et graphe d écart Notons également que l algorithme peut être adapté au cas où les capacités des arcs ont des bornes inférieures non nulles (positives, voire même négatives). En pratique, on associe à la plupart des réseaux de transport, une notion de coût unitaire du transport qui se traduit par l association, à chaque arc a du réseau, d un nombre réel w(a) représentant ce coût unitaire. Le coût total d un flot ϕ est défini comme la somme des coûts associés aux flots élémentaires : W (ϕ) = a A w(a)ϕ(a) On peut alors se poser le problème consistant à rechercher, parmi les flots à valeur maximale, celui qui est à coût minimal. L algorithme de Ford et Fulkerson peut également être adapté à cette situation.

33 8.6 Recherche d un flot maximal à coût minimal La recherche d un flot maximal à coût minimal peut être résolue à l aide de l algorithme de Busacker-Gowen qui permet de déterminer la famille complète de tous les flots de coût minimal d un sommet x à un sommet x n et de valeur ϕ =,,..., v. Nous énonçons ici cet algorithme itératif sous forme littérale et laissons le soin au lecteur d en effectuer une description plus informatique. A l itération numéro k, le flot courant ϕ k est supposé être un flot de valeur ϕ k 0 minimal parmi l ensemble de tous les flots de valeur ϕ k 0. et de coût Soit Ḡ(ϕk ) le graphe d écart relatif à ϕ k ; on attribue aux arcs de Ḡ(ϕk ) les coûts w et les capacités c suivantes : si a = (x i, x j ) A et ϕ(a) < c(a), l arc a + = (x i, x j ) a un coût w(a) = w(a) et une capacité c(a) = c(a) ϕ(a) > 0, si a = (x i, x j ) A et ϕ(a) > 0, l arc a = (x j, x i ) a un coût w(a) = w(a) et une capacité c(a) = ϕ(a). Soit alors µ k un chemin de coût minimal relativement aux coûts w entre x et x n sur le graphe d écart Ḡ(ϕk ) ; on note ɛ k la capacité résiduelle de ce chemin. On définit alors le flot ϕ k+ comme dans l algorithme de Ford-Kulkerson. Si µ est le vecteur associé au chemin µ k (c est-à-dire tel que µ a = si a + µ k et µ a = si a µ k ), on a ϕ k+ = ϕ k + ɛ k µ et le flot ϕ k+ est un flot de coût minimal de valeur ϕ k 0 + ɛk. On notera qu à chaque itération, on doit rechercher le plus court chemin (au sens du chemin de coût minimal) de x à x n dans un graphe où la longueur (le coût) des arcs peut être négative ; il conviendra donc d employer un algorithme adapté à cette situation (l algorithme de Dijkstra ne convient pas). Il existe cependant une amélioration de cet algorithme proposée par Edmonds et Karp et basée sur une technique de modification des coûts permettant de les rendre tous positifs en conservant cependant la même hiérarchie de chemin sur le graphe d écart ; dans cette situation l algorithme de Dijkstra peut être utilisé. 9 Couplages Les problèmes de couplage dans les graphes quelconques (ou dans les graphes bipartis) ont un double intérêt. Le premier, le plus évident, vient de leurs applications : ils généralisent directement les problèmes d affectation et ils interviennent dans certains problèmes importants de la théorie de graphes : problèmes de tournées, détermination de plus courtes chaînes dans un graphe non orienté, etc. Le second, d ordre théorique, vient de ce qu ils se rattachent à une classe de problèmes de programmation linéaire en nombres entiers. Définition 7 Etant donné un graphe simple non orienté G = (X, A), un couplage est un sousensemble d arêtes K A tel que deux arêtes quelconques de K ne sont pas adjacentes. Un sommet i X est dit saturé par le couplage K A s il existe une arête de K incidente à i. Un couplage K qui sature tous les sommets du graphe est appelé couplage parfait. Un couplage maximal est un couplage de cardinalité maximale.

34 9. Le problème du couplage maximal Définition 8 Si K A est un couplage de G = (X, A), on appelle chaîne alternée (relativement à K) une chaîne élémentaire de G dont les arêtes appartiennent alternativement à K et K = A K. Une chaîne alternée augmentante ou chaîne améliorante est une chaîne alternée joignant deux sommets insaturés. En convenant de dessiner les arêtes d un couplage par des traits épais, les arêtes de K = A K restant en traits fins, une chaîne alternée est une chaîne élémentaire dont les arêtes sont alternativement fines et épaisses. Définition 9 Etant donné un couplage K A, considérons une chaîne alternée L dont chaque extrémité est un sommet insaturé ou est telle que l unique arête de K qui lui est incidente soit dans L. Alors le couplage K obtenu en échangeant le rôle des arêtes fines et épaisses le long de la chaîne L est encore un couplage de G. Cette opération qui fait passer du couplage K au couplage K est appelée transfert le long de la chaîne alternée L. Une opération de transfert le long d une chaîne alternée augmentante, augmente la cardinalité du couplage d une unité. Par exemple, sur le graphe de la figure 7, les arêtes (, ) et (, 6), dessinées en traits épais, forment un couplage K de cardinalité égale à. La chaîne L = {,,, } est une chaîne alternée dont les extrémités sont des sommets insaturés. C est donc une chaîne alternée augmentante. Un transfert le long de cette chaîne produit le nouveau couplage K = {(, ), (, ), (, 6)} de cardinalité égale à. 6 6 Fig. 7 Couplages initial et final Pour cet exemple particulier, ce couplage est maximal, car, pour un graphe d ordre n, la cardinalité d un couplage maximal est égale à la partie entière de n/. Le théorème suivant permet de caractériser un couplage maximal. Théorème Un couplage K est maximal si et seulement s il n existe pas de chaîne alternée augmentante relativement à K.

35 Ce théorème montre que pour rechercher un couplage maximal, il suffit donc de savoir trouver une chaîne alternée augmentante (s il en existe) relativement à un couplage K A quelconque. La procédure pour construire un couplage maximal K pour G = (X, A) est la suivante :. Initialiser K =. Trouver un chaîne améliorante K a de K, effectuer le transfert le long de cette chaîne et remplacer le couplage K par celui ainsi obtenu (dont la cardinalité a nécessairement augmenté de un).. Répéter l étape jusqu à ce qu il ne soit plus possible de créer une nouvelle chaîne améliorante ; K est alors un couplage maximal. Le problème qui se pose alors est de savoir construire, pour un couplage donné, une chaîne alternée augmentante. Pour rechercher des chaînes alternées d origine fixée i 0, on construit un arbre alterné T de racine i 0 tel que : T = (Y, T ) est un sous-graphe partiel connexe et sans cycle de G, pour tout j Y, la chaîne (unique) L T (j) de l arbre entre i 0 et j est une chaîne alternée, les chaînes reliant i 0 aux sommets pendants ont un nombre pair d arêtes. Nous ne détaillerons pas ici les multiples situations particulières auxquelles on peut être confrontés dans la construction de cet arbre. Nous nous contenterons de décrire la situation la plus courante. On choisit tout d abord comme racine de l arbre (niveau 0) un sommet insaturé relativement au couplage courant. Au niveau i impair, on insère dans l arbre un sommet adjacent à l un des sommets insérés au niveau i par le biais d une arête n appartenant pas au couplage courant, ainsi que cette arête. Au niveau i pair, on insère dans l arbre alterné, un sommet adjacent à l un des sommets insérés au niveau i par le biais d une arête appartenant au couplage, ainsi que cette arête. On continue à construire progressivement cet arbre jusqu à l insertion, à un niveau impair, d un sommet insaturé, ou bien jusqu à ce que l on ne puisse plus insérer de sommet. S il existe une chaîne alternée augmentante du couplage courant, on finit nécessairement par insérer un sommet insaturé s. La chaîne reliant s à la racine de l arbre est alors une chaîne alternée augmentante. Considérons le graphe biparti de la figure 8 où l on a matérialisé, à l aide d arêtes épaisses, le couplage obtenu après une étape déterminée de l algorithme précédent. f f f f f f x x x x x x Fig. 8 Couplage courant

36 Choisissons de construire un arbre alterné dont la racine est le sommet x insaturé par ce couplage. f x x f x f f x f Fig. 9 Arbre alterné de racine x Au niveau de l arbre, la seule possibilité est d insérer l arête (x, f ) et le sommet f. Au niveau, on insère l arête (f, x ) appartenant au couplage (c est encore la seule possibilité). Au niveau, les deux arêtes (x, f ) et (x, f ) n appartenant pas au couplage peuvent être insérées. On insère ensuite les arêtes (f, x ) et (f, x ), ainsi que les sommets (saturés) correspondants. Le sommet x est alors un sommet pendant de l arbre, en revanche, on peut insérer, au niveau, les arêtes (x, f ) et (x, f ) conduisant à l arbre alterné de la figure 9. Comme les sommets f et f sont tous deux insaturés, on a ainsi créé deux chaînes améliorantes qui permettent d augmenter, en effectuant un transfert, la cardinalité du couplage. Si l on choisit par exemple, la chaîne f, x, f, x, f, x ), le nouveau couplage est représenté figure 0. f f f f f f x x x x x x Fig. 0 Couplage augmenté Pour cet exemple particulier, on observe qu il suffit d ajouter à ce dernier couplage l arête (x, f ), reliant les deux seuls sommets insaturés, pour obtenir un couplage parfait qui est, bien sûr, un couplage maximal du graphe. 9. Couplage maximal et flot maximal Pour déterminer un couplage maximal sur un graphe biparti G = (X, Y, Γ), on peut recourir à l artifice suivant. On construit un réseau de transport (voir définition ) en ajoutant au graphe une origine S liée à tous les sommets de X et une destination P liée à tous les sommets de Y (voir figure ). On fixe à les capacités de tous les arcs de ce réseau. Un couplage permet de sélectionner un certain nombre d arêtes du graphe biparti. Si l on fait passer une unité de flot par ces arêtes et sur les arêtes correspondantes vers S et P (en faisant passer un flot nul sur les autres arêtes), on obtient bien un flot sur le réseau. En effet, la loi de 6

37 Kirchhoff en un sommet quelconque de X ou de Y exprime ici qu il y a au plus une arête du couplage y parvenant. Réciproquement, un flot sur ce réseau ne peut transporter au plus qu une unité de flot sur chaque arête et l ensemble des arêtes transportant une unité de flot entre X et Y détermine un couplage sur G. En effet, si deux arêtes retenues étaient adjacentes en x X, la loi de Kirchhoff en x imposerait un flot de deux unités au moins sur l arc entre S et x, ce qui dépasse la capacité imposée. La valeur du flot est donc égale au nombre d arêtes constituant le couplage. Le problème du couplage maximal se ramène ainsi à un problème de flot maximal dans un réseau de transport, qui peut être résolu à l aide de l algorithme de Ford-Fulkerson. La figure (partie gauche) montre un flot complet et non maximal qui peut être amélioré en un flot maximal (partie droite). x y x y x y x y S x y P S x y P x y x y x y x y Fig. Flot complet et maximal 9. Couplage de poids maximal A chaque arête a A du graphe G(X, A), on associe maintenant un nombre réel w(a) appelé poids de l arête a. Le poids d un couplage K A est la somme des poids des arêtes qui le constituent, soit w(k) = a K w(a). Le problème du couplage de poids maximal est la recherche d un couplage tel que son poids soit maximal sur l ensemble de tous les couplages de G. On remarquera qu un couplage de poids maximal n est pas nécessairement un couplage maximal (couplage de cardinalité maximale). Définition 0 Soit K A un couplage de G = (X, A), on rappelle qu une chaîne alternée augmentante est une chaîne alternée joignant deux sommets insaturés. Une chaîne alternée réductrice est une chaîne alternée impaire dont les arêtes extrêmes sont dans K. Une chaîne alternée conservative est une chaîne alternée paire dont une extrémité est un sommet isolé. On remarquera de manière évidente que le transfert le long d une chaîne alternée augmentante augmente la cardinalité du couplage d une unité ; le long d une chaîne réductrice, il la réduit d une unité et le long d une chaîne conservative, il ne la change pas. 7

38 Définition Le coût réduit d une chaîne alternée L (augmentante, réductrice ou conservative) relative au couplage K vaut : δ(l) = w(l K) w(l K) Un cycle alterné pair est une chaîne alternée paire dont les extrémités coïncident. Un transfert le long d un cycle alterné pair conserve la cardinalité du couplage. Le coût réduit du cycle µ est : δ(l) = w(µ K) w(µ K) Le résultat suivant caractérise un couplage de poids maximal en termes d existence de chaînes alternées. Théorème 6 Un couplage K est de poids maximal si et seulement s il n existe pas de chaîne alternée, ni de cycle alterné pair de coût réduit strictement positif relativement à K. Le théorème ci-dessous montre que l on peut construire, de proche en proche, des couplages K, K,..., K p de cardinalité,,..., p et de poids maximal, par des transferts successifs le long de chaînes alternées augmentantes et de coût réduit maximal. On généralise ainsi le résultat de Busacker-Gowen sur la recherche de flot maximal de coût minimal. Théorème 7 Soit K un couplage de cardinalité p de poids maximal (sur l ensemble des couplages de cardinalité p) et soit L une chaîne alternée augmentante (relativement à K) de coût réduit maximal. Le couplage K obtenu à partir de K par transfert le long de L est de poids maximal parmi tous les couplages de cardinalité p Problèmes d affectation La formulation générale d un problème d affectation est la suivante. Etant donné n tâches à réaliser et n machines pour les réaliser et sachant que l on connaît le coût de réalisation C ij de la tâche t i par la machine m j (pour tous les couples (t i, m j ) possibles, si la tâche t i ne peut être effectuée par la machine m j, on pose C ij = ), on cherche une permutation σ de {,,..., n} conduisant à un coût total : n i= C i,σ(i) minimum (sur l ensemble de toutes les n! permutations σ possibles). Le problème d affectation est un cas particulier du problème de transport (sans capacité). Il peut également être vu comme un problème de couplage parfait de poids minimum dans un graphe biparti. Cependant, compte-tenu de l importance de ce type de problème, un algorithme spécifique a été proposé par Kuhn ; il s agit de l algorithme Hongrois. 8

39 Cet algorithme repose essentiellement sur la constatation suivante. On ne change pas la ou les solutions optimales en augmentant ou en diminuant d une même quantité λ tous les éléments d une même ligne (ou d une même colonne) de la matrice des C ij (les valeurs infinies restant infinies). Après une telle opération, la valeur totale est augmentée ou diminuée de λ. Par conséquent, si l on fait apparaître, par des transformations de ce type, suffisamment de zéros dans le tableau, mais pas de coûts négatifs, et qu il existe n zéros indépendants (c està-dire un seul zéro dans chaque ligne et dans chaque colonne), on aura alors trouvé l affectation optimale. L algorithme procède en trois phases successives. Afin d expliquer la démarche suivie, considérons l exemple décrit par la matrice des coûts suivante : A B C D E Première phase : obtention de valeurs nulles A tous les éléments de chacune des colonnes, on enlève le plus petit élément de cette colonne, puis, dans la matrice ainsi obtenue, on enlève, à tous les éléments d une même ligne, le plus petit élément de la ligne. On obtient de la sorte une matrice (C,ij ) ayant au moins un zéro par ligne et par colonne. Pour l exemple précédent, on obtient, après traitement des colonnes puis des lignes, les deux matrices suivantes : A 0 A 0 B B C 0 0 C 0 0 D 9 8 D E 0 E 0 Deuxième phase : recherche du maximum d affectations possibles A partir de la matrice (C,ij ), on cherche à former une solution de coût nul (un seul zéro dans chaque ligne et dans chaque colonne). Si c est le cas, on a la solution optimale, sinon on cherche un ensemble maximum de zéros indépendants : ceci revient à chercher un flot maximal sur le graphe G constitué par les arcs de coût (réduit) nul. Sur la matrice C,ij, cela correspond au traitement suivant. On considère la ligne ayant un nombre minimal de zéros (pour l exemple, cela peut être la première). On encadre l un des zéros de cette ligne (ici, C,A ), puis on barre les zéros qui se trouvent sur la même ligne ou la même colonne que le zéros encadré (ici, C,D ). On procède de même pour toutes les lignes, en tenant compte des étapes précédentes. On obtient, pour l exemple, la matrice suivante : 9

40 A B C D E Troisième phase : détermination des affectations intéressantes Pour déterminer ces affectations, on procède la manière suivante : On marque (d une astérisque) toutes les lignes qui ne contiennent aucun zéro encadré sommet non affecté (ligne D de l exemple) ; On marque les lignes qui ont un zéro encadré dans une colonne marquée (ligne A de l exemple) ; On marque les colonnes qui ont un ou plusieurs zéros barrés dans une ligne marquée possibilité non exploitée (colonne de l exemple). On répète ces trois marquages successifs jusqu à ce que l on ne puisse plus effectuer de nouveaux marquages (pour l exemple, une seule passe suffit). Les affectations intéressantes à considérer sont celles issues des sommets correspondant aux lignes marquées ; on barre donc les lignes non marquées. Les sommets correspondant aux colonnes marquées ne sont pas intéressants car ils ne peuvent être réaffectés ; on barre donc les colonnes marquées. A B C D E * * * Dans le tableau réduit ainsi obtenu (cases non barrées), on recherche ensuite l élément le plus petit, nécessairement non nul par construction (pour l exemple, il s agit de l élément C,A ) ; on retranche sa valeur aux colonnes non barrées et on l ajoute aux lignes barrées. On obtient les tableaux successifs suivants : A B C D E A B C D E

41 On note (C,ij ) la matrice ainsi obtenue et l on poursuit la procédure de traitement en reprenant à la seconde phase. Lorsqu une solution optimale est obtenue (un zéro par ligne et par colonne), on arrête ; sinon on recommence et on définit successivement les matrices (C,ij ), (C,ij ),..., (C n,ij ). Sur le tableau (C,ij ) de l exemple, on est amené à encadrer C,D et barrer C,A, encadrer C,E, encadrer C,A et barrer C,B et C,C, encadrer C,B et enfin encadrer C,C : A B C D E La solution optimale est alors obtenue grâce aux éléments : et à la permutation σ = C,A = C,B = C,C = C,D = C,E = 0 ( ) A B C D E. Si l on revient aux données initiales, on obtient : C A = C B = C C = C D = C E = = La figure visualise en trait fort le couplage optimal obtenu. B C A D E Fig. Affectation optimale 0 Problèmes d ordonnancement L objet d un problème d ordonnancement est de faciliter la mise en œuvre et de guider l exécution d un ensemble complexe de tâches (programme de recherche ou de production, lancement d un produit, construction d un édifice...). La technique d analyse la plus connue, appelée méthode PERT (Program Evaluation and Review Technique) a été introduite aux Etats-Unis en 98 pour la conduite du programme de recherche et de construction des fusées Polaris. Cette

42 méthode tient une place dominante par sa simplicité, son efficacité et la variété d extensions qui ont pu être développées. En toute généralité, les problèmes d ordonnancement se posent sous la forme suivante. Etant donné un objectif qu on se propose d atteindre et dont la réalisation suppose l exécution préalable de multiples tâches, soumises à de nombreuses contraintes, déterminer l ordre et le calendrier d exécution des diverses tâches. Le critère d optimalité peut porter sur la minimisation de la durée et/ou du coût de la réalisation du projet. Nous supposerons que le projet est décomposable en un nombre fini de tâches, caractérisées par leur durée d exécution (généralement fixe, parfois aléatoire), éventuellement aussi par leur coût d exécution, et soumises à des contraintes de postériorité stricte (une tâche ne peut commencer que si certaines autres tâches sont complètement terminées). Ce type de problème se nomme problème central de l ordonnancement. Des cas plus complexes peuvent également être envisagés comme par exemple le cas des contraintes disjonctives, c est-à-dire le cas où, en plus des contraintes de succession, on impose la réalisation non simultanée de certaines paires de tâches. La représentation par un graphe d un problème d ordonnancement permet une bonne appréhension globale du problème. L étude de ce graphe conduit à l identification des tâches prioritaires et la détection des retards ou des dépassements de moyens afin de prendre les mesures correctives nécessaires. Le problème central de l ordonnancement s énonce comme suit : étant donné un projet constitué de n tâches de durées d exécution fixes et soumises à des contraintes de postériorité stricte, déterminer un calendrier d exécution ou ordonnancement qui minimise la durée de réalisation totale du projet. En pratique, le travail préliminaire à accomplir sera donc de dresser une liste des différentes opérations à mener que l on décomposera plus ou moins finement selon la précision souhaitée. Généralement, les tâches sont définies pour que leurs durées d exécution soient du même ordre de grandeur ; de plus, les contraintes de postériorité entre les tâches doivent pouvoir être établies avec précision. Ce travail important est souvent long et nécessite une collaboration étroite entre les différents acteurs du projet. 0. Le graphe potentiels-tâches A partir de la description des tâches du projet, on construit le graphe suivant : A chaque tâche i (i de à n), on associe un sommet i du graphe, On définit un arc entre i et j de longueur d i (la durée de la tâche i) si la tâche i doit précéder la tâche j. On introduit deux sommets correspondant à deux tâches fictives de durée nulle, la tâche de début des travaux α, antérieure à toutes les tâches (il suffit de relier le sommet α aux sommets sans prédécesseurs du graphe) et la tâche de fin des travaux ω, postérieure à toutes les autres tâches (tous les sommets sans successeur du graphe seront reliés au sommet ω). Le graphe ainsi défini doit être sans circuit ; en effet, dans le cas contraire, une opération devrait se succéder à elle-même. Le travail commençant à la date 0, on cherche un ordonnancement qui minimise la durée totale du projet, donc la date de fin des travaux. Pour qu une tâche

43 puisse commencer, il est nécessaire que toutes les tâches qui la relient à la tâche début du projet soient réalisées. Définition La date au plus tôt, t i de début de la tâche i est égale à t i = max j Γ (t j + d j ), i c est-à-dire que t i est égale à la longueur du plus long chemin l(α, i) de α à i. La durée minimale du projet t ω est donc la longueur du plus long chemin de α à ω. Si la durée minimale du projet est égale à t ω, la date au plus tard pour commencer la tâche i est égale à T i = min j Γi (T j d i ) avec T ω = t ω, ce qui montre que T i = t ω l(i, ω) où l(i, ω) est la longueur du plus long chemin de i à ω. La marge totale M i de la tâche i est définie comme la différence entre la date au plus tôt et au plus tard (M i = T i t i ). Les tâches dont la marge est nulle sont appelées tâches critiques. Si un quelconque retard est pris sur la réalisation de l une de ces tâches, la durée minimale du projet sera augmentée d autant. La marge libre m i de la tâche i est le délai dont on peut retarder cette tâche sans affecter les dates de début au plus tôt des tâches postérieures, m i = min j Γi (t j t i d i )). On observe donc qu à chaque tâche i est associé un nombre t i qui peut être considéré comme un potentiel d où la dénomination de graphe potentiels-tâches. 0. Le graphe potentiels-étapes ou graphe PERT Dans cette représentation, les tâches sont matérialisées par les arcs du graphe. La longueur de chaque arc est égale à la durée d i de la tâche correspondante. Le début et la fin d une tâche constituent les étapes du projet. Comme précédemment, on introduit les deux étapes de début (α) et de fin (ω) du projet. Chaque étape est donc définie par un ensemble de tâches déjà effectuées. Si une tâche j doit succéder à une tâche i, on confondra l extrémité initiale de l arc a j (correspondant à la tâche j) et l extrémité terminale de l arc a i (correspondant à la tâche i), via éventuellement un arc fictif. Le graphe ainsi défini doit être sans circuit. Dans cette formulation, les sommets s interprètent comme des étapes, c est pourquoi l on utilise l appellation graphe potentiels-étapes (connu plus communément sous le nom de graphe PERT). La construction d un tel graphe est un peu plus complexe que celle du graphe potentielstâches car elle demande la définition des étapes qui peuvent correspondre au début où à la fin de plusieurs tâches. Si l on se donne, pour chaque tâche i, l ensemble Γ i des tâches qui doivent la précéder, les différentes étapes du projet correspondent aux différents ensembles Γ Soulignons aussi que pour pouvoir exprimer certaines contraintes de postériorité stricte, il est parfois nécessaire d introduire des tâches fictives et donc des arcs fictifs de durée nulle. A titre d exemple, considérons le sous-graphe partiel de la figure. Ce graphe indique que les tâches et doivent succéder aux tâches et. Supposons que suite à une modification de conditions techniques, l exécution de la tâche puisse commencer i.

44 Tâche Tâche Tâche Tâche Fig. Elément de graphe PERT avant que ne soit achevée la tâche. Pour adapter le graphe à ce changement, on ajoute un arc fictif comme sur la figure. Tâche Tâche Tâche fictive Tâche Tâche Fig. Elément de graphe PERT 0. Résolution Un ordonnancement est un programme d exécution qui fixe la date t i de début d exécution de chacune des tâches (dans la méthode du potentiel) ou de début de réalisation de chacune des étapes (dans la méthode PERT). Un ordonnancement est optimal s il est réalisable c est-à-dire si t j t i d i et s il minimise la durée de réalisation t ω du projet. La durée minimale du projet est égale à la longueur du plus long chemin de α à ω. En effet, pour qu une tâche puisse commencer, il faut que toutes les tâches précédentes aient été exécutées, de sorte que la durée du projet ne peut être inférieure à la somme des durées des tâches composant le chemin le plus long de α à ω. Ce chemin, appelé chemin critique, n est pas nécessairement unique. Comme le graphe est sans circuit,on a : t j = max (t i + d i ), j n i Γ j Chaque t i ainsi obtenu est la longueur du chemin le plus long du sommet α au sommet i et représente la date au plus tôt de début d exécution de la tâche ou de l étape i. La durée minimum t ω du projet ayant été déterminée, il est bien sûr possible de retarder l exécution de certaines tâches ou étapes sans pour autant accroître t ω. Il est dès lors intéressant de déterminer les dates au plus tard T i de début d exécution des différentes tâches ou étapes i sous la condition que la durée minimale du projet ne soit pas modifiée. Ces dates se calculent de même manière que pour les dates au plus tôt mais à partir du graphe inverse obtenu en inversant le sens de tous les arcs. Il vient T ω = t ω et : T j = min i Γ j (T i d i ), 0 j n

45 Chaque quantité T ω T i ainsi obtenue est la longueur du chemin le plus long du sommet i au sommet ω. 0. Compléments Pour comparer l intérêt des deux graphes précédemment décrits, il faut se placer dans un cadre plus général que le problème central de l ordonnancement et examiner un ensemble de contraintes que l on doit pratiquement prendre en compte dans les problèmes d ordonnancement. Ces contraintes sont essentiellement de trois types : Type potentiel : la tâche j doit commencer après la fin de i ou bien après la moitié de la réalisation de i, ou bien un certain temps après la fin de i, etc. Type disjonctif : les tâches i et j ne peuvent être réalisées en même temps (car c est le même ouvrier qui les réalise par exemple). Type cumulatif : les moyens nécessaires à l exécution d un certain nombre de tâches sont, à chaque instant, limités ; par exemple, le nombre de camions utilisables ou la somme dépensée pour les travaux réalisés à l instant t ne doit pas dépasser un certain seuil, etc. Les contraintes de type potentiel autres que les contraintes d antériorité du problème central sont difficiles à prendre en compte dans le graphe potentiels-étapes. On est en effet amené à ajouter des sommets et des arcs fictifs en très grand nombre dans le graphe. En revanche, dans le graphe potentiels-tâches, chaque contrainte supplémentaire de type potentiel s introduit simplement par l adjonction d un arc dans le graphe. Par exemple : la contrainte : j ne doit pas commencer avant la moitié de la réalisation de la tâche i se représente par un arc (i, j) de longueur d i /. la contrainte : j ne peut commencer qu un temps t après la fin de i se représente par un arc (i, j) de longueur d i + t. la contrainte : j ne peut commencer qu après la date b j se représente par un arc (α, j) de longueur b j. la contrainte : j doit commencer avant la date c j se représente par un arc (j, α) de longueur c j. enfin la contrainte : j doit suivre immédiatement la tâche i s écrit t i + d i = t j et se représente par un arc (i, j) de longueur d i et un arc (j, i) de longueur d i. Les deux derniers cas introduisent des circuits et des arcs de longueurs négatives. La condition d existence d un ordonnancement devient alors : il n existe pas de circuit de longueur strictement positive. Comme l on peut introduire des arcs de longueur différentes partant d un sommet i quelconque, il est préférable de noter d ij la longueur de l arc allant de i à j. Les formules de détermination des dates au plus tôt et au plus tard deviennent alors : t j = max (t i + d ij ) au lieu de t j = max (t i + d i ) i Γ j T j = min i Γ j (T i d ij ) au lieu de i Γ j T j = min i Γ j (T i d i ) Les contraintes de type disjonctif ou cumulatif sont impossibles à prendre en compte dans le graphe PERT. Certains aménagements permettent leur prise en compte dans le graphe potentiels-tâches. On préférera donc la représentation potentiels-tâches dès que le problème ne se réduit pas au problème central.

46 Pour terminer cette présentation succincte des problèmes d ordonnancement, examinons quelques exemples pouvant se formuler en termes du problème du voyageur de commerce ou de ses nombreuses variantes. Exemple : Dans un système d exploitation automatisé, une machine doit régulièrement effectuer n types de tâches différentes x, x,..., x n. On connaît de plus des durées de commutations entre deux tâches x i et x j quelconques. Le problème est de trouver une séquence de x i qui minimise le temps total des commutations. Si l on considère le graphe de sommets {x i } i=,...,n dont l arc (x i, x j ) a une longueur égale au temps de commutation entre x i et x j, le problème revient à déterminer un circuit hamiltonien de longueur minimum. Dans beaucoup de situations, on cherche un chemin hamiltonien dans un graphe qui minimise une autre fonction économique que la longueur totale du chemin. Exemple : Etant données n tâches i =,..., n de durée a i, soit d i la date où la tâche i doit être terminée (date souhaitée). Déterminer la séquence de tâches sur une machine unique de façon à minimiser le retard maximum, c est-à-dire minimiser max i=,...,n (t i d i ) où t i est la date où la tâche i est effectivement terminée. La solution optimale est obtenue en ordonnant les tâches i selon l ordre croissant des dates souhaitées d i. Exemple : Etant donné un graphe orienté G = (X, A) et des poids C a = C i,j sur chaque arc a = (i, j), déterminer une chaîne hamiltonienne qui minimise : f(σ) = i=,...,n j>i C σ(i)σ(j) où σ(i) représente le i ième sommet de la chaîne hamiltonienne. Cela revient à déterminer, sur une matrice carrée d ordre n, C = (C ij ), une permutation σ des lignes et des colonnes (la même pour les lignes et les colonnes) telle que la somme des éléments de la matrice triangulaire supérieure soit minimale. Ce problème a de nombreuses applications. La plus classique correspond à l analyse des préférences : étant donné N objets, on demande à k personnes de les comparer par paires (on pose C ij, le nombre de personnes ayant préférées i à j). L optimum de f(σ) est obtenu si la chaîne hamiltonienne est constituée de la succession des sommets pris dans un ordre minimisant le nombre de désaccords. 6

47 Annexe A - Implémentation de l algorithme de Moore-Dijkstra Le programme Matlab r ci-dessous est une implémentation de l algorithme de Moore-Dijkstra décrit au paragraphe 6. et permettant l obtention du plus court chemin entre deux sommets. Les trois paramètres d appel de la fonction moore sont les suivants : L dep arv : matrice des longueurs (s il n y a pas d arc entre le sommet i et le sommet j, alors l ij = et conventionnellement l ii = 0). : numéro du sommet de départ du chemin recherché. : numéro du sommet d arrivée du chemin recherché. En sortie, on récupère : s m : la longueur du plus court chemin (s = s il n existe pas de chemin). : le vecteur des longueurs des plus courts chemins entre dep et tous les autres sommets. function [s,mark]=moore(l,dep,arv) %MOORE Recherche du plus court chemin entre deux sommets d un graphe % % S=MOORE(L,DEP,ARV) calcule la longueur du plus court chemin entre % les sommets de numéro DEP et ARV. % % [S,M]=MOORE(L,DEP,ARV) renvoie également le vecteur des longueurs % des plus courts chemins entre le sommet DEP et tous les autres sommets. % % Voir aussi MOORE % Copyright (c) 00 by Didier MAQUIN % $Revision: 0. $Date: 0/0/0 $ n=size(l,); % Initialisation Sb=:n; Sb(dep)=[]; mark=l(dep,:); while [v,indj]=min(mark(sb)); j=sb(indj); Sb(indj)=[]; if isempty(sb),break,end succ=find(l(j,:)~=inf & L(j,:)~=0); A=intersect(succ,Sb); % j sommet de marque provisoire minimale % on retire j de Sb % si Sb est vide on ar^ete % liste des successeurs de j % intersection entre cette liste et Sb % si cette liste n est pas vide if ~isempty(a) mark(a)=min(mark(a),mark(j)+l(j,a)); % on remet à jour les marques end end s=mark(arv); 7

48 Considérons le graphe de la figure : Fig. Graphe orienté Voilà ci-dessous un exemple de programme d appel pour calculer les longueurs des plus courts chemins joignant le sommet à tous les autres : clear % Matrice de distance D=[ 0 7 inf inf inf inf 0 inf inf inf 0 inf 7 inf inf inf 0 inf inf inf inf 0 inf inf inf inf inf 0 ]; % dep=input( Sommet de départ : ); arv=input( Sommet d arrivée : ); [s,m]=moore(d,dep,arv) Pour dep = et arv = 6, on obtient : Sommet de départ : Sommet d arrivée : 6 s = 6 m = La fonction précédente peut être modifiée de manière à mémoriser, en plus de la longueur du chemin, la succession des sommets par lesquels il passe. Il suffit pour cela de maintenir à jour une table de prédécesseurs. Celle-ci peut ensuite être exploitée pour reconstituer le chemin suivi. Le programme Matlab r ci-dessous réalise cette fonction. Les trois paramètres d appel de la fonction moore sont identiques à ceux de la fonction précédente. En sortie, on obtient : s : la longueur du plus court chemin (s = s il n existe pas de chemin). chemin : le vecteur des numéros de sommets décrivant le chemin. 8

49 function [s,chemin]=moore(l,dep,arv) %MOORE Recherche du plus court chemin entre deux sommets d un graphe % % S=MOORE(L,DEP,ARV) calcule la longueur du plus court chemin entre % les sommets de numéro DEP et ARV. % % [S,CHEMIN]=MOORE(L,DEP,ARV) renvoie également le chemin emprunté % (séquence de numéro de sommets). % % Voir aussi MOORE % Copyright (c) 00 by Didier MAQUIN % $Revision: 0. $Date: 0/0/0 $ n=size(l,); % Initialisation Sb=:n; Sb(dep)=[]; mark=l(dep,:); p=ones(,n)*inf; succ=find(l(dep,:)~=inf & L(dep,:)~=0); p(succ)=dep; while [v,indj]=min(mark(sb)); j=sb(indj); % j sommet de marque provisoire minimale. Sb(indj)=[]; % on retire j de Sb. if isempty(sb),break,end % si Sb est vide on ar^ete. succ=find(l(j,:)~=inf & L(j,:)~=0);% on cherche la liste des successeurs de j. A=intersect(succ,Sb); % intersection entre cette liste et Sb. if ~isempty(a) % si cette liste n est pas vide oldmark=mark(a); % on mémorise l ancienne marque mark(a)=min(mark(a),mark(j)+l(j,a)); % et on remet à jour les marques. id=find(oldmark~=mark(a)); % pour les sommets dont les marques ont p(a(id))=j; % changé on mémorise le prédécesseur. end end s=mark(arv); chemin=[]; if isfinite(p(arv)) chemin=[arv]; % on construit le chemin while chemin(end)~=dep % à l aide de la table des prédécesseurs k=chemin(end); % à partir de la fin. end end chemin=[p(k) chemin]; Ci-dessous un exemple de programme d appel correspondant au graphe de la figure : clear % Matrice de distance D=[ 0 7 inf inf inf 9

50 inf 0 inf inf inf 0 inf 7 inf inf inf 0 inf inf inf inf 0 inf inf inf inf inf 0 ]; % dep=input( Sommet de départ : ); arv=input( Sommet d arrivée : ); [s,chemin]=moore(d,dep,arv); if isfinite(s) fprintf( Le chemin ) fprintf( %i,chemin) fprintf( de longueur %f,s) fprintf( est le chemin de longueur minimale\n ) else fprintf( Il n existe pas de chemin!\n ) end Pour dep = et arv = 6, on obtient : Sommet de départ : Sommet d arrivée : 6 Le chemin 6 de longueur est le chemin de longueur minimale Pour dep = et arv =, on obtient : Sommet de départ : Sommet d arrivée : Il n existe pas de chemin! 0

51 Annexe B - Implémentation de l algorithme de Floyd Le programme Matlab r ci-après est une implémentation de l algorithme de Floyd décrit au paragraphe 6. et permettant l obtention de la matrice des plus courts chemins dans un graphe dont les arcs sont valuées positivement. Le seul paramètre d appel de la fonction floyd est le suivant : L : matrice des longueurs (s il n y a pas d arc entre le sommet i et le sommet j, alors l ij = et conventionnellement l ii = 0). En sortie, on récupère : A P : la matrice des plus courts chemins entre tous les sommets. : la matrice des prédécesseurs (p ij représente le numéro du sommet prédécesseur immédiat de j sur le plus court chemin entre i et j). function [A,P]=floyd(L) %FLOYD Recherche de la matrice des plus courts chemins entre sommets % % [A]=FLOYD(L) calcule a matrice des plus courts chemins entre sommets % % [A,P]=FLOYD(L) renvoie également la matrice des prédécesseurs % % Copyright (c) 00 by Didier MAQUIN % $Revision: 0. $Date: 0/0/0 $ [n,m]=size(l); if n ~= m error( La matrice des distance n est pas carrée );end A=L; for i=:n P(i,:)=i*ones(,m); end for k=:n for i=:n for j=:n if A(i,k) + A(k,j) < A(i,j) A(i,j) = A(i,k) + A(k,j); P(i,j) = P(k,j); end end end end Considérons de nouveau le graphe de la figure. Le programme ci-après permet de calculer la matrice des plus courts chemins et d éditer, en exploitant la matrice des prédécesseurs, le chemin reliant un sommet initial à un sommet terminal quelconques sous la forme d une liste de sommets.

52 clear; % Matrice de distance C=[ 0 7 inf inf inf inf 0 inf inf inf 0 inf 7 inf inf inf 0 inf inf inf inf 0 inf inf inf inf inf 0 ]; % [A,P]=floyd(C) initial=input( Sommet initial : ); terminal=input( Sommet terminal : ); % if ~isfinite(a(initial,terminal)) fprintf( Il n existe pas de chemin entre les sommets %d et %d\n\n,initial,terminal); else j=terminal; chemin=[j]; while j ~= initial j=p(initial,j); chemin=[j chemin]; end fprintf( Plus court chemin entre les sommets %d et %d\n\n,initial,terminal) fprintf( %d,chemin); fprintf( \n\n ) end Pour initial = et terminal = 6, on obtient : Plus court chemin entre et 6 6 Alors que pour initial = 6 et terminal =, le résultat est le suivant : Il n existe pas de chemin entre 6 et

53 Annexe C - Implémentation de l algorithme de Prim Le programme Matlab r ci-après est une implémentation de l algorithme de Prim décrit au paragraphe 7. et permettant l obtention d un arbre couvrant de poids minimal. Les deux paramètres d appel de la fonction prim sont les suivants : L dep : matrice des longueurs (s il n y a pas d arc entre le sommet i et le sommet j, alors l ij = et conventionnellement l ii = 0). : numéro du sommet de départ pour la construction de l arbre recherché. En sortie, on récupère : alpha : un tableau de chaînes de caractères désignant les arêtes constituant l arbre. function [alpha]=prim(l) %PRIM Recherche d un arbre couvrant de poids minimal % % ALPHA=PRIM(L) détermine un arbre couvrant de poids minimal % ALPHA est un tableau de cha^ınes de caractères désignant les % ar^etes de l arbre. % Copyright (c) 00 by Didier MAQUIN % $Revision: 0. $Date: 0/0/0 $ n=size(l,); mark=ones(,n)*inf; alpha=ones(n,)*abs( - ); % liste des ar^etes de l arbre dep=; % sommet de départ (fixé à ) mark(dep)=0; A=[]; S=:n; while S=setdiff(S,A); % ensemble X\A [val,l]=min(mark(s)); % recherche du sommet ayant la plus petite marque i=s(l); % numéro du sommet if isempty(setxor(a,:n)),break, end % si A=X alors FIN A=[A i]; % ajout du sommet à l arbre succ=find(l(i,:)~=inf & L(i,:)~=0); % successeurs du sommet i E=setdiff(succ,A); % liste des successeurs moins les sommets déjà dans S for k=:length(e) % mise à jour des marques if L(i,E(k))<mark(E(k)) mark(e(k))=l(i,e(k)); alpha(e(k),:)=[numstr(i) - numstr(e(k))]; % mémorisation ar^etes end end end Considérons le graphe de la figure 6. Le programme ci-après permet de déterminer un arbre couvrant de ce graphe.

54 Fig. 6 Graphe simple clear % 6 7 D=[ 0 7 inf inf 7 0 inf inf inf inf 0 inf inf inf inf 0 0 inf 0 inf inf inf inf inf 7 0 ] % alpha=prim(d); setstr(alpha) Le résultat obtenu est : ans = Cela correspond à l arbre suivant : 7 6 Fig. 7 Arbre couvrant de poids minimal

55 Références [] A.V. Aho, J.E. Hopcroft et J.D. Ullman, The design and analysis of computer algorithms, ISBN , Addison Wesley, Reading (Mass.), 97. [] M.L. Assas, Analyse de la tolérance aux fautes : approches fonctionnelle et structurelle. Thèse de doctorat de l Université des Sciences et Technologies de Lille, 00. [] K. Appel et W. Haken, Every planar map is -colorable, Bulletin of the AMS, Volume 8, 7-7, 976. [] C. Berge, Graphes, ISBN -0--, Gauthiers-Villars, Bordas, Paris, 98. [] H. Bestougeff, C. Guilpin et M. Jacques, La technique informatique, Tome : algorithmes numériques et non numériques, ISBN , Masson, Paris, 97. [6] N. Biggs, E. Lloyd et R. Wilson, Graph Theory 76-96, ISBN , Clarendon Press Oxford, 976. [7] R. Cabane, Théorie des graphes, Techniques de l Ingénieur, Traité Sciences fondamentales, document AF0. [8] H. Coilland, Polycopié d exercices de recherche opérationnelle, IUT Informatique Nancy et Ecole des Mines de Nancy, juillet 999. [9] R. Diestel, Graph theory, Graduate Texts in Mathematics Series, vol. 7, electronic edition, http :// Springer- Verlag, New York 997, 000, [0] F. Droesbeke, M. Hallin et C. Lefevre, Les graphes par l exemple, ISBN X, Ellipses, 987. [] N. Deo, Graph theory with applications to engineering and computer science, Prentice-Hall, Englewood cliffs (N.J.),97. [] L. Euler, Solutio Problematis Ad geometriam Situs Pertinentis, Commenrarii Academiae Scientiarum Imperialis Petropolitanae, 8, pp. 8-0, 76. [] M. Gondran et M. Minoux,Graphes et algorithmes, ème ed., Collection de la Direction des Etudes et Recherches d Electricité de France, Eyrolles 98. [] M. Minoux et G. Bartnik, Graphes, algorithmes, logiciels, Dunod Informatique, ISBN , Bordas Paris, 986. [] Roseaux, Exercices et problèmes résolus de recherche opérationnelle. Tome. Graphes : leurs usages, leurs algorithmes, ISBN , Dunod, Paris, 998.

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

Eléments de Théorie des Graphes et Programmation Linéaire INSTITUT NATIONAL POLYTECHNIQUE DE LORRAINE Ecole Nationale Supérieure d Electricité et de Mécanique Eléments de Théorie des Graphes et Programmation Linéaire Didier Maquin Professeur à l INPL Version

Plus en détail

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

Introduction à la théorie des graphes. Solutions des exercices CAHIERS DE LA CRM Introduction à la théorie des graphes Solutions des exercices Didier Müller CAHIER N O 6 COMMISSION ROMANDE DE MATHÉMATIQUE 1 Graphes non orientés Exercice 1 On obtient le graphe biparti

Plus en détail

Chapitre 5 : Flot maximal dans un graphe

Chapitre 5 : Flot maximal dans un graphe Graphes et RO TELECOM Nancy A Chapitre 5 : Flot maximal dans un graphe J.-F. Scheid 1 Plan du chapitre I. Définitions 1 Graphe Graphe valué 3 Représentation d un graphe (matrice d incidence, matrice d

Plus en détail

Programmation linéaire

Programmation linéaire Programmation linéaire DIDIER MAQUIN Ecole Nationale Supérieure d Electricité et de Mécanique Institut National Polytechnique de Lorraine Mathématiques discrètes cours de 2ème année Programmation linéaire

Plus en détail

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

Théorie des Graphes Cours 3: Forêts et Arbres II / Modélisation IFIPS S7 - informatique Université Paris-Sud 11 1er semestre 2009/2010 Théorie des Graphes Cours 3: Forêts et Arbres II / 1 Forêts et arbres II Théorème 1.1. Les assertions suivantes sont équivalentes

Plus en détail

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

Eteindre. les. lumières MATH EN JEAN 2013-2014. Mme BACHOC. Elèves de seconde, première et terminale scientifiques : MTH EN JEN 2013-2014 Elèves de seconde, première et terminale scientifiques : Lycée Michel Montaigne : HERITEL ôme T S POLLOZE Hélène 1 S SOK Sophie 1 S Eteindre Lycée Sud Médoc : ROSIO Gauthier 2 nd PELGE

Plus en détail

Programmation linéaire

Programmation linéaire 1 Programmation linéaire 1. Le problème, un exemple. 2. Le cas b = 0 3. Théorème de dualité 4. L algorithme du simplexe 5. Problèmes équivalents 6. Complexité de l Algorithme 2 Position du problème Soit

Plus en détail

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

La NP-complétude. Johanne Cohen. PRISM/CNRS, Versailles, France. La NP-complétude Johanne Cohen PRISM/CNRS, Versailles, France. Références 1. Algorithm Design, Jon Kleinberg, Eva Tardos, Addison-Wesley, 2006. 2. Computers and Intractability : A Guide to the Theory of

Plus en détail

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

Exo7. Matrice d une application linéaire. Corrections d Arnaud Bodin. Exo7 Matrice d une application linéaire Corrections d Arnaud odin. Exercice Soit R muni de la base canonique = ( i, j). Soit f : R R la projection sur l axe des abscisses R i parallèlement à R( i + j).

Plus en détail

MIS 102 Initiation à l Informatique

MIS 102 Initiation à l Informatique MIS 102 Initiation à l Informatique Responsables et cours : Cyril Gavoille Catherine Pannier Matthias Robine Marc Zeitoun Planning : 6 séances de cours 5 séances de TD (2h40) 4 séances de TP (2h40) + environ

Plus en détail

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.

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. 1 Définitions, notations 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. On utilise aussi la notation m n pour le

Plus en détail

Introduction à l étude des Corps Finis

Introduction à l étude des Corps Finis Introduction à l étude des Corps Finis Robert Rolland (Résumé) 1 Introduction La structure de corps fini intervient dans divers domaines des mathématiques, en particulier dans la théorie de Galois sur

Plus en détail

Fonctions de plusieurs variables

Fonctions de plusieurs variables Module : Analyse 03 Chapitre 00 : Fonctions de plusieurs variables Généralités et Rappels des notions topologiques dans : Qu est- ce que?: Mathématiquement, n étant un entier non nul, on définit comme

Plus en détail

Souad EL Bernoussi. Groupe d Analyse Numérique et Optimisation Rabat http ://www.fsr.ac.ma/ano/

Souad EL Bernoussi. Groupe d Analyse Numérique et Optimisation Rabat http ://www.fsr.ac.ma/ano/ Recherche opérationnelle Les démonstrations et les exemples seront traités en cours Souad EL Bernoussi Groupe d Analyse Numérique et Optimisation Rabat http ://www.fsr.ac.ma/ano/ Table des matières 1 Programmation

Plus en détail

Le produit semi-direct

Le produit semi-direct Le produit semi-direct Préparation à l agrégation de mathématiques Université de Nice - Sophia Antipolis Antoine Ducros Octobre 2007 Ce texte est consacré, comme son titre l indique, au produit semi-direct.

Plus en détail

Introduction à la théorie des graphes

Introduction à la théorie des graphes CAHIERS DE LA CRM Introduction à la théorie des graphes Didier Müller CAHIER N O 6 COMMISSION ROMANDE DE MATHÉMATIQUE Table des matières Avant-propos But de ce fascicule................................

Plus en détail

Les indices à surplus constant

Les indices à surplus constant Les indices à surplus constant Une tentative de généralisation des indices à utilité constante On cherche ici en s inspirant des indices à utilité constante à définir un indice de prix de référence adapté

Plus en détail

Programmation linéaire et Optimisation. Didier Smets

Programmation linéaire et Optimisation. Didier Smets Programmation linéaire et Optimisation Didier Smets Chapitre 1 Un problème d optimisation linéaire en dimension 2 On considère le cas d un fabricant d automobiles qui propose deux modèles à la vente, des

Plus en détail

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

Optimisation non linéaire Irène Charon, Olivier Hudry École nationale supérieure des télécommunications Optimisation non linéaire Irène Charon, Olivier Hudry École nationale supérieure des télécommunications A. Optimisation sans contrainte.... Généralités.... Condition nécessaire et condition suffisante

Plus en détail

LE PROBLEME DU PLUS COURT CHEMIN

LE PROBLEME DU PLUS COURT CHEMIN LE PROBLEME DU PLUS COURT CHEMIN Dans cette leçon nous définissons le modèle de plus court chemin, présentons des exemples d'application et proposons un algorithme de résolution dans le cas où les longueurs

Plus en détail

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

Baccalauréat ES Polynésie (spécialité) 10 septembre 2014 Corrigé Baccalauréat ES Polynésie (spécialité) 10 septembre 2014 Corrigé A. P. M. E. P. Exercice 1 5 points 1. Réponse d. : 1 e Le coefficient directeur de la tangente est négatif et n est manifestement pas 2e

Plus en détail

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

Objectifs du cours d aujourd hui. Informatique II : Cours d introduction à l informatique et à la programmation objet. Complexité d un problème (2) Objectifs du cours d aujourd hui Informatique II : Cours d introduction à l informatique et à la programmation objet Complexité des problèmes Introduire la notion de complexité d un problème Présenter

Plus en détail

Raisonnement par récurrence Suites numériques

Raisonnement par récurrence Suites numériques Chapitre 1 Raisonnement par récurrence Suites numériques Terminale S Ce que dit le programme : CONTENUS CAPACITÉS ATTENDUES COMMENTAIRES Raisonnement par récurrence. Limite finie ou infinie d une suite.

Plus en détail

Arithmétique binaire. Chapitre. 5.1 Notions. 5.1.1 Bit. 5.1.2 Mot

Arithmétique binaire. Chapitre. 5.1 Notions. 5.1.1 Bit. 5.1.2 Mot Chapitre 5 Arithmétique binaire L es codes sont manipulés au quotidien sans qu on s en rende compte, et leur compréhension est quasi instinctive. Le seul fait de lire fait appel au codage alphabétique,

Plus en détail

Grandes lignes ASTRÉE. Logiciels critiques. Outils de certification classiques. Inspection manuelle. Definition. Test

Grandes lignes ASTRÉE. Logiciels critiques. Outils de certification classiques. Inspection manuelle. Definition. Test Grandes lignes Analyseur Statique de logiciels Temps RÉel Embarqués École Polytechnique École Normale Supérieure Mercredi 18 juillet 2005 1 Présentation d 2 Cadre théorique de l interprétation abstraite

Plus en détail

Cours de Recherche Opérationnelle IUT d Orsay. Nicolas M. THIÉRY. E-mail address: [email protected] URL: http://nicolas.thiery.

Cours de Recherche Opérationnelle IUT d Orsay. Nicolas M. THIÉRY. E-mail address: Nicolas.Thiery@u-psud.fr URL: http://nicolas.thiery. Cours de Recherche Opérationnelle IUT d Orsay Nicolas M. THIÉRY E-mail address: [email protected] URL: http://nicolas.thiery.name/ CHAPTER 1 Introduction à l optimisation 1.1. TD: Ordonnancement

Plus en détail

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

Université Paris-Dauphine DUMI2E 1ère année, 2009-2010. Applications Université Paris-Dauphine DUMI2E 1ère année, 2009-2010 Applications 1 Introduction Une fonction f (plus précisément, une fonction réelle d une variable réelle) est une règle qui associe à tout réel x au

Plus en détail

Peut-on imiter le hasard?

Peut-on imiter le hasard? 168 Nicole Vogel Depuis que statistiques et probabilités ont pris une large place dans les programmes de mathématiques, on nous propose souvent de petites expériences pour tester notre perception du hasard

Plus en détail

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

Suites numériques 3. 1 Convergence et limite d une suite Suites numériques 3 1 Convergence et limite d une suite Nous savons que les termes de certaines suites s approchent de plus en plus d une certaine valeur quand n augmente : par exemple, les nombres u n

Plus en détail

Résolution d équations non linéaires

Résolution d équations non linéaires Analyse Numérique Résolution d équations non linéaires Said EL HAJJI et Touria GHEMIRES Université Mohammed V - Agdal. Faculté des Sciences Département de Mathématiques. Laboratoire de Mathématiques, Informatique

Plus en détail

Introduction à MATLAB R

Introduction à MATLAB R Introduction à MATLAB R Romain Tavenard 10 septembre 2009 MATLAB R est un environnement de calcul numérique propriétaire orienté vers le calcul matriciel. Il se compose d un langage de programmation, d

Plus en détail

Chapitre 1 : Évolution COURS

Chapitre 1 : Évolution COURS Chapitre 1 : Évolution COURS OBJECTIFS DU CHAPITRE Savoir déterminer le taux d évolution, le coefficient multiplicateur et l indice en base d une évolution. Connaître les liens entre ces notions et savoir

Plus en détail

LA PHYSIQUE DES MATERIAUX. Chapitre 1 LES RESEAUX DIRECT ET RECIPROQUE

LA PHYSIQUE DES MATERIAUX. Chapitre 1 LES RESEAUX DIRECT ET RECIPROQUE LA PHYSIQUE DES MATERIAUX Chapitre 1 LES RESEAUX DIRECT ET RECIPROQUE Pr. A. Belayachi Université Mohammed V Agdal Faculté des Sciences Rabat Département de Physique - L.P.M [email protected] 1 1.Le réseau

Plus en détail

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

Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT Ces exercices portent sur les items 2, 3 et 5 du programme d informatique des classes préparatoires,

Plus en détail

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

Chapitre 2 Le problème de l unicité des solutions Université Joseph Fourier UE MAT 127 Mathématiques année 2011-2012 Chapitre 2 Le problème de l unicité des solutions Ce que nous verrons dans ce chapitre : un exemple d équation différentielle y = f(y)

Plus en détail

Plus courts chemins, programmation dynamique

Plus courts chemins, programmation dynamique 1 Plus courts chemins, programmation dynamique 1. Plus courts chemins à partir d un sommet 2. Plus courts chemins entre tous les sommets 3. Semi-anneau 4. Programmation dynamique 5. Applications à la bio-informatique

Plus en détail

Logique. Plan du chapitre

Logique. Plan du chapitre Logique Ce chapitre est assez abstrait en première lecture, mais est (avec le chapitre suivant «Ensembles») probablement le plus important de l année car il est à la base de tous les raisonnements usuels

Plus en détail

Cours de mathématiques

Cours de mathématiques DEUG MIAS premier niveau Cours de mathématiques année 2003/2004 Guillaume Legendre (version révisée du 3 avril 2015) Table des matières 1 Éléments de logique 1 1.1 Assertions...............................................

Plus en détail

Chapitre 2. Matrices

Chapitre 2. Matrices Département de mathématiques et informatique L1S1, module A ou B Chapitre 2 Matrices Emmanuel Royer emmanuelroyer@mathuniv-bpclermontfr Ce texte mis gratuitement à votre disposition a été rédigé grâce

Plus en détail

Logique binaire. Aujourd'hui, l'algèbre de Boole trouve de nombreuses applications en informatique et dans la conception des circuits électroniques.

Logique binaire. Aujourd'hui, l'algèbre de Boole trouve de nombreuses applications en informatique et dans la conception des circuits électroniques. Logique binaire I. L'algèbre de Boole L'algèbre de Boole est la partie des mathématiques, de la logique et de l'électronique qui s'intéresse aux opérations et aux fonctions sur les variables logiques.

Plus en détail

3 Approximation de solutions d équations

3 Approximation de solutions d équations 3 Approximation de solutions d équations Une équation scalaire a la forme générale f(x) =0où f est une fonction de IR dans IR. Un système de n équations à n inconnues peut aussi se mettre sous une telle

Plus en détail

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

Exercices Alternatifs. Quelqu un aurait-il vu passer un polynôme? Exercices Alternatifs Quelqu un aurait-il vu passer un polynôme? c 2004 Frédéric Le Roux, François Béguin (copyleft LDL : Licence pour Documents Libres). Sources et figures: polynome-lagrange/. Version

Plus en détail

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

Exercices Alternatifs. Quelqu un aurait-il vu passer un polynôme? Exercices Alternatifs Quelqu un aurait-il vu passer un polynôme? c 2004 Frédéric Le Roux, François Béguin (copyleft LDL : Licence pour Documents Libres). Sources et figures: polynome-lagrange/. Version

Plus en détail

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

Cours 02 : Problème général de la programmation linéaire Cours 02 : Problème général de la programmation linéaire Cours 02 : Problème général de la Programmation Linéaire. 5 . Introduction Un programme linéaire s'écrit sous la forme suivante. MinZ(ou maxw) =

Plus en détail

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

CORRIGE LES NOMBRES DECIMAUX RELATIFS. «Réfléchir avant d agir!» Corrigé Cours de Mr JULES v3.3 Classe de Quatrième Contrat 1 Page 1 sur 13 CORRIGE LES NOMBRES DECIMAUX RELATIFS. «Réfléchir avant d agir!» «Correction en rouge et italique.» I. Les nombres décimaux relatifs.

Plus en détail

INTRODUCTION À L ANALYSE FACTORIELLE DES CORRESPONDANCES

INTRODUCTION À L ANALYSE FACTORIELLE DES CORRESPONDANCES INTRODUCTION À L ANALYSE FACTORIELLE DES CORRESPONDANCES Dominique LAFFLY Maître de Conférences, Université de Pau Laboratoire Société Environnement Territoire UMR 5603 du CNRS et Université de Pau Domaine

Plus en détail

Rappel sur les bases de données

Rappel sur les bases de données Rappel sur les bases de données 1) Généralités 1.1 Base de données et système de gestion de base de donnés: définitions Une base de données est un ensemble de données stockées de manière structurée permettant

Plus en détail

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

Chapitre 6. Fonction réelle d une variable réelle Chapitre 6 Fonction réelle d une variable réelle 6. Généralités et plan d étude Une application de I dans R est une correspondance entre les éléments de I et ceu de R telle que tout élément de I admette

Plus en détail

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

Manuel d utilisation 26 juin 2011. 1 Tâche à effectuer : écrire un algorithme 2 éducalgo Manuel d utilisation 26 juin 2011 Table des matières 1 Tâche à effectuer : écrire un algorithme 2 2 Comment écrire un algorithme? 3 2.1 Avec quoi écrit-on? Avec les boutons d écriture........

Plus en détail

Date : 18.11.2013 Tangram en carré page

Date : 18.11.2013 Tangram en carré page Date : 18.11.2013 Tangram en carré page Titre : Tangram en carré Numéro de la dernière page : 14 Degrés : 1 e 4 e du Collège Durée : 90 minutes Résumé : Le jeu de Tangram (appelé en chinois les sept planches

Plus en détail

Probabilités sur un univers fini

Probabilités sur un univers fini [http://mp.cpgedupuydelome.fr] édité le 7 août 204 Enoncés Probabilités sur un univers fini Evènements et langage ensembliste A quelle condition sur (a, b, c, d) ]0, [ 4 existe-t-il une probabilité P sur

Plus en détail

BACCALAUREAT GENERAL MATHÉMATIQUES

BACCALAUREAT GENERAL MATHÉMATIQUES BACCALAUREAT GENERAL FEVRIER 2014 MATHÉMATIQUES SERIE : ES Durée de l épreuve : 3 heures Coefficient : 5 (ES), 4 (L) 7(spe ES) Les calculatrices électroniques de poche sont autorisées, conformement à la

Plus en détail

Résolution de systèmes linéaires par des méthodes directes

Résolution de systèmes linéaires par des méthodes directes Résolution de systèmes linéaires par des méthodes directes J. Erhel Janvier 2014 1 Inverse d une matrice carrée et systèmes linéaires Ce paragraphe a pour objet les matrices carrées et les systèmes linéaires.

Plus en détail

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

Communications collectives et ordonnancement en régime permanent pour plates-formes hétérogènes Loris MARCHAL Laboratoire de l Informatique du Parallélisme Équipe Graal Communications collectives et ordonnancement en régime permanent pour plates-formes hétérogènes Thèse réalisée sous la direction

Plus en détail

III- Raisonnement par récurrence

III- Raisonnement par récurrence III- Raisonnement par récurrence Les raisonnements en mathématiques se font en général par une suite de déductions, du style : si alors, ou mieux encore si c est possible, par une suite d équivalences,

Plus en détail

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

Chapitre 3. Quelques fonctions usuelles. 1 Fonctions logarithme et exponentielle. 1.1 La fonction logarithme Chapitre 3 Quelques fonctions usuelles 1 Fonctions logarithme et eponentielle 1.1 La fonction logarithme Définition 1.1 La fonction 7! 1/ est continue sur ]0, +1[. Elle admet donc des primitives sur cet

Plus en détail

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

Exemples de problèmes et d applications. INF6953 Exemples de problèmes 1 Exemples de problèmes et d applications INF6953 Exemples de problèmes Sommaire Quelques domaines d application Quelques problèmes réels Allocation de fréquences dans les réseaux radio-mobiles Affectation

Plus en détail

Architecture matérielle des systèmes informatiques

Architecture matérielle des systèmes informatiques Architecture matérielle des systèmes informatiques IDEC, Renens. Version novembre 2003. Avertissement : ce support de cours n est pas destiné à l autoformation et doit impérativement être complété par

Plus en détail

LES CARTES À POINTS : POUR UNE MEILLEURE PERCEPTION

LES CARTES À POINTS : POUR UNE MEILLEURE PERCEPTION LES CARTES À POINTS : POUR UNE MEILLEURE PERCEPTION DES NOMBRES par Jean-Luc BREGEON professeur formateur à l IUFM d Auvergne LE PROBLÈME DE LA REPRÉSENTATION DES NOMBRES On ne conçoit pas un premier enseignement

Plus en détail

SOCLE COMMUN - La Compétence 3 Les principaux éléments de mathématiques et la culture scientifique et technologique

SOCLE COMMUN - La Compétence 3 Les principaux éléments de mathématiques et la culture scientifique et technologique SOCLE COMMUN - La Compétence 3 Les principaux éléments de mathématiques et la culture scientifique et technologique DOMAINE P3.C3.D1. Pratiquer une démarche scientifique et technologique, résoudre des

Plus en détail

Chp. 4. Minimisation d une fonction d une variable

Chp. 4. Minimisation d une fonction d une variable Chp. 4. Minimisation d une fonction d une variable Avertissement! Dans tout ce chapître, I désigne un intervalle de IR. 4.1 Fonctions convexes d une variable Définition 9 Une fonction ϕ, partout définie

Plus en détail

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

Chapitre 2. Eléments pour comprendre un énoncé Chapitre 2 Eléments pour comprendre un énoncé Ce chapitre est consacré à la compréhension d un énoncé. Pour démontrer un énoncé donné, il faut se reporter au chapitre suivant. Les tables de vérité données

Plus en détail

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

Faculté des sciences Département de mathématiques. Théorie des graphes Faculté des sciences Département de mathématiques Théorie des graphes Deuxièmes bacheliers en sciences mathématiques Année académique 2009 2010 Michel Rigo Table des matières Introduction 1 Chapitre I.

Plus en détail

Image d un intervalle par une fonction continue

Image d un intervalle par une fonction continue DOCUMENT 27 Image d un intervalle par une fonction continue La continuité d une fonction en un point est une propriété locale : une fonction est continue en un point x 0 si et seulement si sa restriction

Plus en détail

Continuité et dérivabilité d une fonction

Continuité et dérivabilité d une fonction DERNIÈRE IMPRESSIN LE 7 novembre 014 à 10:3 Continuité et dérivabilité d une fonction Table des matières 1 Continuité d une fonction 1.1 Limite finie en un point.......................... 1. Continuité

Plus en détail

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

Exercices du Cours de la programmation linéaire donné par le Dr. Ali DERBALA 75. Un plombier connaît la disposition de trois tuyaux sous des dalles ( voir figure ci dessous ) et il lui suffit de découvrir une partie de chacun d eux pour pouvoir y poser les robinets. Il cherche

Plus en détail

Première partie. Préliminaires : noyaux itérés. MPSI B 6 juin 2015

Première partie. Préliminaires : noyaux itérés. MPSI B 6 juin 2015 Énoncé Soit V un espace vectoriel réel. L espace vectoriel des endomorphismes de V est désigné par L(V ). Lorsque f L(V ) et k N, on désigne par f 0 = Id V, f k = f k f la composée de f avec lui même k

Plus en détail

1 Complément sur la projection du nuage des individus

1 Complément sur la projection du nuage des individus TP 0 : Analyse en composantes principales (II) Le but de ce TP est d approfondir nos connaissances concernant l analyse en composantes principales (ACP). Pour cela, on reprend les notations du précédent

Plus en détail

Initiation à l algorithmique

Initiation à l algorithmique Informatique S1 Initiation à l algorithmique procédures et fonctions 2. Appel d une fonction Jacques TISSEAU Ecole Nationale d Ingénieurs de Brest Technopôle Brest-Iroise CS 73862-29238 Brest cedex 3 -

Plus en détail

Qualité du logiciel: Méthodes de test

Qualité du logiciel: Méthodes de test Qualité du logiciel: Méthodes de test Matthieu Amiguet 2004 2005 Analyse statique de code Analyse statique de code Étudier le programme source sans exécution Généralement réalisée avant les tests d exécution

Plus en détail

Construction d un cercle tangent à deux cercles donnés.

Construction d un cercle tangent à deux cercles donnés. Préparation au CAPES Strasbourg, octobre 2008 Construction d un cercle tangent à deux cercles donnés. Le problème posé : On se donne deux cercles C et C de centres O et O distincts et de rayons R et R

Plus en détail

Corps des nombres complexes, J Paul Tsasa

Corps des nombres complexes, J Paul Tsasa Corps des nombres complexes, J Paul Tsasa One Pager Février 2013 Vol. 5 Num. 011 Copyright Laréq 2013 http://www.lareq.com Corps des Nombres Complexes Définitions, Règles de Calcul et Théorèmes «Les idiots

Plus en détail

Soit la fonction affine qui, pour représentant le nombre de mois écoulés, renvoie la somme économisée.

Soit la fonction affine qui, pour représentant le nombre de mois écoulés, renvoie la somme économisée. ANALYSE 5 points Exercice 1 : Léonie souhaite acheter un lecteur MP3. Le prix affiché (49 ) dépasse largement la somme dont elle dispose. Elle décide donc d économiser régulièrement. Elle a relevé qu elle

Plus en détail

CH.6 Propriétés des langages non contextuels

CH.6 Propriétés des langages non contextuels CH.6 Propriétés des langages non contetuels 6.1 Le lemme de pompage 6.2 Les propriétés de fermeture 6.3 Les problèmes de décidabilité 6.4 Les langages non contetuels déterministes utomates ch6 1 6.1 Le

Plus en détail

Calcul différentiel sur R n Première partie

Calcul différentiel sur R n Première partie Calcul différentiel sur R n Première partie Université De Metz 2006-2007 1 Définitions générales On note L(R n, R m ) l espace vectoriel des applications linéaires de R n dans R m. Définition 1.1 (différentiabilité

Plus en détail

chapitre 4 Nombres de Catalan

chapitre 4 Nombres de Catalan chapitre 4 Nombres de Catalan I Dénitions Dénition 1 La suite de Catalan (C n ) n est la suite dénie par C 0 = 1 et, pour tout n N, C n+1 = C k C n k. Exemple 2 On trouve rapidement C 0 = 1, C 1 = 1, C

Plus en détail

Carl-Louis-Ferdinand von Lindemann (1852-1939)

Carl-Louis-Ferdinand von Lindemann (1852-1939) Par Boris Gourévitch "L'univers de Pi" http://go.to/pi314 [email protected] Alors ça, c'est fort... Tranches de vie Autour de Carl-Louis-Ferdinand von Lindemann (1852-1939) est transcendant!!! Carl Louis

Plus en détail

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

La programmation linéaire : une introduction. Qu est-ce qu un programme linéaire? Terminologie. Écriture mathématique La programmation linéaire : une introduction Qu est-ce qu un programme linéaire? Qu est-ce qu un programme linéaire? Exemples : allocation de ressources problème de recouvrement Hypothèses de la programmation

Plus en détail

Représentation d un entier en base b

Représentation d un entier en base b Représentation d un entier en base b 13 octobre 2012 1 Prérequis Les bases de la programmation en langage sont supposées avoir été travaillées L écriture en base b d un entier est ainsi défini à partir

Plus en détail

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

Exo7. Calculs de déterminants. Fiche corrigée par Arnaud Bodin. Exercice 1 Calculer les déterminants des matrices suivantes : Exercice 2. Eo7 Calculs de déterminants Fiche corrigée par Arnaud Bodin Eercice Calculer les déterminants des matrices suivantes : Correction Vidéo ( ) 0 6 7 3 4 5 8 4 5 6 0 3 4 5 5 6 7 0 3 5 4 3 0 3 0 0 3 0 0 0 3

Plus en détail

Quelques algorithmes simples dont l analyse n est pas si simple

Quelques algorithmes simples dont l analyse n est pas si simple Quelques algorithmes simples dont l analyse n est pas si simple Michel Habib [email protected] http://www.liafa.jussieu.fr/~habib Algorithmique Avancée M1 Bioinformatique, Octobre 2008 Plan Histoire

Plus en détail

Théorie et codage de l information

Théorie et codage de l information Théorie et codage de l information Les codes linéaires - Chapitre 6 - Principe Définition d un code linéaire Soient p un nombre premier et s est un entier positif. Il existe un unique corps de taille q

Plus en détail

Formes quadratiques. 1 Formes quadratiques et formes polaires associées. Imen BHOURI. 1.1 Définitions

Formes quadratiques. 1 Formes quadratiques et formes polaires associées. Imen BHOURI. 1.1 Définitions Formes quadratiques Imen BHOURI 1 Ce cours s adresse aux étudiants de niveau deuxième année de Licence et à ceux qui préparent le capes. Il combine d une façon indissociable l étude des concepts bilinéaires

Plus en détail

Sujet proposé par Yves M. LEROY. Cet examen se compose d un exercice et de deux problèmes. Ces trois parties sont indépendantes.

Sujet proposé par Yves M. LEROY. Cet examen se compose d un exercice et de deux problèmes. Ces trois parties sont indépendantes. Promotion X 004 COURS D ANALYSE DES STRUCTURES MÉCANIQUES PAR LA MÉTHODE DES ELEMENTS FINIS (MEC 568) contrôle non classant (7 mars 007, heures) Documents autorisés : polycopié ; documents et notes de

Plus en détail

De même, le périmètre P d un cercle de rayon 1 vaut P = 2π (par définition de π). Mais, on peut démontrer (difficilement!) que

De même, le périmètre P d un cercle de rayon 1 vaut P = 2π (par définition de π). Mais, on peut démontrer (difficilement!) que Introduction. On suppose connus les ensembles N (des entiers naturels), Z des entiers relatifs et Q (des nombres rationnels). On s est rendu compte, depuis l antiquité, que l on ne peut pas tout mesurer

Plus en détail

La persistance des nombres

La persistance des nombres regards logique & calcul La persistance des nombres Quand on multiplie les chiffres d un nombre entier, on trouve un autre nombre entier, et l on peut recommencer. Combien de fois? Onze fois au plus...

Plus en détail

CONSEIL NATIONAL DE LA COMPTABILITÉ. 1.4 - Remplacement d instruments

CONSEIL NATIONAL DE LA COMPTABILITÉ. 1.4 - Remplacement d instruments CONSEIL NATIONAL DE LA COMPTABILITÉ Réponse aux questions pratiques liées à l application du règlement CRC n 2002-09 relatif à la comptabilisation des instruments financiers à terme par les entreprises

Plus en détail

Correction de l examen de la première session

Correction de l examen de la première session de l examen de la première session Julian Tugaut, Franck Licini, Didier Vincent Si vous trouvez des erreurs de Français ou de mathématiques ou bien si vous avez des questions et/ou des suggestions, envoyez-moi

Plus en détail

Pourquoi l apprentissage?

Pourquoi l apprentissage? Pourquoi l apprentissage? Les SE sont basés sur la possibilité d extraire la connaissance d un expert sous forme de règles. Dépend fortement de la capacité à extraire et formaliser ces connaissances. Apprentissage

Plus en détail

Intégration et probabilités TD1 Espaces mesurés Corrigé

Intégration et probabilités TD1 Espaces mesurés Corrigé Intégration et probabilités TD1 Espaces mesurés Corrigé 2012-2013 1 Petites questions 1 Est-ce que l ensemble des ouverts de R est une tribu? Réponse : Non, car le complémentaire de ], 0[ n est pas ouvert.

Plus en détail

La fonction exponentielle

La fonction exponentielle DERNIÈRE IMPRESSION LE 2 novembre 204 à :07 La fonction exponentielle Table des matières La fonction exponentielle 2. Définition et théorèmes.......................... 2.2 Approche graphique de la fonction

Plus en détail

enquête pour les fautes sur le fond, ce qui est graves pour une encyclopédie.

enquête pour les fautes sur le fond, ce qui est graves pour une encyclopédie. 4.0 Contrôles /4 4 e enquête pour les fautes sur le fond, ce qui est graves pour une encyclopédie. RPPEL de 0. Wikipédia 2/2 Dans le chapitre : XX e siècle : ( 4.0 mythe paroxysme ) sous la photo d un

Plus en détail

Calcul intégral élémentaire en plusieurs variables

Calcul intégral élémentaire en plusieurs variables Calcul intégral élémentaire en plusieurs variables PC*2 2 septembre 2009 Avant-propos À part le théorème de Fubini qui sera démontré dans le cours sur les intégrales à paramètres et qui ne semble pas explicitement

Plus en détail

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

Baccalauréat ES/L Amérique du Sud 21 novembre 2013 Baccalauréat ES/L Amérique du Sud 21 novembre 2013 A. P. M. E. P. EXERCICE 1 Commun à tous les candidats 5 points Une entreprise informatique produit et vend des clés USB. La vente de ces clés est réalisée

Plus en détail

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux. UEO11 COURS/TD 1 Contenu du semestre Cours et TDs sont intégrés L objectif de ce cours équivalent a 6h de cours, 10h de TD et 8h de TP est le suivant : - initiation à l algorithmique - notions de bases

Plus en détail

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

Exercices - Fonctions de plusieurs variables : corrigé. Pour commencer Pour commencer Exercice 1 - Ensembles de définition - Première année - 1. Le logarithme est défini si x + y > 0. On trouve donc le demi-plan supérieur délimité par la droite d équation x + y = 0.. 1 xy

Plus en détail

Chapitre VI - Méthodes de factorisation

Chapitre VI - Méthodes de factorisation Université Pierre et Marie Curie Cours de cryptographie MM067-2012/13 Alain Kraus Chapitre VI - Méthodes de factorisation Le problème de la factorisation des grands entiers est a priori très difficile.

Plus en détail

Calculer avec Sage. Revision : 417 du 1 er juillet 2010

Calculer avec Sage. Revision : 417 du 1 er juillet 2010 Calculer avec Sage Alexandre Casamayou Guillaume Connan Thierry Dumont Laurent Fousse François Maltey Matthias Meulien Marc Mezzarobba Clément Pernet Nicolas Thiéry Paul Zimmermann Revision : 417 du 1

Plus en détail

Cours d analyse numérique SMI-S4

Cours d analyse numérique SMI-S4 ours d analyse numérique SMI-S4 Introduction L objet de l analyse numérique est de concevoir et d étudier des méthodes de résolution de certains problèmes mathématiques, en général issus de problèmes réels,

Plus en détail

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

Table des matières. 1 Programmation linéaire 1 Table des matières 1 Programmation linéaire 1 2 La théorie des graphes 3 2.1 Dénitions et premières exemples................... 6 2.2 Représentation non graphique d'un graphe.............. 9 2.2.1 Représentation

Plus en détail