1 / 60

Marc Gengler Marc.Gengler@esil.univ-mrs.fr

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,

ganesa
Download Presentation

Marc Gengler Marc.Gengler@esil.univ-mrs.fr

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 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

  2. 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

  3. 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

  4. 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

  5. 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

  6. 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

  7. 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

  8. 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

  9. 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

  10. 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

  11. 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

  12. 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

  13. 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

  14. 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

  15. 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

  16. 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

  17. 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

  18. 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

  19. 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

  20. 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

  21. 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

  22. 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

  23. 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

  24. 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

  25. 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

  26. 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

  27. 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

  28. 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

  29. 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

  30. 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

  31. 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

  32. 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

  33. 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

  34. 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

  35. 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

  36. 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

  37. 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

  38. 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

  39. 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

  40. 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

  41. 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

  42. 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

  43. 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

  44. 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

  45. 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

  46. 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

  47. 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

  48. 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

  49. Connexité – plus courts chemins----------------------------------------------------------------- La vague Multiplication Floyd-Warshall  ( | E | ) = O ( | V |^2 ) Connexité Plus courts Plus légers Cours de graphes 1 - Intranet

  50. 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

More Related