ift-10541a : hiver 2003 semaine 7 : les graphes (suite)

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

Upload: gringolet-abadie

Post on 04-Apr-2015

108 views

Category:

Documents


1 download

TRANSCRIPT

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

IFT-10541A : Hiver 2003

Semaine 7 :Les graphes (suite)

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

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 s1 et s2 de V pour savoir si

l’un vient avant l’autre, sans trouver le chemin entre s1 et s2

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

3

Tri topologique Préconditions :

S est un graphe acyclique s1 vient avant s2 il y a un chemin de

s1 à s2 dans S alors : s1 < s2 dans T

Exemple : préséance de tâches en planification

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

4

Tri topologique : exemples

(S)A

B

C

D

E

F

G

(a)

AB CD EFG

(b)

AB CDE FG

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

5

Tri topologique : la mécanique Attention :

ordre partiel s1 et s2 pas toujours comparables : s1 < s2, s1 > s2, s1 = s2, ou s1 ≠ s2

Il existe toujours un tri topologique sur tout graphe acyclique (basé sur l’ordre d’entrée des nœuds). À lire : algorithme de la p. 151

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

6

Tri topologique : algo. p.151

(S)A

B

C

D

E

F

G

(a)

AB CD EFG

(b)

AB CDE FG

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

7

Tri : adressage hiérarchique

(S)A

B

C

D

E

F

G

(b)

AB CDE FG1.1

2.1 3.11

2.23.2

32

3.1.1

1.1

3.2

3

1

3.1

2

2.1

2.2

2.1.13.1.1

2.1.1

x < x.*

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

8

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

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

9

Modèles d’implantation

matrice d’adjacence :

4

25

3

1

1

1 1

1 1

1

1 2 3 4 51

2

3

4

5

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

10

Matrice d’adjacence#define nbSommet 5sommet sommets[nbSommet];

Bool arc[nbSommet][nbSommet];

1

1 1

1 1

1

1 2 3 4 51

2

3

4

5

4

25

3

1

int no;int tag;Bool pres;char *nom;

sommet

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

11

1

1 1

1 1

1

1 2 3 4 51

2

3

4

5 1

1 1

1

1

1

4

25

3

1

#define nbSommet 5sommet sommets[nbSommet];

Bool arc[nbSommet][nbSommet];

int no;int tag;Bool pres;char *nom;

sommet

Matrice triangulaire

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

12

1

1 1

1 1

1

1 2 3 4 51

2

3

4

5 1

1 1

1

1

1

1

11

1

1

2

3

4

5 1

1

1 2 3 4 5

#define nbSommet 5sommet sommets[nbSommet];

Bool *arc[nbSommet];

int no;int tag;Bool pres;char *nom;

sommet

Matrice triangulaire

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

13

1

1 1

1 1

1

1 2 3 4 51

2

3

4

5 1

1 1

1

1

1

1

11

1

1

2

3

4

5 1

1

1 2 3 4 5

#define nbSommet 5sommet sommets[nbSommet];

Bool *arc[nbSommet];

int no;int tag;Bool pres;char *nom;Bool *arc;

sommet

+

Matrice triangulaire

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

14

1

1 1

1 1

1

1 2 3 4 51

2

3

4

5 1

1 1

1

1

1

1

21

4

1

2

3

4

5 1

3

#define nbSommet 5sommet sommets[nbSommet];

int *arc[nbSommet];

int no;int tag;Bool pres;char *nom;

sommet

Matrice triangulaire

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

15

1

1 1

1 1

1

1 2 3 4 51

2

3

4

5 1

1 1

1

1

1

1

21

4

1

2

3

4

5 1

3

#define nbSommet 5sommet sommets[nbSommet];

int *arc[nbSommet];

int no;int tag;Bool pres;char *nom;no *arc;

sommet

+

Matrice triangulaire

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

16

1

1 1

1 1

1

1 2 3 4 51

2

3

4

5 1

1 1

1

1

1

1

21

4

1

2

3

4

5 1

3

#define nbSommet 5sommet sommets[nbSommet];

int *arc[nbSommet];

int no;int tag;Bool pres;char *nom;no *arc;

sommet

Listes d’adjacence

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

17

Listes d’adjacenceA B

C

D

E FG

H

I

1

2

3

4

5

6

7

8

9

A

B

C

D

E

F

G

H

I

3

1

5

1

4

5

4

2

7

7

6

Numéro Nom Ptr. Listes des noeuds adjacents au ne noeud

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

18

Graphe non orienté 2 arcs distincts : A-B et B-A, à

relier inutile si on ordonne A et B

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

19

Listes croisées

1

1 1

1 1

1

1 2 3 4 51

2

3

4

5

4

25

3

1

1

2

3

4

5

1 2 3 4 5

1

1 1

1 1

1

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

20

Listes croisées

1

1 1

1 1

1

1 2 3 4 51

2

3

4

5

4

25

3

1

1

2

3

4

5

1 2 3 4 5

1

1 1

1 1

1

...

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

Le plus court chemin

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

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

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

23

Exemple Quel est le plus court chemin reliant f à

b? p = (f, g, h, e, d, b) ||p|| = 3 + 2 + 4 + 1 + 6 ||p|| = 16

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

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)

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

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 109 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!

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

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)

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

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 yi

yi = lpcc(s,i) État initial :

ys = 0 yi = + avec i s

À chaque étape : essayer de minimiser les yi

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

28

Algorithme de Dijkstra Soit V l’ensemble des sommets d’un graphes

Initialiser yi = + pour tous les sommets i Initialiser ys = 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 yi

2.Faire T = T \ j et S = S j

3.Pour tous les sommets k de T adjacents à j, mettre à jour yk = min { yk, yj + c(j,k)}

Fin Tant que.

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

29

Algorithme de Dijkstra

a

db

f

c e

4 56

310

2

81 20

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

30

Algorithme de Bellman-Ford

Soit le graphe G(V,E)

Initialiser yi = + pour tous les sommets i

Initialiser ys = 0.

Répéter |V| - 1 FOIS

Pour tout arc (u,v) de E faire

yv = min { yv, yu + c(u,v)}

Pour tout arc (u,v) de E faire

Si yv > yu + c(u,v) Alors

Retourner FAUX

Retourner VRAI

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

Composantes connexes

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

32

Connexité des graphes

Connexité des graphes non

orientés

Connexité des graphes

orientés

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

33

Connexité des graphes non orientés

Un graphe non orienté G est connexe ssi il existe un chemin entre n’importe quelle paire de sommets distincts du graphe

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

34

Arbre Chemin Circuit

Graphes connexes (cas particuliers)

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

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

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

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

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

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.

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

38

Dans un graphe non orienté : un chemin est une suite d’arêtes S’il 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 d’arcs S’il 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

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

39

Un graphe G est fortement connexe ssi pour n’importe 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

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

40

graphe G

a b

d c

e

graphe H

a b

d c

e

graphe I

a b

d c

e

Connexité des graphes orientés (exemples)

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

41

graphe G

a b

d c

e

graphe G’

a b

d c

e

Connexité des graphes orientés

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

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.

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

43

a b

d c

e f

a b

d c

e f

Graphes faiblement connexes (exemples)

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

44

Algorithme