630 likes | 911 Views
Cours de Graphes. Alexandra Bac - Marc Gengler Azeddine Zidouni. Marc Gengler Marc.Gengler@esil.univmed.fr. 18h de cours 24h de TD … et un examen. Les grandes lignes du cours. Définitions de base Connexité Les plus courts chemins Floyd-Warshall, Dijkstra et Bellmann-Ford Arbres
E N D
Cours de Graphes Alexandra Bac - Marc Gengler Azeddine Zidouni Marc Gengler Marc.Gengler@esil.univmed.fr 18h de cours 24h de TD … et un examen Cours de graphes 1 - Intranet
Les grandes lignes du cours • Définitions de base • Connexité • Les plus courts chemins • Floyd-Warshall, Dijkstra et Bellmann-Ford • Arbres • Arbres de recouvrement minimaux • Problèmes de flots, Ford & Fulkerson • Coloriage de graphes • Couplage • Chemins d’Euler et de Hamilton • Problèmes NP-complets Cours de graphes 1 - Intranet
Bibliographie • Tout ce qui contient • graphes, graphs. • Internet • souvent, c’est très simplifié ou très dense, • et pas toujours correct. • Mes choix • Introduction to Algorithms, Leiserson et al. • Algorithms, Sedgewick. • Fundamental Algorithms, Knuth. • Graphes, Berge. • Wikipedia. Cours de graphes 1 - Intranet
L E S D E F I N I T I O N S D E B A S E Cours de graphes 1 - Intranet
Définitions de base----------------------------------------------------------------- • Il y a des sommets ! (vertex, vertices) • Il y a des arêtes ( bi-directionelles ) ! (edge) • Il y a des arcs ( mono-directionnels ) ! (arc) Cours de graphes 1 - Intranet
Définitions de base----------------------------------------------------------------- • Formellement : • Il y a l’ensemble V des sommets. • Il y en a | V | . • La complexité est fonction du nombre de sommets. • Il y a l’ensemble E des arcs et arêtes. • C’est une partie du produit cartésien V x V . ( a , b ) e E signifie que l’arc du sommet a vers le sommet b existe. Cours de graphes 1 - Intranet
Définitions de base----------------------------------------------------------------- • Formellement : • Il y a l’ensemble V des sommets. • Il y en a | V | . • La complexité est fonction du nombre de sommets. • Il y a l’ensemble E des arcs et arêtes. • C’est une partie du produit cartésien V x V . • E peut être réflexif , irréflexif ou ni l’un, ni l’autre. • E peut être symétrique , anti-symétrique ou ni - ni. Graphe non orienté ! Graphe orienté ! Cours de graphes 1 - Intranet
Définitions de base----------------------------------------------------------------- • Formellement : • Il y a l’ensemble V des sommets. • Il y en a | V | . • La complexité est fonction du nombre de sommets. • Il y a l’ensemble E des arcs et arêtes. • C’est une partie du produit cartésien V x V . • E peut être réflexif , irréflexif ou ni l’un, ni l’autre. • E peut êtresymétrique , anti-symétrique ou ni - ni. • E peut être transitif , ou non-transitif . Cours de graphes 1 - Intranet
Définitions de base----------------------------------------------------------------- • Un graphe G est défini comme • G = ( V , E ) • où V est un ensemble de sommets et E un ensemble d’arcs entre ces sommets. • Il y a des multi-graphes qui sont correspondent au cas où E est un multi-ensemble (plusieurs arêtes et/ou arcs entre deux sommets). • Il y a des graphes pondérés qui correspondent au fait l’on attache des poids aux arcs ou arêtes (entiers par exemple). 12 25 15 Cours de graphes 1 - Intranet
Définitions de base----------------------------------------------------------------- • Sous-graphe G’ d’un graphe G : • Le graphe G’ = ( V’ , E’ ) est un sous-graphe du graphe G = ( V , E ) , si : • V’ V • E’ E V’ x V’ U Les sommets de G’ sont parmi ceux de G . U v • Les arcs et arêtes de G’ sont • parmi ceux et celles de G et • se limitent aux sommets de G’ . Cours de graphes 1 - Intranet
Définitions de base----------------------------------------------------------------- Cours de graphes 1 - Intranet
R E P R E S E N T A T I O N D E S G R A P H E S Cours de graphes 1 - Intranet
Représentation des graphes----------------------------------------------------------------- • Représentation des données : • Nous indexons (numérotons) les sommets. • Nous représentons les arcs et les arêtes. • Nous obtenons une matrice M de taille n x n qui comporte des valeurs binaires. • M ( a , b ) est vrai si et seulement si l’arc ( a , b ) existe ! Cours de graphes 1 - Intranet
Représentation des graphes----------------------------------------------------------------- VERS 1 2 3 4 5 6 1 L’existence ou non de l’arc ( 2 , 5 ) ! ! ! 2 3 4 5 4 6 1 DEPUIS 6 2 3 5 Cours de graphes 1 - Intranet
1 2 3 4 5 6 Représentation des graphes----------------------------------------------------------------- 1 2 3 4 5 6 4 Un tableau de listes ! F F F V F F 4 F F F V F F F F F F V F 5 V V V F F F 1 2 3 F F V F F F 3 F F V F F V 3 6 Parfois, le graphe est peu dense ! Nous mémorisons juste les indices des colonnes différentes de Faux ! Il faut ( | V | + | E | ) * log( | V | ) bits ! Cours de graphes 1 - Intranet
1 2 3 4 5 6 Représentation des graphes----------------------------------------------------------------- 1 2 3 4 5 6 Les voisins d’un sommet « u » : Les voisins sortants : V+ ( u ) Les voisins entrants : V- ( u ) F F F V F F F F F V F F F F F F V F V V V F F F V+ ( 4 ) = { 1 , 2 , 3 } F F V F F F F F V F F V V- ( 3 ) = { 4 , 5 , 6 } V+ ( u ) = { v e V | ( u , v ) e E } V- ( u ) = { v e V | ( v , u ) e E } Si le graphe est symétrique : V ( u ) = V+ ( u ) = V- ( u ) Cours de graphes 1 - Intranet
1 2 3 4 5 6 Représentation des graphes----------------------------------------------------------------- 1 2 3 4 5 6 Le degré d’un sommet « u » : Le degré sortant : D+ ( u ) Le degré entrant : D- ( u ) F F F V F F F F F V F F F F F F V F V V V F F F F F V F F F Le degré d’un graphe G = ( V , E ) : D( G ) = max { D ( u ) } F F V F F V u e V Si le graphe est symétrique : D ( u ) = D+ ( u ) = D- ( u ) D+ ( u ) = | V+ ( u ) | D- ( u ) = | V- ( u ) | Cours de graphes 1 - Intranet
L E S C H E M I N S Cours de graphes 1 - Intranet
Les chemins----------------------------------------------------------------- • Les chemins : • Un chemin de longueur n , de u vers v est : • telle que • u = w et v = w • ( w , w ) est une arête ou un arc, pour tout i . • Le chemin est orienté s’il comporte des arcs, non orienté s’il est fait d’arêtes uniquement. • Le chemin ( u ; u ) , de u à lui-même, existe toujours ! ( w , . . . , w ) n+1 1 n+1 1 i i+1 Cours de graphes 1 - Intranet
Les chemins----------------------------------------------------------------- • Notations et propriétés sur les chemins : • Nous noterons ( c’est non standard ) : • ( u , v ) l’arête ou l’arc, i.e. le chemin de longueur 1 . • ( u ; v ) le chemin de longueur quelconque. • Pour tout chemin non orienté ( u ; v ) du graphe G , nous pouvons construire le chemin ( v ; u ) dans G . Cours de graphes 1 - Intranet
Les chemins----------------------------------------------------------------- • Preuve ( induction sur la longueur du chemin ) : • Si u et v sont voisins, • le chemin ( u ; v ) est en fait l’arête ( u , v ) • et le chemin ( v ; u ) sera l’arête ( v , u ) . • Si u et v ne sont pas voisins, • le chemin ( u ; v ) est une arête ( u , t ) suivie de ( t ; v ) • par induction sur la longueur, le chemin ( v ; t ) existe, • ( v ; u ) est la concaténation de ( v ; t ) et l’arête ( t , u ) . Cours de graphes 1 - Intranet
Les chemins----------------------------------------------------------------- • Notations et propriétés sur les chemins : • Nous noterons ( c’est non standard ) : • ( u , v ) l’arête ou l’arc, i.e. le chemin de longueur 1 . • ( u ; v ) le chemin de longueur quelconque. • Pour tout chemin non orienté ( u ; v ) du graphe G , nous pouvons construire le chemin ( v ; u ) dans G . • Dans un graphe G , l’existence du chemin orienté ( u ; v ) n’implique pas l’existence d’un chemin de retour ( v ; u ) . u v Cours de graphes 1 - Intranet
Les chemins----------------------------------------------------------------- • Cycles et circuits : • Un cycle est un chemin non orienté ( u ; v ) pour lequel u coïncide avec v . • Un circuit est un chemin orienté ( w ; t ) pour lequel w coïncide avec t . u = v w = t Cours de graphes 1 - Intranet
Les chemins----------------------------------------------------------------- • Chemins simples : • Un chemin ( u ; v ) , avec u différent de v , est simple si et seulement si aucun sommet n’est répété dans la séquence : ( u , . . . , v ) Chemin simple ( u ; v ) u w v Chemin non simple ( w ; t ) Cours de graphes 1 - Intranet t
L E M M E D E K Ö N I G Cours de graphes 1 - Intranet
Lemme de König----------------------------------------------------------------- • Lemme de König : • De tout chemin non simple ( u ; v ) , nous pouvons extraire un chemin de u vers v qui est simple et plus court que le chemin initial. ( u , . . . , w , . . . , w , t , . . . , v ) t u w v Cours de graphes 1 - Intranet
Lemme de König----------------------------------------------------------------- • Lemme de König : • De tout chemin non simple ( u ; v ) , nous pouvons extraire un chemin de u vers v qui est simple et plus court que le chemin initial. ( u , . . . ,w , . . . , w , t , . . . , v ) t u w v Cours de graphes 1 - Intranet
Lemme de König----------------------------------------------------------------- • Tout cycle ou circuit est • soit, un cycle ou circuit élémentaire, c’est-à-dire devient un chemin simple si l’on en enlève une arête ou un arc, • soit, une réunion de cycles et/ou circuits élémentaires. Réunion de cycles élémentaires : Cycle élémentaire : Cours de graphes 1 - Intranet
L E S C O M P O S A N T E S C O N N E X E S Cours de graphes 1 - Intranet
1 2 3 4 5 6 Les composantes connexes----------------------------------------------------------------- 1 2 3 4 5 6 La composante connexe de u : La composante sortante : C+ ( u ) La composante entrante : C- ( u ) F F F V F F F F F V F F F F F F V F V V V F F F C+ ( 4 ) = { 1 , 2 , 3 , 4 , 5 } F F V F F F C- ( 4 ) = { 1 , 2 , 4 } 4 F F V F F V 1 C+ ( u ) = { v e V | ( u ; v ) existe } C- ( u ) = { v e V | ( v ; u ) existe } 6 2 Si G est symétrique : C ( u ) = C+ ( u ) = C- ( u ) 3 5 Cours de graphes 1 - Intranet
Les composantes connexes----------------------------------------------------------------- • Pour un graphe non orienté : • La composante connexe de u est : • réflexive, vous pouvez rester où vous êtes ! • symétrique, les chemins de retour existent ! • transitive, vous pouvez concaténer des chemins ! • Une composante connexe est une classe d’équivalence ! • Un graphe non orienté est partitionné en ses classes d’équivalence ! Cours de graphes 1 - Intranet
1 2 3 4 5 6 Les composantes connexes----------------------------------------------------------------- 1 Nous partons d’une relation symétrique ! 2 3 4 5 6 V F F V F F Nous fermons réflexivement ! F V F V F F F F V F V F V V F V F F F F V F V F 4 F F F F F V 1 6 La fermeture réflexive d’une relation R est la plus petite relation réflexive qui contienne R . 2 3 5 Cours de graphes 1 - Intranet
1 2 3 4 5 6 Les composantes connexes----------------------------------------------------------------- 1 Nous partons d’une relation symétrique ! 2 3 4 5 6 V V F V F F Nous fermons réflexivement ! V V F V F F F F V F V F Nous fermons transitivement ! V V F V F F F F V F V F 4 F F F F F V 1 6 La fermeture transitive d’une relation R est la plus petite relation transitive qui contienne R . 2 3 5 Cours de graphes 1 - Intranet
1 2 3 4 5 6 Les composantes connexes----------------------------------------------------------------- 1 Nous partons d’une relation symétrique ! 2 3 4 5 6 V V V F F F Nous fermons réflexivement ! V V V F F F V V V F F F Nous fermons transitivement ! F F F V V F F F F V V F 3 F F F F F V 1 6 Si nous renumérotons ! 2 4 5 Cours de graphes 1 - Intranet
Les composantes connexes----------------------------------------------------------------- • Un principe de décomposition : • Souvent, le traitement appliqué à un graphe non connexe consiste à appliquer ce même traitement indépendamment sur chacune des composantes connexes ! Dans ce cas, on ne perd rien en supposant G connexe ! Cours de graphes 1 - Intranet
P O U R U N G R A P H E O R I E N T E . . . Cours de graphes 1 - Intranet
Les composantes connexes----------------------------------------------------------------- • Pour un graphe orienté : • Un sous-ensemble X des sommets d’un graphe orienté est fortement connexe si nous pouvons aller de n’importe quel sommet vers n’importe quel autre sommet. • Proposition : • Une composante est fortement connexe si et seulement si chaque sommet se trouve sur un circuit. • Preuve : • => : Si ( u ; v ) existe, alors ( v ; u ) existe et ( u ; v ; u ) . • <= : Soit ( u ; v ) de la forme ( u ; w ; v ). Pour w bien choisi, le circuit ( w ; v ; w ) existe ! Nous recommençons le raisonnement pour ( u ; w ). u w v Cours de graphes 1 - Intranet
Les composantes connexes----------------------------------------------------------------- • Pour un graphe orienté : • Un graphe orienté est quasi-fortement connexe s’il existe un sommet depuis lequel nous pouvons atteindre tous les autres sommets. Un tel sommet sera appelé racine. Composante fortement connexe ! Cours de graphes 1 - Intranet
D I S T A N C E S , D I A M E T R E , . . . Cours de graphes 1 - Intranet
Distances, diamètre, . . .----------------------------------------------------------------- • Distances et diamètre : • La distance d ( u , v ) entre un sommet u et un sommet v est : • la longueur du plus court chemin (forcément simple) de u vers v , si celui-ci existe, • infini, sinon. • Le diamètre d’un graphe connexe est la distance entre ses sommets les plus éloignés : D ( G ) = max { d ( u , v ) } u , v e V Cours de graphes 1 - Intranet
Distances, diamètre, . . .----------------------------------------------------------------- • Ecarts, centre et diamètre : • L’écart e ( u ) d’un sommet u d’un graphe connexe est : • la distance vers le sommet v le plus loin de u : e ( u ) =max { d ( u , v ) } • Un sommet u est au centre de G si e ( u ) =min { e ( v ) } • D ( G ) = max { e ( v ) } v e V v e V v e V Cours de graphes 1 - Intranet
Distances, diamètre, . . .----------------------------------------------------------------- • Lemme des plus courts chemins : • Si le plus court chemin de u vers v passe par w , alors sa partie préfixe de u vers w est aussi le plus court chemin de u vers w . Le plus court chemin de u à v ! u w v Le plus court chemin de u à w ! Le raisonnement est par l’absurde : S’il y avait plus court pour aller de u à w , il y aurait aussi plus court pour aller de u à v ! Cours de graphes 1 - Intranet
Distances, diamètre, . . .----------------------------------------------------------------- Parfois, on parle du plus court chemin et on pense au chemin le plus léger ! • Poids d’un chemin : • Dans un graphe pondéré, le poids d’un chemin est la somme des poids de ses arcs et arêtes. • Nous pouvons alors, de manière évidente, définir le chemin le plus léger de u vers v . • Le chemin le plus léger (poids) ne coïncide pas forcément avec le chemin le plus court (nombre d’arcs et arêtes). • Le plus court chemin correspond au chemin le plus léger avec des poids qui valent tous unité. • Les poids ne vérifient pas forcément l’inégalité triangulaire ! 25 12 10 Cours de graphes 1 - Intranet
N O S P R E M I E R S A L G O R I T H M E S Cours de graphes 1 - Intranet
Connexité & plus courts chemins----------------------------------------------------------------- • Sur un graphe non orienté, nous allons calculer : • les composantes connexes ! • Sur une composante connexe, nous allons calculer : • les plus courts chemins ! • Nous rajoutons une pondération strictement positive et nous allons calculer : • les chemins les plus légers ! Cours de graphes 1 - Intranet
Connexité & plus courts chemins----------------------------------------------------------------- • Nous utilisons trois algorithmes : • un algorithme par vague, c’est un parcours en largeur, • un algorithme par multiplication de matrices, • l’algorithme de programmation dynamique Floyd-Warshall. • Pour chacun d’entre eux, il s’agit de savoir • s’il arrive à résoudre le problème en question • et quelle est la complexité du calcul ? Cours de graphes 1 - Intranet
L A V A G U E Cours de graphes 1 - Intranet
Connexité & plus courts chemins----------------------------------------------------------------- • L’algorithme par vague : • Nous choisissons un sommet sec et le mouillons, • nous mouillons ses voisins, • nous mouillons les voisins des voisins , . . . • Attention, dans un graphe il peut y avoir des cycles ! ! ! • Il faut éviter de tourner en rond ! • Ici, nous ne faisons rien pour un sommet déjà mouillé ! • A l’issu de ce calcul • nous avons déterminé une composante connexe • et nous recommençons sur l’éventuel reste du graphe ! • Complexité : Q ( | E | ) = O( | V |^2 ) • Chaque arête est visitée une et une seule fois ! Cours de graphes 1 - Intranet
Connexité & plus courts chemins----------------------------------------------------------------- La vague Multiplication Floyd-Warshall Q ( | E | ) = O ( | V |^2 ) Connexité Plus courts Plus légers Cours de graphes 1 - Intranet
L A M U L T I P L I C A T I O N D E M A T R I C E S Cours de graphes 1 - Intranet