690 likes | 944 Views
Cours de graphes. Chemins d’Euler. Chemins de Hamilton. Couplages. Les grandes lignes du cours. Définitions de base Connexité Les plus courts chemins Dijkstra et Bellmann-Ford Arbres Arbres de recouvrement minimaux Problèmes de flots Coloriage de graphes, graphes planaires Couplage
E N D
Cours de graphes • Chemins d’Euler. • Chemins de Hamilton. • Couplages. Cours de graphes 6 - Intranet
Les grandes lignes du cours • Définitions de base • Connexité • Les plus courts chemins • Dijkstra et Bellmann-Ford • Arbres • Arbres de recouvrement minimaux • Problèmes de flots • Coloriage de graphes, graphes planaires • Couplage • Chemins d’Euler et de Hamilton • Problèmes NP-complets Cours de graphes 6 - Intranet
Chemins d’Euler----------------------------------------------------------------- C H E M I N S E T C Y C L E S D’ E U L E R ! ! ! Cours de graphes 6 - Intranet
Chemins d’Euler----------------------------------------------------------------- • L’origine historique : • La Pregel et les ponts à Königsberg ( Kaliningrad ) ! • Pouvons-nous trouver un chemin qui traverse chaque pont une et une seule fois ? • Si oui, les points de départ et d’arrivée coïncident-ils ? Cours de graphes 6 - Intranet
Chemins d’Euler----------------------------------------------------------------- • En termes de graphes : • Nous avons un multi-graphe ! • Pouvons-nous trouver un chemin qui passe une et une seule fois par chaque arête ? ( couverture des arêtes ) • Si oui, le chemin est-il un cycle ? Cours de graphes 6 - Intranet
Chemins d’Euler----------------------------------------------------------------- • Nous pouvons passer d’un multi-graphe à un graphe simple : • Il suffit de matérialiser un pont par un sommet ! • Nous conservons le • même problème en • termes de couverture • des arêtes ! Cours de graphes 6 - Intranet
Chemins d’Euler----------------------------------------------------------------- • La « maison de Nicolas » : • Pouvons-nous dessiner la figure suivante d’un seule trait et sans lever le crayon ? • La réponse est OUI ! 2 3 6 A et D sont les seuls sommets de degré impair ! 5 7 1 4 D A 8 Le point de départ est l’un de ceux-ci et le point d’arrivée l’autre. Cours de graphes 6 - Intranet
Chemins d’Euler----------------------------------------------------------------- L E T H E O R E M E D’ E U L E R S U R L E S C H E M I N S ! ! ! Cours de graphes 6 - Intranet
Chemins d’Euler----------------------------------------------------------------- • Le théorème d’Euler (1736) : • Un multi-graphe possède un chemin d’Euler si et seulement si tous ses sommets, sauf peut-être deux, sont de degré pair ! • Les sommets de degré impair, s’ils existent, sont les points de départ et d’arrivée ! • Si tous les sommets sont de degré pair, et seulement dans ce cas, le chemin d’Euler est un cycle d’Euler ! • Remarque : • Nous conservons le même résultat si nous transformons un multi-graphe en un graphe simple, car les sommets auxiliaires ( les ponts ) sont de degré 2 ! Cours de graphes 6 - Intranet
Preuve du théorème d’Euler----------------------------------------------------------------- • Admettons l’existence d’un chemin ou d’un cycle d’Euler et déduisons-en les propriétés sur les degrés ! • Soit le chemin d’Euler suivant : • Si « u » est différent de « v », le sommet « u » intervient avec un degré impair dans le chemin ! • Si « u » est différent de « v », le sommet « v » intervient avec un degré impair dans le chemin ! • Si « u » et « v » sont identiques, c’est-à-dire en présence d’un cycle, le sommet « u » intervient avec un degré pair ! • Tout autre sommet « w » intervient avec un degré pair dans le chemin d’Euler ! • Le chemin ou cycle d’Euler contient toutes les arêtes du graphe, d’où le résultat annoncé ! . . . . . . w u v Cours de graphes 6 - Intranet
Preuve du théorème d’Euler----------------------------------------------------------------- • Admettons les conditions de parité sur les degrés et déduisons-en l’existence d’un chemin ou cycle d’Euler ! • Si tous les sommets du graphe G sont de degré pair : • En enlevant une arête ( u , v ) nous obtenons un graphe G’ dont exactement deux arêtes sont de degré impair ! • Par application de la seconde partie du théorème ( celle qui est à venir ), nous déduisons que G’ admet un chemin d’Euler qui commence en « u » et se termine en « v » ! • En insérant à nouveau l’arête ( u , v ) nous obtenons le cycle d’Euler annoncé ! Cours de graphes 6 - Intranet
Preuve du théorème d’Euler----------------------------------------------------------------- • Admettons les conditions de parité sur les degrés et déduisons-en l’existence d’un chemin ou cycle d’Euler ! • Si « u » et « v » sont les seuls sommets de degré impair : • Nous choisissons une arête ( u , w ) et nous la supprimons • pour obtenir un graphe G’ ! • Admettons d’abord que G’ est connexe ! • Si v = w , tous les sommets de G’ sont pairs et il existe un • cycle d’Euler ( v ; v ) ! Et donc un chemin d’Euler ( u , v ; v ) ! ( Cas A ) Cours de graphes 6 - Intranet
Preuve du théorème d’Euler----------------------------------------------------------------- u et v sont au départ de degrés impairs ! u v La suppression de l’arête ( u , v ) les rend de degrés pairs ! Par hypothèse sur le nombre d’arêtes, et vu que tous les sommets sont de degrés pairs, il existe un cycle d’Euler avec v comme point de départ et d’arrivée ! Cours de graphes 6 - Intranet
Preuve du théorème d’Euler----------------------------------------------------------------- • Admettons les conditions de parité sur les degrés et déduisons-en l’existence d’un chemin ou cycle d’Euler ! • Si « u » et « v » sont les seuls sommets de degré impair : • Nous choisissons une arête ( u , w ) et nous la supprimons • pour obtenir un graphe G’ ! • Admettons d’abord que G’ est connexe ! • Si v = w , tous les sommets de G’ sont pairs et il existe un • cycle d’Euler ( v ; v ) ! Et donc un chemin d’Euler ( u , v ; v ) ! • Si v = w , v et w sont les seuls sommets dans G’ de degré • impair ! Il existe donc dans G’ un chemin d’Euler ( w ; v ) ! • Et du coup un chemin d’Euler ( u , w ; v ) dans G ! ( Cas A ) / Cours de graphes 6 - Intranet
Preuve du théorème d’Euler----------------------------------------------------------------- u et v sont au départ de degrés impairs et w de degré pair ! u v w La suppression de l’arête ( u , w ) donne à u de degré pair et à v et w des degrés impairs ! Par hypothèse sur le nombre d’arêtes, et vu que v et w sont les seuls sommets de degrés impairs, il existe un chemin d’Euler avec w comme départ et v comme arrivée ! Cours de graphes 6 - Intranet
Preuve du théorème d’Euler----------------------------------------------------------------- • Admettons les conditions de parité sur les degrés et déduisons-en l’existence d’un chemin ou cycle d’Euler ! • Si « u » et « v » sont les seuls sommets de degré impair : • Nous choisissons une arête ( u , w ) et nous la supprimons • pour obtenir un graphe G’ ! • Admettons d’abord que G’ est connexe ! • Si v = w , tous les sommets de G’ sont pairs et il existe un • cycle d’Euler ( v ; v ) ! Et donc un chemin d’Euler ( u , v ; v ) ! • Si v = w , v et w sont les seuls sommets dans G’ de degré • impair ! Il existe donc dans G’ un chemin d’Euler ( w ; v ) ! • Et du coup un chemin d’Euler ( u , w ; v ) dans G ! ( Cas A ) / Cours de graphes 6 - Intranet
Preuve du théorème d’Euler----------------------------------------------------------------- • Admettons les conditions de parité sur les degrés et déduisons-en l’existence d’un chemin ou cycle d’Euler ! • Si « u » et « v » sont les seuls sommets de degré impair : • Nous choisissons une arête ( u , w ) et nous la supprimons • pour obtenir un graphe G’ ! • Admettons maintenant que G’ n’est plus connexe ! • Nous avons les composantes connexes CC( u ) et CC( w ) ! ( Cas B ) Pourquoi ? CC( u ) CC( w ) u w v On l’appelle un « isthme » ! Cours de graphes 6 - Intranet
Preuve du théorème d’Euler----------------------------------------------------------------- • Admettons les conditions de parité sur les degrés et déduisons-en l’existence d’un chemin ou cycle d’Euler ! • Si « u » et « v » sont les seuls sommets de degré impair : • Nous choisissons une arête ( u , w ) et nous la supprimons • pour obtenir un graphe G’ ! • Admettons maintenant que G’ n’est plus connexe ! • Nous avons les composantes connexes CC( u ) et CC( w ) ! • Lemme : La somme des degrés des sommets d’un graphe • (connexe) est paire ! • Donc, le nombre de sommets de degrés impairs • est paire ! ! ! ( Cas B ) Cours de graphes 6 - Intranet
Preuve du théorème d’Euler----------------------------------------------------------------- • Admettons les conditions de parité sur les degrés et déduisons-en l’existence d’un chemin ou cycle d’Euler ! • Si « u » et « v » sont les seuls sommets de degré impair : • Nous choisissons une arête ( u , w ) et nous la supprimons • pour obtenir un graphe G’ ! • Admettons maintenant que G’ n’est plus connexe ! • Nous avons les composantes connexes CC( u ) et CC( w ) ! ( Cas B ) CC( u ) CC( w ) u w Tous pairs ! Deux impairs ou tous pairs ! v On l’appelle un « isthme » ! Cours de graphes 6 - Intranet
Preuve du théorème d’Euler----------------------------------------------------------------- • Admettons les conditions de parité sur les degrés et déduisons-en l’existence d’un chemin ou cycle d’Euler ! • Si « u » et « v » sont les seuls sommets de degré impair : • Nous choisissons une arête ( u , w ) et nous la supprimons • pour obtenir un graphe G’ ! • Admettons maintenant que G’ n’est plus connexe ! • Nous avons les composantes connexes CC( u ) et CC( w ) ! • Les sommets de CC( u ) sont pairs, d’où le circuit d’Euler ( u ; u ). • CC( w ) possède 0 ( v = w ) ou 2 ( v = w ) sommets de degrés • impairs et il existe un chemin d’Euler ( w ; v ) ! • On a donc le chemin d’Euler ( u ; u , w ; v ) , comme annoncé ! ( Cas B ) / Cours de graphes 6 - Intranet
Construction d’un chemin d’Euler----------------------------------------------------------------- L A C O N S T R U C T I O N D ‘ U N C H E M I N D’ E U L E R ! ! ! Cours de graphes 6 - Intranet
Construction d’un chemin d’Euler----------------------------------------------------------------- • Supposons données les conditions de parité sur les degrés ! • Si tous les sommets sont de degré pair, nous enlevons une arête ( u , v ) et nous construisons le chemin d’Euler ( u ; v ) ! • Nous considérons un sommet courant « s » à partir duquel nous continuons le chemin ! Au début, nous choisissons pour « s » un des deux sommets impairs du graphe ! • Si « s » est identique à « v » et qu’il est isolé, nous avons fini ! • Si « s » n’a que le seul voisin « u », nous empruntons l’arête en question avant de la supprimer ! Nous continuons en « u ». • Si « s » a plusieurs voisins, dont l’isthme ( s , u ) , nous empruntons n’importe quelle arête, sauf l’isthme ! • Remarque : l’isthme est unique ( pourquoi ? ) ! • Sinon, nous choisissons une arête ( s , u ) quelconque ! Cours de graphes 6 - Intranet
Construction d’un chemin d’Euler----------------------------------------------------------------- • Complexité : • A chaque étape, nous choisissons une des O( | E | ) arêtes ! • A chaque étape, nous sélectionnons une arête et testons, à moins que l’arête ne soit unique, si elle est un isthme en lançant une « vague » qui est de complexité O( | E | ) ! • Si elle n’est pas un isthme, l’arête est parcourue ! • Sinon, nous parcourons une quelconque autre arête ! • Globalement, nous obtenons une complexité en O( | E |^2 ) = O( | V |^4 ). Cours de graphes 6 - Intranet
Construction d’un chemin d’Euler----------------------------------------------------------------- U N E X E M P L E Cours de graphes 6 - Intranet
Construction d’un chemin d’Euler----------------------------------------------------------------- • Exemple : Nous évitons l’isthme et nous continuons avec l’une des deux autres arêtes ! Isthme ! D Cours de graphes 6 - Intranet
Construction d’un chemin d’Euler----------------------------------------------------------------- • Exemple : Isthme ! D A prendre l’isthme, nous perdons toute possibilité de visiter les sommets à droite ! Cours de graphes 6 - Intranet
Construction d’un chemin d’Euler----------------------------------------------------------------- • Exemple : L’isthme est le seul choix possible ! Isthme ! D Cours de graphes 6 - Intranet
Chemins et cycles de Hamilton----------------------------------------------------------------- C H E M I N S E T C Y C L E S D E H A M I L T O N ! ! ! Cours de graphes 6 - Intranet
Chemins et cycles de Hamilton----------------------------------------------------------------- • Pouvons-nous trouver un chemin qui passe une et une seule fois dans chaque sommet ? • Si oui, les points de départ et d’arrivée sont-ils voisins ? Dodéca-èdre C’est le casse-tête inventé par Lord Hamilton en 1856. Cycle de Hamilton Cours de graphes 6 - Intranet
Chemins et cycles de Hamilton----------------------------------------------------------------- • Pouvons-nous trouver un chemin qui passe une et une seule fois dans chaque sommet ? • Si oui, les points de départ et d’arrivée sont-ils voisins ? Dodéca-èdre Le greedy ne marche pas car il faut considérer tout le graphe pour construire la solution ! Cycle de Hamilton Cours de graphes 6 - Intranet
Chemins et cycles de Hamilton----------------------------------------------------------------- • Pouvons-nous trouver un chemin qui passe une et une seule fois dans chaque sommet ? • Si oui, les points de départ et d’arrivée sont-ils voisins ? Le graphe complet K ! Le graphe de Peterson ! 5 Ce graphe admet des chemins de Hamilton ! Il est sans chemin de Hamilton ! Cours de graphes 6 - Intranet
Chemins et cycles de Hamilton----------------------------------------------------------------- U N E A P P L I C A T I O N ! ! ! Cours de graphes 6 - Intranet
Chemins et cycles de Hamilton----------------------------------------------------------------- • Nous avons 4 jeunes filles A, B, C, D et 4 jeunes gens a, b, c, d . • Ils dansent des rondes formées de files et garçons en alternance. • Combien de rondes peuvent-ils danser si chaque jeune fille ne danse qu’une seule fois à côté du même jeune homme ? A a Le graphe bi-parti complet K ! 4,4 B b Nous cherchons un cycle de Hamilton ! On peut former une deuxième ronde ! C c D d Cours de graphes 6 - Intranet
Chemins et cycles de Hamilton----------------------------------------------------------------- Q U E L Q U E S A F F I R M A T I O N S ! ! ! Cours de graphes 6 - Intranet
Chemins et cycles de Hamilton----------------------------------------------------------------- • Savoir si un graphe admet un chemin ou un cycle de Hamilton est NP-complet en général ! • Il s’agit de savoir s’il existe un chemin simple qui couvre les sommets ! Or, le nombre de chemins simples est en général exponentiel par rapport au nombre de sommets ! • Le chemin de Hamilton comporte | V | - 1 arêtes sur les | E | arêtes qu’il y a dans le graphe ! • Lesquelles faut-il prendre, lesquelles faut-il laisser ? ? ? Cours de graphes 6 - Intranet
Chemins et cycles de Hamilton----------------------------------------------------------------- • Il y a des cas particuliers : • Un graphe bi-parti avec un nombre impair de sommets n’est jamais hamiltonien ! • Un graphe avec n sommets ayant un degré d’au moins n/2 pour chaque sommet est hamiltonien ( Dirac ). • Un graphe avec n sommets tel que pour toute paire de sommets u et v qui ne sont pas voisins on ait la propriété D( u ) + D( v ) >= n est hamiltonien ( Ore ). Cours de graphes 6 - Intranet
Chemins et cycles de Hamilton----------------------------------------------------------------- • Une problématique particulière : • Le problème du voyageur de commerce consiste à considérer un graphe pondéré complet et à trouver le cycle de Hamilton le moins cher parmi un nombre exponentiel de cycles de Hamilton ! • Si le graphe est incomplet, la simple question de savoir s’il existe un cycle de Hamilton est NP-complète ( sans vouloir trouver le meilleur de ces cycles ) ! • Soit c’est difficile d’en trouver un seul cycle, soit c’est difficile à cause du trop grand nombre de cycles ! Cours de graphes 6 - Intranet
Couplages-----------------------------------------------------------------Couplages----------------------------------------------------------------- C O U P L A G E S ! ! ! Cours de graphes 6 - Intranet
Couplages-----------------------------------------------------------------Couplages----------------------------------------------------------------- • Un couplage d’un graphe G = ( V , E ) consiste à trouver un sous-ensemble C des arêtes tel que chaque sommet fasse partie d’au plus un couple ! Souvent, on souhaite maximiser le nombre de couples ! Un couplage est parfait s’il sature tous les sommets du graphe ! Un couplage Les arêtes retenues et les sommets atteints sont dits saturés par le couplage. Cours de graphes 6 - Intranet
Couplages-----------------------------------------------------------------Couplages----------------------------------------------------------------- • Un couplage d’un graphe G = ( V , E ) consiste à trouver un sous-ensemble C des arêtes tel que chaque sommet fasse partie d’au plus un couple ! Souvent, on souhaite maximiser le nombre de couples ! Un couplage est parfait s’il sature tous les sommets du graphe ! Un couplage parfait ! Les arêtes retenues et les sommets atteints sont dits saturés par le couplage. Un couplage maximal, non parfait ! Cours de graphes 6 - Intranet
Deux exemples----------------------------------------------------------------- D E U X E X E M P L E S Cours de graphes 6 - Intranet
Deux exemples----------------------------------------------------------------- • Exemple : • Une promotion d’élèves qui doivent réaliser leur projet d’algorithmique en binômes, • des affinités, qui sont toujours réciproques, entre certains élèves. • Quel est le maximum de binômes que nous pouvons former en respectant les affinités ? Y a-t-il une solution qui permette à tout élève de trouver un binôme ? Nous cherchons un couplage maximal ! Nous aimerions qu'il soit parfait ! Cours de graphes 6 - Intranet
Deux exemples----------------------------------------------------------------- • Exemple : • des lycées représentés par autant de sommets qu’il y a de places, • des élèves qui ont émis des choix ( arêtes entre des élèves et des places dans les lycées ). • Y a-t-il un couplage qui sature les sommets-élèves ? • Un problème plus général : • Nous pouvons pondérer les arêtes par des préférences et choisir le couplage qui maximise la somme des satisfactions. Cours de graphes 6 - Intranet
Deux exemples----------------------------------------------------------------- Lycées Elèves Y a-t-il un couplage qui sature les élèves ? OUI ! ! ! Cours de graphes 6 - Intranet
Deux exemples----------------------------------------------------------------- • Les c-couplages : • Un lycée offrant p places est représenté par p sommets non reliés entre eux. • Nous pourrions fusionner ces sommets en un unique sommet qui peut faire partie d’au plus p couples. • Un c-couplage associe à chaque sommet u un nombre maximum de couples dans lequel ce sommet peut apparaître. • Ce nombre doit être inférieur au degré du sommet pour que le problème soit intéressant ! Cours de graphes 6 - Intranet
Deux exemples----------------------------------------------------------------- Lycées Elèves 3 1 Trivaux ! 1 2 1 1 2 Cours de graphes 6 - Intranet
Deux exemples----------------------------------------------------------------- Lycées Elèves 3 1 Y a-t-il un c-couplage qui sature les élèves ? 1 2 1 1 2 Cours de graphes 6 - Intranet
Couplages-----------------------------------------------------------------Couplages----------------------------------------------------------------- C O M M E N T T R O U V E R L E S 1 - C O U P L A G E S M A X I M A U X ? ? ? Cours de graphes 6 - Intranet
Couplages-----------------------------------------------------------------Couplages----------------------------------------------------------------- • Maximisation des 1-couplages ! • Un chemin alterné est un chemin simple qui • commence en un sommet non saturé et • qui comporte une alternance d’arêtessaturées et non-saturées. • Un chemin améliorant est un chemin alterné qui se termine en un sommet non saturé ! Saturé : Chemin alterné ! Non-saturé : Chemin améliorant ! Cours de graphes 6 - Intranet
Couplages-----------------------------------------------------------------Couplages----------------------------------------------------------------- Le chemin améliorant ! • Nous avons toujours : • Les extrémités d’un chemin améliorant sont non-saturées ! • Les sommets intermédiaires sont saturés ! • Il y a une arête non-saturée de plus que d’arêtes saturées ! • Nous améliorons le couplage en • saturant les arêtes du chemin améliorant qui ne l’étaient pas • et en dé-saturant celles qui l’étaient. Cours de graphes 6 - Intranet