600 likes | 812 Vues
Marc Gengler Marc.Gengler@esil.univ-mrs.fr. Cours de graphes. Alexandra Bac - Sébastien Fournier. 12h de cours 12h de TD des devoirs … et un examen. Bibliographie. Tout ce qui contient - graphes, graphs. Internet - souvent, c’est trop simplifié ou trop dense,
E N D
Marc Gengler Marc.Gengler@esil.univ-mrs.fr Cours de graphes Alexandra Bac - Sébastien Fournier 12h de cours 12h de TD des devoirs … et un examen Cours de graphes 1 - Intranet
Bibliographie • Tout ce qui contient - graphes, graphs. • Internet - souvent, c’est trop simplifié ou trop dense, - et pas toujours correct. • Mes choix - Introduction to Algorithms, Leiserson et al. - Algorithms, Sedgewick. - Fundamental Algorithms, Knuth. - Graphes, Berge. Cours de graphes 1 - 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 • Couplage • Chemins d’Euler et de Hamilton • Problèmes NP-complets Cours de graphes 1 - Intranet
Définitions de base----------------------------------------------------------------- • Il y a des sommets ! (vertex, vertices) • Il y a des arêtes ! (edge) • Il y a des arcs ! (arc) Cours de graphes 1 - Intranet
Définitions de base----------------------------------------------------------------- • Formellement : • Il y a l’ensemble « V » des sommets. • Il y en a « n », c’est-à-dire | 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. Aucun couple ( a , a ) ! Tous des couples ( a , a ) ! Cours de graphes 1 - Intranet
Définitions de base----------------------------------------------------------------- • Formellement : • Il y a l’ensemble « V » des sommets. • Il y en a « n », c’est-à-dire | 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. Si ( a , b ) avec a = b alors pas ( b , a ) ! / ( a , b ) ssi ( b , a ) ! Cours de graphes 1 - Intranet
Définitions de base----------------------------------------------------------------- • Formellement : • Il y a l’ensemble « V » des sommets. • Il y en a « n », c’est-à-dire | 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 « n », c’est-à-dire | 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. • « E » peut être transitive, ou non-transitive. Si ( a , b ) et ( b , c ) alors (a , c ) ! Cours de graphes 1 - Intranet
Définitions de base----------------------------------------------------------------- • Formellement : • G = ( V , E ) • Un graphe est donné par les ensembles « V » et « E ». • 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 les sommets de G’ sont parmi ceux de G • E’ E V’ x V’ les arcs et arêtes de G’ sont parmi ceux et celles de G et se limitent aux sommets de G’. U U v Cours de graphes 1 - Intranet
Définitions de base----------------------------------------------------------------- • 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
Définitions de base----------------------------------------------------------------- 1 2 3 4 5 6 1 L’existence ou non de l’arc ( 2 , 5 ) ! ! ! 2 3 4 5 4 6 1 6 2 3 5 Cours de graphes 1 - Intranet
1 2 3 4 5 6 Définitions de base----------------------------------------------------------------- 1 2 3 4 5 6 La diagonale parle des couples ( u , u ) ! F F F V F F F F F V F F Les arêtes ( 2 , 4 ) et ( 3 , 5 ) sont symétriques ! F F F F V F Les arcs ( 1 , 4 ) et ( 4 , 1 ) donnent aussi une symétrie ! V V V F F F F F V F F F 4 F F V F F V 1 Les arcs ( 4 , 3 ) et ( 6 , 3 ) n’ont pas leur pendant symétrique ! ! ! 6 2 Il faut n^2 bits ! 3 5 Cours de graphes 1 - Intranet
1 2 3 4 5 6 Définitions de base----------------------------------------------------------------- 1 2 3 4 5 6 Pour des multi-graphes, nous remplaçons les booléens par des multiplicités ! F F F V F F F F F V F F F F F F V F Pour des graphes pondérés, nous remplaçons les booléens par des poids ! V V V F F F F F V F F F 4 F F V F F V 1 6 2 3 5 Cours de graphes 1 - Intranet
1 2 3 4 5 6 Définitions de base----------------------------------------------------------------- 1 2 3 4 5 6 4 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 Définitions de base----------------------------------------------------------------- 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 V | ( u , v ) E } V- ( u ) = { v V | ( v , u ) E } Si le graphe est symétrique : V ( u ) = V+ ( u ) = V- ( u ) Cours de graphes 1 - Intranet
1 2 3 4 5 6 Définitions de base----------------------------------------------------------------- 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 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
1 2 3 4 5 6 Définitions de base----------------------------------------------------------------- 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 Le degré d'un graphe est souvent caractéristique de la complexité d'un problème ! ! ! 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 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
Définitions de base----------------------------------------------------------------- • Les chemins : • Un chemin, de longueur « n », du sommet « u » au sommet « v » est : ( w , . . . , w ) • telle que • u = w et v = w • ( w , w ) est une arête ou un arc du graphe. • Le chemin est orienté s’il comporte des arcs, non orienté s’il est fait d’arêtes uniquement. 1 n+1 1 n+1 i i+1 Cours de graphes 1 - Intranet
Définitions de base----------------------------------------------------------------- • Notations et propriétés sur les chemins : • Nous noterons ( c’est non standard ) : • ( u , v ) l’arête ou l’arc, c’est-à-dire 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 ) . Cours de graphes 1 - Intranet
Définitions de base----------------------------------------------------------------- • Cycles et circuits : • Un chemin non orienté ( u ; v ) pour lequel « u » coïncide avec « v » est un cycle. • Un chemin orienté ( w ; t ) pour lequel « w » coïncide avec « t » est un circuit. u = v w = t Cours de graphes 1 - Intranet
Définitions de base----------------------------------------------------------------- • Chemins simples : • Un chemin ( u ; v ) , où « u » est 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 ) t Cours de graphes 1 - Intranet
Définitions de base----------------------------------------------------------------- • 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 De tout cycle ou circuit nous pouvons extraire un cycle ou circuit élémentaire ! w v Cours de graphes 1 - Intranet
Définitions de base----------------------------------------------------------------- • 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 ) Je parlerai souvent de "chemin" et je sous-entendrai "simple" ! ! ! t u De tout cycle ou circuit nous pouvons extraire un cycle ou circuit élémentaire ! w v Cours de graphes 1 - Intranet
1 2 3 4 5 6 Définitions de base----------------------------------------------------------------- 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 V | ( u ; v ) existe } C- ( u ) = { v V | ( v ; u ) existe } 6 2 Si G est symétrique : C ( u ) = C+ ( u ) = C- ( u ) 3 5 Cours de graphes 1 - Intranet
Définitions de base----------------------------------------------------------------- • 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 Définitions de base----------------------------------------------------------------- 1 Nous partons d’une relation symétrique ! 2 3 4 5 6 F F F V F F Nous fermons réflexivement ! F F F V F F F F F F V F V V F F F F F F V F F 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 Définitions de base----------------------------------------------------------------- 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 Définitions de base----------------------------------------------------------------- 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 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 Définitions de base----------------------------------------------------------------- 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 Définitions de base----------------------------------------------------------------- 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 2 { 1 , 2 , 4 } est une composante connexe ! 3 5 Cours de graphes 1 - Intranet
1 2 3 4 5 6 Définitions de base----------------------------------------------------------------- 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 2 { 3 , 5 } est une composante connexe ! 3 5 Cours de graphes 1 - Intranet
1 2 3 4 5 6 Définitions de base----------------------------------------------------------------- 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 2 { 6 } est une composante connexe ! 3 5 Cours de graphes 1 - Intranet
1 2 3 4 5 6 Définitions de base----------------------------------------------------------------- 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
Définitions de base----------------------------------------------------------------- • 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 à supposer G connexe ! ! ! Cours de graphes 1 - Intranet
Définitions de base----------------------------------------------------------------- • 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 donc ( 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
Définitions de base----------------------------------------------------------------- • 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 ». Cours de graphes 1 - Intranet
Définitions de base----------------------------------------------------------------- • 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 : ( G ) = max { d ( u , v ) } u , v V Cours de graphes 1 - Intranet
Définitions de base----------------------------------------------------------------- ( G ) = 4 u v Chemin simple de longueur 4 ! Le plus court chemin est de longueur 3 : d ( u , v ) = 3 Cours de graphes 1 - Intranet
Définitions de base----------------------------------------------------------------- • 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 ) } • ( G ) = max { e ( v ) } v V v V v V Cours de graphes 1 - Intranet
Définitions de base----------------------------------------------------------------- ( G ) = e ( w ) = 4 v w u e ( u ) = 3 « v » est au centre car e ( v ) = 2 est minimal ! Cours de graphes 1 - Intranet
Définitions de base----------------------------------------------------------------- • Lemme des plus courts chemins (De la Palisse) : • Si le plus court chemin de « u » vers « v » passe par « w », alors la 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 » ! Cours de graphes 1 - Intranet
Définitions de base----------------------------------------------------------------- • 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). • Les poids ne vérifient pas forcément l’inégalité triangulaire ! 25 12 10 Cours de graphes 1 - Intranet
Si tous les poids sont unitaires, les plus courts chemins coïncident avec les chemins les plus légers ! Définitions de base----------------------------------------------------------------- • 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). • Les poids ne vérifient pas forcément l’inégalité triangulaire ! Souvent, on parle de plus court chemin alors qu'on pense au chemin le plus léger ! 25 12 10 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 si : • il arrive à résoudre le problème en question, • quelle est la complexité du calcul ? Cours de graphes 1 - Intranet
Connexité – plus courts chemins----------------------------------------------------------------- La vague Multiplication Floyd-Warshall OUI ou NON ? ? ? Quelle complexité ? ? ? Connexité Plus courts Plus légers 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é ! • Complexité : ( | E | ) = O( | V |^2 ) = O ( n^2 ) • Chaque arête est visitée une et une seule fois ! C'est un parcours en largeur ! Cours de graphes 1 - Intranet
Connexité – plus courts chemins----------------------------------------------------------------- La vague Multiplication Floyd-Warshall ( | E | ) = O ( | V |^2 ) Connexité Plus courts Plus légers Cours de graphes 1 - Intranet
Connexité – plus courts chemins----------------------------------------------------------------- • La multiplication de matrices : • Nous prenons une matrice avec des « 0 » et des « 1 », • nous la fermons réflexivement (des « 1 » sur la diagonale), • nous effectuons le calcul suivant : M * M’ ( i , j ) = max M ( i , k ) * M’ ( k , j ) • Nous calculons : M -> M^2 -> M^4 -> . . . • Propriété : M^( 2 * i ) = M^i * M^i contient tous les chemins de longueur au plus 2 * i . • Il suffit de calculer M^k avec k >= | V |-1 = n-1 (le plus long chemin possible; et donc tous les chemins) ! • Il suffit de O ( log( | V | ) ) élévations au carré ! k Cours de graphes 1 - Intranet