La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

IFT-10541A : Hiver 2003 Semaine 7 : Les graphes (suite)

Présentations similaires


Présentation au sujet: "IFT-10541A : Hiver 2003 Semaine 7 : Les graphes (suite)"— Transcription de la présentation:

1 IFT-10541A : Hiver 2003 Semaine 7 : Les graphes (suite)

2 2 Tri topologique Idée : ordonner les sommets selon la préséance indiquée par les arcs ordre linéaire partiel sur V, appelé T But : comparer s 1 et s 2 de V pour savoir si lun vient avant lautre, sans trouver le chemin entre s 1 et s 2

3 3 Tri topologique Préconditions : S est un graphe acyclique s 1 vient avant s 2 il y a un chemin de s 1 à s 2 dans S alors : s 1 < s 2 dans T Exemple : préséance de tâches en planification

4 4 Tri topologique : exemples

5 5 Tri topologique : la mécanique Attention : ordre partiel s 1 et s 2 pas toujours comparables : s 1 s 2, s 1 = s 2, ou s 1 s 2 Il existe toujours un tri topologique sur tout graphe acyclique (basé sur lordre dentrée des nœuds). À lire : algorithme de la p. 151

6 6 Tri topologique : algo. p.151

7 7 Tri : adressage hiérarchique x < x.*

8 8 Spécifications formelles Description en termes de types abstraits 1.initialiser un graphe à vide (création) 2.ajouter un sommet à un graphe 3.ajouter un arc à un graphe 4.ôter un sommet du graphe et tous les arcs associés 5.ôter un arc 6.permettre l'accès à un sommet nommé (désigné) 7.indiquer si un sommet n'a pas de voisins 8.parcourir les voisins d'un sommet (parcours) 9.voir si un chemin existe entre 2 sommets 10. trouver le chemin le plus court (# arêtes, distance) 11. trouver tous les chemins entre 2 sommets

9 9 Modèles dimplantation matrice dadjacence :

10 10 Matrice dadjacence #define nbSommet 5 sommet sommets[nbSommet]; Bool arc[nbSommet][nbSommet]; int no; int tag; Bool pres; char *nom; sommet

11 #define nbSommet 5 sommet sommets[nbSommet]; Bool arc[nbSommet][nbSommet]; int no; int tag; Bool pres; char *nom; sommet Matrice triangulaire

12 #define nbSommet 5 sommet sommets[nbSommet]; Bool *arc[nbSommet]; int no; int tag; Bool pres; char *nom; sommet Matrice triangulaire

13 #define nbSommet 5 sommet sommets[nbSommet]; Bool *arc[nbSommet]; int no; int tag; Bool pres; char *nom; Bool *arc; sommet + Matrice triangulaire

14 #define nbSommet 5 sommet sommets[nbSommet]; int *arc[nbSommet]; int no; int tag; Bool pres; char *nom; sommet Matrice triangulaire

15 #define nbSommet 5 sommet sommets[nbSommet]; int *arc[nbSommet]; int no; int tag; Bool pres; char *nom; no *arc; sommet + Matrice triangulaire

16 #define nbSommet 5 sommet sommets[nbSommet]; int *arc[nbSommet]; int no; int tag; Bool pres; char *nom; no *arc; sommet Listes dadjacence

17 17 Listes dadjacence A B C D E F G H I A B C D E F G H I NuméroNom Ptr.Listes des noeuds adjacents au n e noeud

18 18 Graphe non orienté 2 arcs distincts : A-B et B-A, à relier inutile si on ordonne A et B

19 19 Listes croisées

20 20 Listes croisées

21 Le plus court chemin

22 22 Introduction Soient deux sommets s et t d'un graphe G Si s et t représentent des villes, quel est le plus court chemin entre ces deux villes sachant que : les arêtes du graphe G sont pondérées la pondération c(i,j) représente la distance entre les deux sommets (deux villes) i et j du graphe la pondération est positive

23 23 Exemple Quel est le plus court chemin reliant f à b? p = (f, g, h, e, d, b) ||p|| = ||p|| = 16

24 24 Cas général Comment trouver le plus court chemin entre 2 sommets s et t d'un graphe G ? Il existe plusieurs algorithmes : Parcours exhaustif des nœuds Algorithme de Dijkstra Algorithme de Bellman-Ford (utile pour des pondérations négatives)

25 25 Parcours exhaustif des nœuds Déterminer tous les chemins possibles Choisir le plus court chemin entre s et t (2 sommets) Sur un graphe de 20 sommets avec : une machine de 10 9 opérations / seconde recherche d'un chemin = 1 opération 77 ans pour avoir le résultat Un graphe de 26 sommets : avant le Big Bang Le nombre de chemin est de l'ordre de n!

26 26 Algorithme de Dijkstra Se base sur le principe de la sous-optimalité Si p est le plus court chemin entre s et t alors: v sommet appartenant à p le sous-chemin de p (s, v) est optimal (le plus court) le sous-chemin de p (v, t) est optimal (le plus court)

27 27 Algorithme de Dijkstra Recherche du chemin le plus court avec n sommet = un problème d'optimisation sur n variables À chaque sommet i : une variable y i y i = lpcc(s,i) État initial : y s = 0 y i = + avec i s À chaque étape : essayer de minimiser les y i

28 28 Algorithme de Dijkstra Soit V lensemble des sommets dun graphes Initialiser y i = + pour tous les sommets i Initialiser y s = 0. Initialiser S à l'ensemble vide, T = V. Tant que T n'est pas vide 1.Sélectionner le sommet j de T de plus petite valeur y i 2.Faire T = T \ j et S = S j 3.Pour tous les sommets k de T adjacents à j, mettre à jour y k = min { y k, y j + c(j,k)} Fin Tant que.

29 29 Algorithme de Dijkstra a db f c e

30 30 Algorithme de Bellman-Ford Soit le graphe G(V,E) Initialiser y i = + pour tous les sommets i Initialiser y s = 0. Répéter |V| - 1 FOIS Pour tout arc (u,v) de E faire y v = min { y v, y u + c(u,v)} Pour tout arc (u,v) de E faire Si y v > y u + c(u,v) Alors Retourner FAUX Retourner VRAI

31 Composantes connexes

32 32 Connexité des graphes Connexité des graphes non orientés Connexité des graphes orientés

33 33 Connexité des graphes non orientés Un graphe non orienté G est connexe ssi il existe un chemin entre nimporte quelle paire de sommets distincts du graphe

34 34 ArbreCheminCircuit Graphes connexes (cas particuliers)

35 35 Connexité des graphes non orientés Que se passe-t-il si le graphe G n'est pas connexe? G apparaîtra comme un ensemble de sous-graphes connexes On appelle chacun de ces sous-graphes une composante connexe de G

36 36 Composante connexe G'=(S',A') une composante connexe de G G' est un sous-graphe connexe maximal : S'' = S' {v} tel que G'' = (S'', A') est une composante connexe

37 37 Propriétés Un graphe non connexe se compose de plusieurs composantes connexes non reliées entre elles et dont le nombre est constant. Un graphe est connexe ssi il ne possède qu'une seule composante connexe. Un sommet isolé (de degré 0) constitue toujours une composante connexe à lui seul. Un graphe connexe d'ordre n (le nombre de sommets) comporte au moins n-1 arêtes.

38 38 Dans un graphe non orienté : un chemin est une suite darêtes Sil existe un chemin entre deux sommets a et b alors celui-ci est aussi un chemin entre b et a Dans un graphe orienté : un chemin est une suite darcs Sil existe un chemin entre deux sommets a et b alors on ne peut rien conclure concernant le lien de b avec a Connexité des graphes orientés

39 39 Un graphe G est fortement connexe ssi pour nimporte quelle paire de sommets distincts (a,b) de G, il existe un chemin du sommet a au sommet b et un autre chemin du sommet b au sommet a. Connexité des graphes orientés

40 40 Connexité des graphes orientés (exemples)

41 41 Connexité des graphes orientés

42 42 Connexité des graphes orientés Un graphe orienté G est faiblement connexe ssi son graphe non orienté sous-jacent G est connexe. Autrement dit, le graphe G, qui est le graphe G dans lequel les arcs ont été remplacés par des arêtes, est connexe.

43 43 Graphes faiblement connexes (exemples)

44 44 Algorithme


Télécharger ppt "IFT-10541A : Hiver 2003 Semaine 7 : Les graphes (suite)"

Présentations similaires


Annonces Google