1 / 60

Cours de Graphes

Cours de Graphes. Les arbres et arborescences. Les arbres de recouvrement. Les arbres de recouvrement minimaux. Applications. Les grandes lignes du cours. Définitions de base Connexité Les plus courts chemins Floyd-Warshall, Dijkstra et Bellmann-Ford Arbres

knox-howard
Download Presentation

Cours de Graphes

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. Cours de Graphes Les arbres et arborescences. Les arbres de recouvrement. Les arbres de recouvrement minimaux. Applications. Cours de graphes 3 - Intranet

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

  3. E X E M P L E S E T D E F I N I T I O N S Cours de graphes 3 - Intranet

  4. Les arbres----------------------------------------------------------------- Un arbre (non orienté) ! Une arborescence (orientée) ! Cours de graphes 3 - Intranet

  5. Les arbres----------------------------------------------------------------- Les arbres et arborescences sont toujours irréflexifs ! • Définitions : • Un arbre est un graphe non orienté dans lequel il existe un et un seul chemin entre toute paire de sommets. • Ce chemin sera donc simple, le plus court, . . . • Une arborescence est un graphe orienté quasi-fortement connexe tel qu’il existe un et un seul chemin orienté de la racine vers tout autre sommet. • D’abord, il n’y a qu’une seule racine ! • On n’a pas de chemins multiples, ni de circuits ! Les arbres d’algorithmique sont des arborescences ! Cours de graphes 3 - Intranet

  6. D E F I N I T I O N S E Q U I V A L E N T E S D E S A R B R E S Cours de graphes 3 - Intranet

  7. Quelques définitions des arbres----------------------------------------------------------------- • Uniquement pour les graphes non orientés ! • Définition 1 : Un arbre est un graphe dans lequel il existe un et un seul chemin simple entre toute paire de sommets. • Définition 2 : Un arbre est un graphe connexe, sans cycle. • Déf 1 => Déf 2 : • Comme il existe un chemin de tout sommet à tout sommet, le graphe est connexe ! • Par absurde, s’il y avait des cycles . . . il y aurait plusieurs chemins simples, ce qui est contraire à l’hypothèse ! v u Cours de graphes 3 - Intranet

  8. Quelques définitions des arbres----------------------------------------------------------------- • Uniquement pour les graphes non orientés ! • Définition 1 : Un arbre est un graphe dans lequel il existe un et un seul chemin simple entre toute paire de sommets. • Définition 2 : Un arbre est un graphe connexe, sans cycle. • Déf 1 => Déf 2 : OK ! • Déf 2 => Déf 1 : • Par absurde ! S’il y avait deux sommets non reliés par un chemin, le graphe ne serait pas connexe ! • Par absurde ! S’il y avait deux sommets reliés par plusieurs chemins simples, le graphe aurait des cycles ! v u Cours de graphes 3 - Intranet

  9. S I X D E F I N I T I O N S E Q U I V A L E N T E S D E S A R B R E S Cours de graphes 3 - Intranet

  10. Six définitions équivalentes des arbres----------------------------------------------------------------- L'idée : Si nous enlevons une arête du chemin unique, nous cassons la connexité ! Connexe, minimal  Les chemins uniques  Connexe, sans cycles Définition : Un graphe est connexe, minimal s’il est connexe et n’a pas plus d’arêtes qu’aucun autre graphe connexe ! Cours de graphes 3 - Intranet

  11. Six définitions équivalentes des arbres----------------------------------------------------------------- Connexe, minimal => connexe, sans cycles : Par absurde ! S’il y avait des cycles, nous pourrions enlever une arête sans casser la connexité. Ceci est contraire à l’hypothèse que le graphe est minimal ! Connexe, minimal  Les chemins uniques  Connexe, sans cycles Cours de graphes 3 - Intranet

  12. Six définitions équivalentes des arbres----------------------------------------------------------------- Connexe avec | V | - 1 arêtes => Connexe, minimal Connexe avec | V | - 1 arêtes  Prouvons que pour être connexe, il faut | V | - 1 arêtes au moins ! Connexe, minimal =>  Les chemins uniques  Connexe, sans cycles Par induction sur | V | : - Trivial pour 1 sommet et 0 arêtes ! - Enlevez un sommet u quelconque. Pour relier les | V | - 1 sommets restants, il faut au moins | V | - 2 arêtes. - Ensuite, il faut au moins une arête pour relier u aux autres ! Cours de graphes 3 - Intranet

  13. Six définitions équivalentes des arbres----------------------------------------------------------------- Les chemins uniques => Connexe avec | V | - 1 arêtes Connexe avec | V | - 1 arêtes =>  • - Les chemins uniques • impliquent la connexité ! • Preuve par récurrence sur le nombre d’arêtes : • - Si le graphe est réduit à 1 sommet, il y a 0 arêtes ! • - Sinon, il existe au moins un sommet u de degré 1 ! A défaut, • on pourrait toujours continuer et donc faire des cycles ! • - Enlevez un tel sommet u de degré 1 et son unique arête ! • - Recommencez pour le graphe restant qui est à chemins uniques. Connexe, minimal =>  => Les chemins uniques  Connexe, sans cycles Cours de graphes 3 - Intranet

  14. E N M A I N T E N A N T L ’ A B S E N C E D E C Y C L E S . . . Cours de graphes 3 - Intranet

  15. Six définitions équivalentes des arbres----------------------------------------------------------------- L'idée : En ajoutant une quelconque arête au graphe, nous créons un cycle ! Connexe avec | V | - 1 arêtes  Connexe, minimal  Les chemins uniques  Connexe,sans cycles  Définition : Un graphe est sans cycles, maximal s’il est sans cycles et n’a pas moins d’arêtes qu’aucun autre graphe sans cycles ! Sans cycles, maximal Cours de graphes 3 - Intranet

  16. Six définitions équivalentes des arbres----------------------------------------------------------------- Sans cycles, maximal => connexe, sans cycles : Par absurde ! S’il y était non connexe, nous pourrions ajouter une arête pour améliorer la connexité et sans créer de cycle. Ceci est contraire à l’hypothèse que le graphe est maximal ! Connexe avec | V | - 1 arêtes  Connexe, minimal  Les chemins uniques  Connexe,sans cycles  Sans cycles, maximal Cours de graphes 3 - Intranet

  17. Six définitions équivalentes des arbres----------------------------------------------------------------- Sans cycles avec | V | - 1 arêtes => Sans cycles, maximal Connexe avec | V | - 1 arêtes  Prouvons que pour être sans cycles, on peut avoir | V | - 1 arêtes au plus ! Connexe, minimal  Les chemins uniques  Connexe,sans cycles => Par induction sur | V | : - Trivial pour 1 sommet ! - Soit u un sommet de degré 1. Il en existe, sinon il y aurait des cycles dans le graphe. - Les | V | - 1 autres sommets comportent au plus | V | - 2 arêtes.  Sans cycles, maximal  Sans cycles avec | V | - 1 arêtes Cours de graphes 3 - Intranet

  18. Six définitions équivalentes des arbres----------------------------------------------------------------- Les chemins uniques => Sans cycles avec | V | - 1 arêtes Connexe avec | V | - 1 arêtes  Connexe, minimal • - Les chemins uniques • interdisent les cycles ! • - Trivial s’il n’y a qu’un sommet ! • - Sinon, il existe au moins un • sommet u de degré 1 ! • - Enlevez u et son arête ! • - Recommencez sur le graphe restant qui est à chemins uniques !  => Les chemins uniques  Connexe,sans cycles =>  Sans cycles, maximal =>  Sans cycles avec | V | - 1 arêtes Cours de graphes 3 - Intranet

  19. Six définitions équivalentes des arbres----------------------------------------------------------------- Connexe avec | V | - 1 arêtes Nous n’avons pas la connexité avec moins de | V | - 1 arêtes . . . mais nous pouvons avoir des cycles !  Connexe, minimal  Les chemins uniques  Connexe,sans cycles  Nous n’avons pas l’absence de cycles avec plus de | V | - 1 arêtes . . . mais nous pouvons ne pas avoir la connexité ! Sans cycles, maximal  Sans cycles avec | V | - 1 arêtes Cours de graphes 3 - Intranet

  20. Six définitions équivalentes des arbres----------------------------------------------------------------- Il est facile de vérifier si un graphe est un arbre ou non ! Connexe avec | V | - 1 arêtes  Connexe, minimal  Les chemins uniques  Connexe,sans cycles  Nous vérifions d’abord le nombre d’arêtes ! Ensuite, nous vérifions la connexité et l’absence de cycles à l’aide d’une vague. Sans cycles, maximal  Sans cycles avec | V | - 1 arêtes Cours de graphes 3 - Intranet

  21. L E S A R B O R E S C E N C E S Cours de graphes 3 - Intranet

  22. Les arborescences----------------------------------------------------------------- • Une arborescence peut être caractérisée comme suit. • Elle possède | V | - 1 arcs. • Tous les sommets sauf un ont un degré entrant unitaire. • Un seul sommet a un degré entrant nul. • Preuve : • Trivial s’il n’y a qu’un seul sommet ! • Sinon, il existe un sommet u de degré sortant nul ! • Nous enlevons u et l’unique arc ( x , u ) qui l’atteint ! • Le graphe résultant est une arborescence qui vérifiera donc par hypothèse les propriétés ! • Il en sera de même pour tout le graphe. Cours de graphes 3 - Intranet

  23. Les arborescences----------------------------------------------------------------- • Toute arborescence peut être transformée en un arbre ! • Il suffit de changer les arcs en arêtes. • Nous aurons | V | - 1 arêtes. • La connexité forte depuis la racine entraîne la connexité. • Tout arbre peut être transformé en une arborescence en nous laissant le choix de la racine ! • Trivial s’il n’y a qu’un seul sommet ! • Nous choisissons la racine u et nous transformons toute arête ( u , v ) en arc. • Sans le lien ( u , v ) , le sommet v appartient à un arbre isolé du reste du graphe. Cet arbre peut être transformé en arborescence ayant v comme racine. Cours de graphes 3 - Intranet

  24. Les arborescences----------------------------------------------------------------- • Toute arborescence peut être transformée en une autre arborescence en changeant de sommet racine ! • Pour une arborescence, nous pouvons considérer l’arité de chaque sommet qui sera égale au degré sortant du sommet • C’est la notion d’arité des nœuds en algorithmique. • Changer une arborescence de racine u en une arborescence de racine v change les arités des seuls sommets u et v ! • Exercice en TD ! • Pour les arbres, la notion d’arité est confondue avec le degré et n’a donc pas trop de sens ! Cours de graphes 3 - Intranet

  25. L E S A R B R E S D E R E C O U V R E M E N T Cours de graphes 3 - Intranet

  26. Les arbres de recouvrement----------------------------------------------------------------- • Un arbre de recouvrement ( AR ) d’un graphe G connexe est • un sous-graphe de G qui comporte tous les sommets • et qui a la propriété d’être un arbre. • Propriétés : • Nous préservons la connexité ! • Nous n’avons pas de cycles ! • Nous avons un nombre minimal d’arêtes ! • Le choix de l’AR n’est pas unique en général ! Spanning Tree Un arbre de recouvrement ! Un autre arbre de recouvrement ! Cours de graphes 3 - Intranet

  27. A L G O R I T H M E S D E C A L C U L D E L ’ A R B R E D E R E C O U V R E M E N T Cours de graphes 3 - Intranet

  28. Les arbres de recouvrement----------------------------------------------------------------- • Comme un arbre est connexe sans cycles, nous pouvons concevoir l’algorithme : • Tant que le graphe contient un cycle, • nous enlevons une des arêtes du cycle ! • Complexité : • Il faut enlever jusqu’à O ( | E | ) arêtes ! • Trouver un cycle est en O ( | V | ) ! • D’où O ( | V | * | E | ) = O ( | V |^3 ) ! • C’est beaucoup ! ! ! Cours de graphes 3 - Intranet

  29. Les arbres de recouvrement----------------------------------------------------------------- • Un algorithme qui ne cherche pas de cycles : • Nous choisissons une arête ( u , v ) à supprimer ! • Si sa suppression ne casse pas la connexité entre les sommets u et v ( algorithme de la vague ) : • nous continuons avec le graphe sans ( u , v ) ! • Si la suppression de ( u , v ) casse la connexité alors : • nous calculons les AR des composantes connexes de u et de v • et nous réintroduisons l’arête ( u , v ) à la fin ! Cours de graphes 3 - Intranet

  30. Les arbres de recouvrement----------------------------------------------------------------- Divide and Conquer ! ! ! • La suppression de ( u , v ) ne casse pas la connexité : • La suppression de ( u , v ) casse la connexité : u v Complexité : O ( | E |^2 ) = O ( | V |^4 ) Nous cassons un cycle ! u v CC ( u ) CC ( v ) Arbre de recouvrement global ! Cours de graphes 3 - Intranet

  31. Y A – T – I L M I E U X ? ? ? O U I ! ! ! D U G L O U T O N Cours de graphes 3 - Intranet

  32. Les arbres de recouvrement----------------------------------------------------------------- • A un moment du déroulement de l’algorithme, nous avons : • un sous-ensemble S des sommets qui sont traités et • nous en connaissons un arbre de recouvrement A . • Nous identifions les arêtes à cheval sur S et V \ S : • nous en choisissons une, par exemple ( u , v ) , et A <- A v { ( u , v ) } et S <- S v { v } C'est clairement un arbre ! ! ! S V \ S A u v Cours de graphes 3 - Intranet

  33. Les arbres de recouvrement----------------------------------------------------------------- • L’initialisation : • Nous choisissons un sommet u au hasard : S <- { u } et A <- { } • Chaque étape rajoute un sommet et une arrête : • Comme nous garantissons la connexité, c’est un arbre ! • Lorsque S = V , nous avons notre arbre de recouvrement ! • La complexité est en Q ( | V | ) , car nous choisissons | V | - 1 arêtes et nous prenons les premières que nous trouvons ! Cours de graphes 3 - Intranet

  34. A R B R E S D E R E C O U V R E M E N T M I N I M A U X Cours de graphes 3 - Intranet

  35. Les arbres de recouvrement minimaux----------------------------------------------------------------- • Nous considérons un graphe non orienté et pondéré et cherchons un arbre de recouvrement de poids minimal, abrégé en ARM ( minimum spanning tree ) . • L’algorithme de Prim ! • L’algorithme de Kruskal ! 20 Un arbre de recouvrement de poids 53 ! 15 Il est minimal ! 10 12 8 Un arbre de recouvrement de poids 35 ! 5 8 Un autre arbre de recouvrement de poids 35 ! Cours de graphes 3 - Intranet

  36. L ’ A L G O R I T H M E D E P R I M Cours de graphes 3 - Intranet

  37. Les arbres de recouvrement minimaux----------------------------------------------------------------- • L’algorithme de Prim : • Nous choisissons un sommet u et S <- { u } et A <- { } • Le cas général : • Les sommets de S sont traités et admettent l’ARM A ! • Parmi les arêtes ( x , y ) avec x dans S et y dans V \ S : • Trouvez l’arête ( u , v ) de poids minimal et S <- S v { v } et A <- A v { ( u , v ) } S V \ S L’ARM : A u v Cours de graphes 3 - Intranet

  38. Les arbres de recouvrement minimaux----------------------------------------------------------------- Nous choisissons le sommet de départ u et nous créons l’arbre de recherche binaire des arêtes sur la frontière ! S <- { u } A <- { } R <- init_arbre_recherche () pour tout ( u , v ) intro ( R , ( u , v ) ) faire | V | - 1 fois ( u , v ) <- extrait_min ( R ) A <- A v { ( u , v ) } S <- S v { v } pour tout ( v , w ) avec w e S intro ( R , ( v , w ) ) | V | - 1 fois . . . Nous retirons l’arête la plus légère et . . . Nous introduisons les nouvelles arêtes ! ! ! / Complexité : O ( D ( u ) log ( D ( u ) ) +| V | ( log ( | E | ) + D ( G )log ( | E | ) ) ) = O ( | V |D ( G )log ( | E | ) ) Cours de graphes 3 - Intranet

  39. Les arbres de recouvrement minimaux----------------------------------------------------------------- Nous choisissons le sommet de départ u et nous créons l’arbre de recherche binaire des arêtes sur la frontière ! S <- { u } A <- { } R <- init_arbre_recherche () pour tout ( u , v ) intro ( R , ( u , v ) ) faire | V | - 1 fois ( u , v ) <- extrait_min ( R ) A <- A v { ( u , v ) } S <- S v { v } pour tout ( v , w ) avec w e S intro ( R , ( v , w ) ) | V | - 1 fois . . . Nous retirons l’arête la plus légère et . . . Nous introduisons les nouvelles arêtes ! ! ! / Complexité plus précisément : Q ( D ( u ) log ( D ( u ) ) +S ( log ( | E | ) + D ( v )log ( | E | ) ) ) = Q ( | E |log ( | E | ) ) v e S / Cours de graphes 3 - Intranet

  40. Les arbres de recouvrement minimaux----------------------------------------------------------------- • Preuve de correction, par absurde : • Supposons que le choix de l’arête minimale ( u , v ) ne soit pas le bon choix. Il fallait choisir une autre arête ! • L’ARM ne comporte pas ( u , v ) ! ! ! • Il y a dans l’ARM un chemin de u vers v qui traverse en une arête ( x , y ) , au moins aussi lourde que ( u , v ). • Nous pouvons remplacer ( x , y ) par ( u , v ) ! x y u v Cours de graphes 3 - Intranet

  41. Les arbres de recouvrement minimaux----------------------------------------------------------------- • Preuve de correction, par absurde : • Supposons que le choix de l’arête minimale ( u , v ) ne soit pas le bon choix. Il fallait choisir une autre arête ! • L’ARM ne comporte pas ( u , v ) ! ! ! • Il y a dans l’ARM un chemin de u vers v qui traverse en une arête ( x , y ) , au moins aussi lourde que ( u , v ). • Nous pouvons remplacer ( x , y ) par ( u , v ) ! • Si ( u , v ) est plus légère que ( x , y ) , il y a une contradiction avec le fait que l’ARM est minimal. • Si ( u , v ) et ( x , y ) ont le même poids, il y a deux arbres de recouvrement minimaux ! ! ! • Les poids peuvent être négatifs, car le nombre d’arêtes est fixe ! Cours de graphes 3 - Intranet

  42. L ’ A L G O R I T H M E D E K R U S K A L Cours de graphes 3 - Intranet

  43. Les arbres de recouvrement minimaux----------------------------------------------------------------- • L’algorithme de Kruskal ! • Nous trions les arêtes de la plus légère à la plus lourde ! • Nous choisissons | V | - 1 arêtes, • en prenant à chaque itération l’arête la plus légère . . . • . . . à moins que ceci ne crée un cycle ! 1 - 2 2 - 4 1 - 4 3 - 5 4 - 6 5 - 6 2 - 3 10 15 1 4 6 Les composantes connexes : { 1 , 2 } , { 3 } , { 4 } , { 5 } , { 6 } 5 7 17 2 12 3 5 27 Poids : 5 Cours de graphes 3 - Intranet

  44. Les arbres de recouvrement minimaux----------------------------------------------------------------- Complexité : O ( | E | log ( | E | ) ) • L’algorithme de Kruskal ! • Nous trions les arêtes de la plus légère à la plus lourde ! • Nous choisissons | V | - 1 arêtes, • en prenant à chaque itération l’arête la plus légère . . . • . . . à moins que ceci ne crée un cycle ! C'est fini ! ! ! 1 - 2 2 - 4 1 - 4 3 - 5 4 - 6 5 - 6 2 - 3 10 15 1 4 6 Les composantes connexes : { 1 , 2 , 4 , 6 , 3 , 5 } 5 7 17 2 12 3 5 27 Poids : 56 Cours de graphes 3 - Intranet

  45. R E S E A U C O N N E X E A C O U T M I N I M A L Cours de graphes 3 - Intranet

  46. Les arbres de recouvrement minimaux----------------------------------------------------------------- • Réalisation d’un réseau de communication : Les devis ! 90 Nancy 150 Paris Rennes 180 80 110 120 200 130 170 Lyon Bordeaux 100 80 150 100 Les lignes envisagées ! Nice Toulouse Marseille 120 80 Cours de graphes 3 - Intranet

  47. Les arbres de recouvrement minimaux----------------------------------------------------------------- • Réalisation d’un réseau de communication : L'arbre de recouvrement minimal ! Les devis ! 90 Nancy Paris Rennes 80 120 Lyon Bordeaux L’ARM coûte 670 ! 80 100 Les lignes envisagées ! Nice Toulouse Marseille 120 80 Cours de graphes 3 - Intranet

  48. L E V O Y A G E U R D E C O M M E R C E Cours de graphes 3 - Intranet

  49. Le Voyageur de Commerce----------------------------------------------------------------- • Réalisation d’un circuit de voyageur de commerce : • Nous utilisons l’ARM comme parcours initial • qui n’est pas la solution cherchée, • mais qui n’est pas cher . . . • ensuite, nous le transformons en un circuit, • qui ne sera probablement pas trop mauvais ! Cours de graphes 3 - Intranet

  50. Le Voyageur de Commerce----------------------------------------------------------------- Coût 1340 ! Nous parcourons chaque arête deux fois ! • Réalisation d’un circuit de voyageur de commerce : Les distances ! 90 Nancy 150 Paris Rennes 180 80 110 120 200 130 170 Lyon Bordeaux 100 80 150 100 Les parcours envisagés ! Nice Toulouse Marseille 120 80 Cours de graphes 3 - Intranet

More Related