Graphes - Département Informatique et Interactionsgcolas/algo-licence/slides/graphes...Graphes Plan...

88
Graphes Plan du cours : définitions, exemples, parcours en profondeur, algorithme de Dijkstra. Un graphe exprime une relation, une distance entre des objets. Graphes 1 – SG – p. 1/51

Transcript of Graphes - Département Informatique et Interactionsgcolas/algo-licence/slides/graphes...Graphes Plan...

Page 1: Graphes - Département Informatique et Interactionsgcolas/algo-licence/slides/graphes...Graphes Plan du cours : définitions, exemples, parcours en profondeur, algorithme de Dijkstra.

Graphes

Plan du cours :

définitions,

exemples,

parcours en profondeur,

algorithme de Dijkstra.

Un graphe exprime une relation, une distance entre desobjets.

Graphes 1 – SG – p. 1/51

Page 2: Graphes - Département Informatique et Interactionsgcolas/algo-licence/slides/graphes...Graphes Plan du cours : définitions, exemples, parcours en profondeur, algorithme de Dijkstra.

Graphes : G = (S,A)

S : ensemble des sommets,

A : ensemble des arêtes A = {{u, v}, u ∈ S, v ∈ S}

(1,2)(2,3)(1,3)(1,5)(3,7)(4,6)(8,4)(7,5)(3,5)(8,6)

8

1

2

4

6

5

3

7

Graphes 1 – SG – p. 2/51

Page 3: Graphes - Département Informatique et Interactionsgcolas/algo-licence/slides/graphes...Graphes Plan du cours : définitions, exemples, parcours en profondeur, algorithme de Dijkstra.

Graphes orientés.

G = (S, A), avec A = {(u, v), u ∈ S, v ∈ S} un ensemble d’arcs

4

1

2

5

6

3

Graphes 1 – SG – p. 3/51

Page 4: Graphes - Département Informatique et Interactionsgcolas/algo-licence/slides/graphes...Graphes Plan du cours : définitions, exemples, parcours en profondeur, algorithme de Dijkstra.

Graphes pondérés.

G = (S, A, w) : chaque arête (u, v) a pour poids w(u, v)

6

12

15

20

26

1210

17

11

4

33

20

14

3

8

7

6

4

1

2 5

9

Graphes 1 – SG – p. 4/51

Page 5: Graphes - Département Informatique et Interactionsgcolas/algo-licence/slides/graphes...Graphes Plan du cours : définitions, exemples, parcours en profondeur, algorithme de Dijkstra.

Exemple : Trajet le plus court entre deux villes.

90

183150

10050

100

57

60

120

100100

105

170

153

60

Gap

Turin

Marseille

Digne

Cuneo

Nice

Toulon

Briancon

Grenoble

Barcelonette

Graphe représentant les liaisons routières et les durées de trajet.

Graphes 1 – SG – p. 5/51

Page 6: Graphes - Département Informatique et Interactionsgcolas/algo-licence/slides/graphes...Graphes Plan du cours : définitions, exemples, parcours en profondeur, algorithme de Dijkstra.

Exemple : Trajet le plus court entre deux villes.

90

183150

10050

100

57

60

120

100100

105

170

153

60

Gap

Turin

Marseille

Digne

Cuneo

Nice

Toulon

Briancon

Grenoble

Barcelonette

Calcul d’un plus court chemin entre Marseille et Turin.

Graphes 1 – SG – p. 6/51

Page 7: Graphes - Département Informatique et Interactionsgcolas/algo-licence/slides/graphes...Graphes Plan du cours : définitions, exemples, parcours en profondeur, algorithme de Dijkstra.

Exemple : le choux, la chèvre et le loup (le passeur).

Conflits :

loup et chèvre,

chèvre et choux.

Problème : est-il possible de faire traverser la rivière au choux, à lachèvre et au loup, sans perte ?

Graphes 1 – SG – p. 7/51

Page 8: Graphes - Département Informatique et Interactionsgcolas/algo-licence/slides/graphes...Graphes Plan du cours : définitions, exemples, parcours en profondeur, algorithme de Dijkstra.

Exemple : le choux, la chèvre et le loup (le passeur).

Cv P Cv

Cx Lp P Cx

Cv Lp P

Cx P

Cv Lp

Lp P

Cx Cv

Lp Cx Lp P

Cv Cv P

Cx Lp

Cx Cv Lp P

Cx Cv Lp

P

Cx Cv P

Cx Cv Lp P

Cx P

Cv Lp Cx

Cv Lp P Lp

Cx Cv P

Lp P

Cx Cv

Cx Lp

Graphe représentant les états et les transitions.

Graphes 1 – SG – p. 8/51

Page 9: Graphes - Département Informatique et Interactionsgcolas/algo-licence/slides/graphes...Graphes Plan du cours : définitions, exemples, parcours en profondeur, algorithme de Dijkstra.

Exemple : le choux, la chèvre et le loup (et le passeur).

Cv P Cv

Cx Lp P Cx

Cv Lp P

Cx P

Cv Lp

Lp P

Cx Cv

Lp Cx Lp P

Cv Cv P

Cx Lp

Cx Cv Lp P

Cx Cv Lp

P

Cx Cv P

Cx Cv Lp P

Cx P

Cv Lp Cx

Cv Lp P Lp

Cx Cv P

Lp P

Cx Cv

Cx Lp

Elimination des états conflictuels.

Graphes 1 – SG – p. 9/51

Page 10: Graphes - Département Informatique et Interactionsgcolas/algo-licence/slides/graphes...Graphes Plan du cours : définitions, exemples, parcours en profondeur, algorithme de Dijkstra.

Exemple : le choux, la chèvre et le loup (et le passeur).

Cx

Cv Lp P

Lp Cx Lp P

Cv Cv P

Cx Lp

Cx Cv Lp P

Cx Cv P

Cx Cv Lp P

Cx

Cv Lp P Lp

Cx Cv P

Cx Lp

Cv P Cv

Cx Lp P

Graphes 1 – SG – p. 10/51

Page 11: Graphes - Département Informatique et Interactionsgcolas/algo-licence/slides/graphes...Graphes Plan du cours : définitions, exemples, parcours en profondeur, algorithme de Dijkstra.

Exemple : le choux, la chèvre et le loup (et le passeur).

Cx

Cv Lp P

Lp Cx Lp P

Cv Cv P

Cx Lp

Cx Cv Lp P

Cx Cv P

Cx Cv Lp P

Cx

Cv Lp P Lp

Cx Cv P

Cx Lp

Cv P Cv

Cx Lp P

Calcul d’un chemin entre l’état initial et l’objectif.

Graphes 1 – SG – p. 11/51

Page 12: Graphes - Département Informatique et Interactionsgcolas/algo-licence/slides/graphes...Graphes Plan du cours : définitions, exemples, parcours en profondeur, algorithme de Dijkstra.

Vocabulaire (graphes non orientés).

chemin (6 sommets)

sommet de degré 5voisins

graphe complet : aretesn × (n − 1)/2

Graphes 1 – SG – p. 12/51

Page 13: Graphes - Département Informatique et Interactionsgcolas/algo-licence/slides/graphes...Graphes Plan du cours : définitions, exemples, parcours en profondeur, algorithme de Dijkstra.

Vocabulaire (graphes non orientés).

Arbre : connexe, sans cycle

Graphe connexe Graphe non connexe

cycle

Graphes 1 – SG – p. 13/51

Page 14: Graphes - Département Informatique et Interactionsgcolas/algo-licence/slides/graphes...Graphes Plan du cours : définitions, exemples, parcours en profondeur, algorithme de Dijkstra.

Vocabulaire (graphes non orientés).

Densité : proportion d’arêtes présentes

nombre d′aretes

n × (n − 1)/2

10 sommets, 18 arêtes → densité 0.4

Graphes 1 – SG – p. 14/51

Page 15: Graphes - Département Informatique et Interactionsgcolas/algo-licence/slides/graphes...Graphes Plan du cours : définitions, exemples, parcours en profondeur, algorithme de Dijkstra.

Représentation.

listes d’adjacences,

matrice d’adjacence,

liste des arêtes (ou arcs).

La représentation dépends des algorithmes que l’on va utiliser.

Graphes 1 – SG – p. 15/51

Page 16: Graphes - Département Informatique et Interactionsgcolas/algo-licence/slides/graphes...Graphes Plan du cours : définitions, exemples, parcours en profondeur, algorithme de Dijkstra.

Représentation par des listes d’adjacence.

1

2

1

2

3

4

5

2 4

1

Voisins

3

3

4 5

2

1 5

2

4

3

A chaque sommet est associée la liste de ses voisins.

Graphes 1 – SG – p. 16/51

Page 17: Graphes - Département Informatique et Interactionsgcolas/algo-licence/slides/graphes...Graphes Plan du cours : définitions, exemples, parcours en profondeur, algorithme de Dijkstra.

Représentation par des listes d’adjacence.

1

2

1

2

3

4

5

2 4

1

Voisins

3

3

4 5

2

1 5

2

4

3

typedef struct maillon *Liste ;struct maillon {

int sommet ;int poids ; /* le poids de l’arete ou de l’arc */Liste suiv ;

} ;Liste Voisins[MAX_SOMMETS] ;

Graphes 1 – SG – p. 17/51

Page 18: Graphes - Département Informatique et Interactionsgcolas/algo-licence/slides/graphes...Graphes Plan du cours : définitions, exemples, parcours en profondeur, algorithme de Dijkstra.

Représentation par des listes d’adjacence.

1

2

1

2

3

4

5

2 4

1

Voisins

3

3

4 5

2

1 5

2

4

3

typedef struct maillon *Liste ;struct maillon {

int sommet ;int poids ; /* le poids de l’arete ou de l’arc */Liste suiv ;

} ;Liste * Voisins ; /* allocation dynamique */

Graphes 1 – SG – p. 18/51

Page 19: Graphes - Département Informatique et Interactionsgcolas/algo-licence/slides/graphes...Graphes Plan du cours : définitions, exemples, parcours en profondeur, algorithme de Dijkstra.

Représentation avec des matrices d’adjacence.

1

1 1 0 0

0010

1

2

4

3

2

3 4 5

5 0

00110

1 1 0 1 0

11101

0

3

5

2

1

4

Pour chaque couple de sommets un booléen indique s’ils sont voisins.

Graphes 1 – SG – p. 19/51

Page 20: Graphes - Département Informatique et Interactionsgcolas/algo-licence/slides/graphes...Graphes Plan du cours : définitions, exemples, parcours en profondeur, algorithme de Dijkstra.

Représentation avec des matrices d’adjacence.

1

1 1 0 0

0010

1

2

4

3

2

3 4 5

5 0

00110

1 1 0 1 0

11101

0

3

5

2

1

4

Pour chaque couple de sommets un booléen indique s’ils sont voisins.

#define MAX_SOMMETS 1000int MatAdj[MAX_SOMMETS][MAX_SOMMETS] ;

ou

int ** MatAdj ;

Graphes 1 – SG – p. 20/51

Page 21: Graphes - Département Informatique et Interactionsgcolas/algo-licence/slides/graphes...Graphes Plan du cours : définitions, exemples, parcours en profondeur, algorithme de Dijkstra.

Représentation avec des matrices d’adjacence.

5

1

2

3

4

1 2 3 4 5

0

19

19 5

5

7

7

22

22

14

14 12

12

0

0

0

0

19 22

12

5

714

5

2

1

4

3

∞ ∞

∞∞

Graphe pondéré : une deuxième matrice est nécessaire.On peut aussi utiliser un drapeau dans certains cas particuliers.

Graphes 1 – SG – p. 21/51

Page 22: Graphes - Département Informatique et Interactionsgcolas/algo-licence/slides/graphes...Graphes Plan du cours : définitions, exemples, parcours en profondeur, algorithme de Dijkstra.

Parcours en profondeur.

exploration récursive (semblable au parcours en profondeur pour lesarbres),

marquage des sommets afin de ne pas parcourir indéfiniment lesmêmes sommets s’il y a des cycles,

produit plusieurs arborescences.

Graphes 1 – SG – p. 22/51

Page 23: Graphes - Département Informatique et Interactionsgcolas/algo-licence/slides/graphes...Graphes Plan du cours : définitions, exemples, parcours en profondeur, algorithme de Dijkstra.

Parcours en profondeur.

Coloration des sommets pendant l’exploration

BLANC : sommet non découvert

GRIS : sommet découvert, arborescence en cours d’exploration

NOIR : sommet visité, arborescence sous-jacente parcourue

debut : date de découvertefin : date de fin de parcours de l’arborescence sous-jacente (tous lessommets voisins ont été explorés)

Pour tout sommet u

debut[u] < fin[u]

Graphes 1 – SG – p. 23/51

Page 24: Graphes - Département Informatique et Interactionsgcolas/algo-licence/slides/graphes...Graphes Plan du cours : définitions, exemples, parcours en profondeur, algorithme de Dijkstra.

Parcours en profondeur.

2

1

8

4

3

765

Graphes 1 – SG – p. 24/51

Page 25: Graphes - Département Informatique et Interactionsgcolas/algo-licence/slides/graphes...Graphes Plan du cours : définitions, exemples, parcours en profondeur, algorithme de Dijkstra.

Parcours en profondeur.

1−3

4

2

1

8

75 6

Graphes 1 – SG – p. 24/51

Page 26: Graphes - Département Informatique et Interactionsgcolas/algo-licence/slides/graphes...Graphes Plan du cours : définitions, exemples, parcours en profondeur, algorithme de Dijkstra.

Parcours en profondeur.

2−

1−3

4

2

1

8

5 6 7

Graphes 1 – SG – p. 24/51

Page 27: Graphes - Département Informatique et Interactionsgcolas/algo-licence/slides/graphes...Graphes Plan du cours : définitions, exemples, parcours en profondeur, algorithme de Dijkstra.

Parcours en profondeur.

3−

1−

2−

3

4

2

1

8

5 6 7

Graphes 1 – SG – p. 24/51

Page 28: Graphes - Département Informatique et Interactionsgcolas/algo-licence/slides/graphes...Graphes Plan du cours : définitions, exemples, parcours en profondeur, algorithme de Dijkstra.

Parcours en profondeur.

3−4

1−

2−

3

4

2

1

8

5 6 7

Graphes 1 – SG – p. 24/51

Page 29: Graphes - Département Informatique et Interactionsgcolas/algo-licence/slides/graphes...Graphes Plan du cours : définitions, exemples, parcours en profondeur, algorithme de Dijkstra.

Parcours en profondeur.

2−5

3−4

1−4

2

1

83

65 7

Graphes 1 – SG – p. 24/51

Page 30: Graphes - Département Informatique et Interactionsgcolas/algo-licence/slides/graphes...Graphes Plan du cours : définitions, exemples, parcours en profondeur, algorithme de Dijkstra.

Parcours en profondeur.

6−

1−

3−4

2−5

4

2

1

83

5 6 7

Graphes 1 – SG – p. 24/51

Page 31: Graphes - Département Informatique et Interactionsgcolas/algo-licence/slides/graphes...Graphes Plan du cours : définitions, exemples, parcours en profondeur, algorithme de Dijkstra.

Parcours en profondeur.

6−72−5

3−4

1−4

1

2

3

5

8

76

Graphes 1 – SG – p. 24/51

Page 32: Graphes - Département Informatique et Interactionsgcolas/algo-licence/slides/graphes...Graphes Plan du cours : définitions, exemples, parcours en profondeur, algorithme de Dijkstra.

Parcours en profondeur.

1−8

6−72−5

3−4

4

2

3

6

8

5

1

7

Graphes 1 – SG – p. 24/51

Page 33: Graphes - Département Informatique et Interactionsgcolas/algo-licence/slides/graphes...Graphes Plan du cours : définitions, exemples, parcours en profondeur, algorithme de Dijkstra.

Parcours en profondeur.

9−

3−4

2−5 6−7

1−8

2

4

3 8

5 6 7

1

Graphes 1 – SG – p. 24/51

Page 34: Graphes - Département Informatique et Interactionsgcolas/algo-licence/slides/graphes...Graphes Plan du cours : définitions, exemples, parcours en profondeur, algorithme de Dijkstra.

Parcours en profondeur.

10−

3−4

2−5 6−7

1−8

9−

2

41

8

75 6

3

Graphes 1 – SG – p. 24/51

Page 35: Graphes - Département Informatique et Interactionsgcolas/algo-licence/slides/graphes...Graphes Plan du cours : définitions, exemples, parcours en profondeur, algorithme de Dijkstra.

Parcours en profondeur.

11− 3−4

2−5 6−7

1−8

9−

10−

2

5

4

8

1

6 7

3

Graphes 1 – SG – p. 24/51

Page 36: Graphes - Département Informatique et Interactionsgcolas/algo-licence/slides/graphes...Graphes Plan du cours : définitions, exemples, parcours en profondeur, algorithme de Dijkstra.

Parcours en profondeur.

12− 3−4

2−5 6−7

1−8

9−

10−

11−

4

65

2

3

7

8

1

Graphes 1 – SG – p. 24/51

Page 37: Graphes - Département Informatique et Interactionsgcolas/algo-licence/slides/graphes...Graphes Plan du cours : définitions, exemples, parcours en profondeur, algorithme de Dijkstra.

Parcours en profondeur.

3−4

2−5

11−

6−7

10−

1−8

9−

12−13

2

4

5

8

6

3

1

7

Graphes 1 – SG – p. 24/51

Page 38: Graphes - Département Informatique et Interactionsgcolas/algo-licence/slides/graphes...Graphes Plan du cours : définitions, exemples, parcours en profondeur, algorithme de Dijkstra.

Parcours en profondeur.

3−4

2−5

12−13

6−7

10−

1−8

9−

11−14

4

2

83

6 75

1

Graphes 1 – SG – p. 24/51

Page 39: Graphes - Département Informatique et Interactionsgcolas/algo-licence/slides/graphes...Graphes Plan du cours : définitions, exemples, parcours en profondeur, algorithme de Dijkstra.

Parcours en profondeur.

3−4

2−5

11−14

6−7

12−13

1−8

9−

10−15

2

1

8

6

3

5 7

4

Graphes 1 – SG – p. 24/51

Page 40: Graphes - Département Informatique et Interactionsgcolas/algo-licence/slides/graphes...Graphes Plan du cours : définitions, exemples, parcours en profondeur, algorithme de Dijkstra.

Parcours en profondeur : arborescence.

9−16

3−4

2−5 6−7

1−8

12−1311−14

10−15

2

3

5

8

14

76

Graphes 1 – SG – p. 25/51

Page 41: Graphes - Département Informatique et Interactionsgcolas/algo-licence/slides/graphes...Graphes Plan du cours : définitions, exemples, parcours en profondeur, algorithme de Dijkstra.

Parcours en profondeur : arcs arrières.

9−16

3−4

2−5 6−7

1−8

12−1311−14

10−15

2

3

5

8

14

76

Graphes 1 – SG – p. 26/51

Page 42: Graphes - Département Informatique et Interactionsgcolas/algo-licence/slides/graphes...Graphes Plan du cours : définitions, exemples, parcours en profondeur, algorithme de Dijkstra.

Parcours en profondeur : arcs avants.

9−16

3−4

2−5 6−7

1−8

12−1311−14

10−15

2

3

5

8

14

76

Graphes 1 – SG – p. 27/51

Page 43: Graphes - Département Informatique et Interactionsgcolas/algo-licence/slides/graphes...Graphes Plan du cours : définitions, exemples, parcours en profondeur, algorithme de Dijkstra.

Parcours en profondeur : arcs transverses.

9−16

3−4

2−5 6−7

1−8

12−1311−14

10−15

2

3

5

8

14

76

Graphes 1 – SG – p. 28/51

Page 44: Graphes - Département Informatique et Interactionsgcolas/algo-licence/slides/graphes...Graphes Plan du cours : définitions, exemples, parcours en profondeur, algorithme de Dijkstra.

Parcours en profondeur : mise en place.

procédure PARCOURS_EN_PROFONDEUR(G)(In : G = (S, A) un graphe)

1 pour chaque sommet u ∈ S faire2 pred[u] :=AUCUN,3 couleur[u] :=BLANC,4 date := 0,5 pour chaque sommet u ∈ S faire6 si couleur[u] =BLANC alors7 VISITER(u),

Graphes 1 – SG – p. 29/51

Page 45: Graphes - Département Informatique et Interactionsgcolas/algo-licence/slides/graphes...Graphes Plan du cours : définitions, exemples, parcours en profondeur, algorithme de Dijkstra.

Parcours en profondeur : parcours.

procédure VISITER(u)

1 couleur[u] =GRIS,2 date := date + 1,3 debut[u] := date,4 pour chaque sommet v ∈ V oisins(u) faire5 si couleur[v] =BLANC alors6 pred[v] := u,7 VISITER(v),8 couleur[u] :=NOIR,9 date := date + 1,10 fin[u] := date,

Graphes 1 – SG – p. 30/51

Page 46: Graphes - Département Informatique et Interactionsgcolas/algo-licence/slides/graphes...Graphes Plan du cours : définitions, exemples, parcours en profondeur, algorithme de Dijkstra.

Parcours en profondeur.

Complexité O(|S| + |A|)

Initialisation O(|S|)Parcours des voisins de chaque sommet O(|A|)

Graphes 1 – SG – p. 31/51

Page 47: Graphes - Département Informatique et Interactionsgcolas/algo-licence/slides/graphes...Graphes Plan du cours : définitions, exemples, parcours en profondeur, algorithme de Dijkstra.

Parcours en profondeur : dates.

Soient deux sommets u et v

soit [debut[u], fin[u]] et [debut[v], fin[v]] sont disjoints(arborescences disjointes)

soit [debut[u], fin[u]] est inclus dans [debut[v], fin[v]](v est un ancêtre de u)

soit [debut[v], fin[v]] est inclus dans [debut[u], fin[u]](u est un ancêtre de v)

Doncdebut[u] < debut[v] < fin[u] ⇒ fin[v] < fin[u]

(v est un descendant de u)

Graphes 1 – SG – p. 32/51

Page 48: Graphes - Département Informatique et Interactionsgcolas/algo-licence/slides/graphes...Graphes Plan du cours : définitions, exemples, parcours en profondeur, algorithme de Dijkstra.

Parcours en profondeur : dates.

Inversement si v est descendant de u dans une arborescence alors

debut(u) < debut(v) < fin(v) < fin(u)

car

v est découvert après u donc debut(u) < debut(v)

on finit de traiter v avant u donc fin(v) < fin(u)

Graphes 1 – SG – p. 33/51

Page 49: Graphes - Département Informatique et Interactionsgcolas/algo-licence/slides/graphes...Graphes Plan du cours : définitions, exemples, parcours en profondeur, algorithme de Dijkstra.

Plus courts chemins

G = (S, A, w) un graphe pondéré.

La longueur du chemin (u1, . . . , uk) est

k−1∑

i=1

w(ui, ui+1)

Notation. δ(u, v) : longueur du plus court chemin entre u et v.

Graphes 1 – SG – p. 34/51

Page 50: Graphes - Département Informatique et Interactionsgcolas/algo-licence/slides/graphes...Graphes Plan du cours : définitions, exemples, parcours en profondeur, algorithme de Dijkstra.

Plus courts chemins

Propriété. ∀s, u, v, δ(s, v) ≤ δ(s, u) + w(u, v)

s

u

v

δ(s, v)

δ(s, u)

Graphes 1 – SG – p. 35/51

Page 51: Graphes - Département Informatique et Interactionsgcolas/algo-licence/slides/graphes...Graphes Plan du cours : définitions, exemples, parcours en profondeur, algorithme de Dijkstra.

Algorithme de Dijkstra.

Calcul des plus courts chemins à partir d’un sommet donné.

Graphes orientés ou non orientés.

Les arcs ont des poids positifs ou nuls.

Représentation du graphe par des listes d’adjacence.

L’algorithme de Dijkstra découvre à chaque étape de nouveaux cheminsissus du sommet source.

Graphes 1 – SG – p. 36/51

Page 52: Graphes - Département Informatique et Interactionsgcolas/algo-licence/slides/graphes...Graphes Plan du cours : définitions, exemples, parcours en profondeur, algorithme de Dijkstra.

Algorithme de Dijkstra.

Notations.

s : sommet source.

d[u] : distance, indexée sur les sommets. A tout moment

∀u ∈ S, d[u] ≥ δ(s, u)

d[u] est la longueur du PCC de s à u découvert à ce stade.

Graphes 1 – SG – p. 37/51

Page 53: Graphes - Département Informatique et Interactionsgcolas/algo-licence/slides/graphes...Graphes Plan du cours : définitions, exemples, parcours en profondeur, algorithme de Dijkstra.

Algorithme de Dijkstra.

Notations.

s : sommet source.

d[u] : distance, indexée sur les sommets. A tout moment

∀u ∈ S, d[u] ≥ δ(s, u)

d[u] est la longueur du PCC de s à u découvert à ce stade.

Initialement∀u ∈ S, u 6= s, d[u] = ∞,d[s] = 0.

Finalement∀u ∈ S, d[u] = δ(s, u).

Graphes 1 – SG – p. 38/51

Page 54: Graphes - Département Informatique et Interactionsgcolas/algo-licence/slides/graphes...Graphes Plan du cours : définitions, exemples, parcours en profondeur, algorithme de Dijkstra.

Algorithme de Dijkstra.

Opération de relachement : affinage de la borne d[v].

Si d[v] > d[u] + w(u, v) alors on remplace d[v] par d[u] + w(u, v)

u

vs

w(u, v) = 2

d[v] = 9

d[u] = 5

relachement de l’arc (u, v) ⇒ d[v] = 7

S’il existe un chemin de longueur 5 entre s et u, alors il existe une cheminde longueur 7 entre s et v.

Graphes 1 – SG – p. 39/51

Page 55: Graphes - Département Informatique et Interactionsgcolas/algo-licence/slides/graphes...Graphes Plan du cours : définitions, exemples, parcours en profondeur, algorithme de Dijkstra.

Algorithme de Dijkstra.

File de priorité F (∀u 6∈ F, d[u] = δ(u))

Itération : extraction d’un sommet u de F de distance d[u] minimale

plus courts chemins

source

e

g

s

c

f

18

7

12

1122

a

b

d

F

Propriété : au moment de l’extraction le sommet u vérifie d[u] = δ(u)

Graphes 1 – SG – p. 40/51

Page 56: Graphes - Département Informatique et Interactionsgcolas/algo-licence/slides/graphes...Graphes Plan du cours : définitions, exemples, parcours en profondeur, algorithme de Dijkstra.

Plus courts chemins : Dijkstra.

4

inf

inf

2

7

3

812

5

1

109

1 13

2

infinf

0

inf

sourcet

x

w

v

s

u

Graphes 1 – SG – p. 41/51

Page 57: Graphes - Département Informatique et Interactionsgcolas/algo-licence/slides/graphes...Graphes Plan du cours : définitions, exemples, parcours en profondeur, algorithme de Dijkstra.

Plus courts chemins : Dijkstra.

2

inf

inf

7

2

12

3

8

1

5

94

1 13

10

infinf

0

inf

sourcet

x

w

v

s

u

Graphes 1 – SG – p. 41/51

Page 58: Graphes - Département Informatique et Interactionsgcolas/algo-licence/slides/graphes...Graphes Plan du cours : définitions, exemples, parcours en profondeur, algorithme de Dijkstra.

Plus courts chemins : Dijkstra.

13

0

inf inf

inf

7

2

128

3

1

5

4

1

910

2

infinfsourceu t

w

vx

s

Graphes 1 – SG – p. 41/51

Page 59: Graphes - Département Informatique et Interactionsgcolas/algo-licence/slides/graphes...Graphes Plan du cours : définitions, exemples, parcours en profondeur, algorithme de Dijkstra.

Plus courts chemins : Dijkstra.

4

inf

inf

12

27

2

128

35

1

2

13

109

1

inf

0

source

w

vx

u t

s

Graphes 1 – SG – p. 41/51

Page 60: Graphes - Département Informatique et Interactionsgcolas/algo-licence/slides/graphes...Graphes Plan du cours : définitions, exemples, parcours en profondeur, algorithme de Dijkstra.

Plus courts chemins : Dijkstra.

13

12

27

2

12

3

1

5

48

1

910

2

inf

0

inf

inf

source

w

vx

u t

s

Graphes 1 – SG – p. 41/51

Page 61: Graphes - Département Informatique et Interactionsgcolas/algo-licence/slides/graphes...Graphes Plan du cours : définitions, exemples, parcours en profondeur, algorithme de Dijkstra.

Plus courts chemins : Dijkstra.

13

12

27

2

12

3

1

5

48

1

910

2

inf

0

inf

inf

source

w

vx

u t

s

Graphes 1 – SG – p. 41/51

Page 62: Graphes - Département Informatique et Interactionsgcolas/algo-licence/slides/graphes...Graphes Plan du cours : définitions, exemples, parcours en profondeur, algorithme de Dijkstra.

Plus courts chemins : Dijkstra.

13

12

27

2

12

3

1

5

48

1

910

2

inf

0

inf

inf

source

w

vx

u t

s

Graphes 1 – SG – p. 41/51

Page 63: Graphes - Département Informatique et Interactionsgcolas/algo-licence/slides/graphes...Graphes Plan du cours : définitions, exemples, parcours en profondeur, algorithme de Dijkstra.

Plus courts chemins : Dijkstra.

2

10

37

1

49

10

13

2

1

53

128

inf

0 inf

2

sourceu t

w

x

s

v

Graphes 1 – SG – p. 41/51

Page 64: Graphes - Département Informatique et Interactionsgcolas/algo-licence/slides/graphes...Graphes Plan du cours : définitions, exemples, parcours en profondeur, algorithme de Dijkstra.

Plus courts chemins : Dijkstra.

13

10

37

2

128

3

1

5

4

1

910

2

inf

0 inf

2

sourceu t

w

x

s

v

Graphes 1 – SG – p. 41/51

Page 65: Graphes - Département Informatique et Interactionsgcolas/algo-licence/slides/graphes...Graphes Plan du cours : définitions, exemples, parcours en profondeur, algorithme de Dijkstra.

Plus courts chemins : Dijkstra.

13

10

37

2

128

3

1

5

4

1

910

2

inf

0 inf

2

sourceu t

w

x

s

v

Graphes 1 – SG – p. 41/51

Page 66: Graphes - Département Informatique et Interactionsgcolas/algo-licence/slides/graphes...Graphes Plan du cours : définitions, exemples, parcours en profondeur, algorithme de Dijkstra.

Plus courts chemins : Dijkstra.

2

10

37

1

4

5

910

2

13

8

1

3

12

inf

0 inf

2

sourceu t

w

x

s

v

Graphes 1 – SG – p. 41/51

Page 67: Graphes - Département Informatique et Interactionsgcolas/algo-licence/slides/graphes...Graphes Plan du cours : définitions, exemples, parcours en profondeur, algorithme de Dijkstra.

Plus courts chemins : Dijkstra.

3

13

16

7

28

1

49

10

13

2

1

5120

2 3

7source

w

vx

u

s

t

Graphes 1 – SG – p. 41/51

Page 68: Graphes - Département Informatique et Interactionsgcolas/algo-licence/slides/graphes...Graphes Plan du cours : définitions, exemples, parcours en profondeur, algorithme de Dijkstra.

Plus courts chemins : Dijkstra.

13

13

16

7

2

12

3

8 49

10

2

1

5

1

0

2 3

7source

w

vx

u

s

t

Graphes 1 – SG – p. 41/51

Page 69: Graphes - Département Informatique et Interactionsgcolas/algo-licence/slides/graphes...Graphes Plan du cours : définitions, exemples, parcours en profondeur, algorithme de Dijkstra.

Plus courts chemins : Dijkstra.

13

13

16

7

2

12

3

8 49

10

2

1

5

1

0

2 3

7source

w

vx

u

s

t

Graphes 1 – SG – p. 41/51

Page 70: Graphes - Département Informatique et Interactionsgcolas/algo-licence/slides/graphes...Graphes Plan du cours : définitions, exemples, parcours en profondeur, algorithme de Dijkstra.

Plus courts chemins : Dijkstra.

13

13

16

7

2

128

3

4

1

9

5

1

2

100

2 3

7source

w

vx

u

s

t

Graphes 1 – SG – p. 41/51

Page 71: Graphes - Département Informatique et Interactionsgcolas/algo-licence/slides/graphes...Graphes Plan du cours : définitions, exemples, parcours en profondeur, algorithme de Dijkstra.

Plus courts chemins : Dijkstra.

13

16

8

7

2

128

3

1

5

4

1

910

2

0

2 3

7source

w

vx

u

s

t

Graphes 1 – SG – p. 41/51

Page 72: Graphes - Département Informatique et Interactionsgcolas/algo-licence/slides/graphes...Graphes Plan du cours : définitions, exemples, parcours en profondeur, algorithme de Dijkstra.

Plus courts chemins : Dijkstra.

13

16

8

7

2

12

3

1

5

48

1

910

2

0

2 3

7source

w

vx

u

s

t

Graphes 1 – SG – p. 41/51

Page 73: Graphes - Département Informatique et Interactionsgcolas/algo-licence/slides/graphes...Graphes Plan du cours : définitions, exemples, parcours en profondeur, algorithme de Dijkstra.

Plus courts chemins : Dijkstra.

13

16

8

7

2

12

3

1

5

48

1

910

2

0

2 3

7source

w

vx

u

s

t

Graphes 1 – SG – p. 41/51

Page 74: Graphes - Département Informatique et Interactionsgcolas/algo-licence/slides/graphes...Graphes Plan du cours : définitions, exemples, parcours en profondeur, algorithme de Dijkstra.

Plus courts chemins : Dijkstra.

13

16

8

7

2

12

3

1

5

48

1

910

2

0

2 3

7source

w

vx

u

s

t

Graphes 1 – SG – p. 41/51

Page 75: Graphes - Département Informatique et Interactionsgcolas/algo-licence/slides/graphes...Graphes Plan du cours : définitions, exemples, parcours en profondeur, algorithme de Dijkstra.

Plus courts chemins : Dijkstra.

2

8

10

7

2

128

3

1

5

4

1

910

13

0

2 3

7source

w

vx

u

s

t

Graphes 1 – SG – p. 41/51

Page 76: Graphes - Département Informatique et Interactionsgcolas/algo-licence/slides/graphes...Graphes Plan du cours : définitions, exemples, parcours en profondeur, algorithme de Dijkstra.

Plus courts chemins : Dijkstra.

13

8

10

7

2

128

3

1

5

4

1

910

2

0

2 3

7source

w

u t

vx

s

Graphes 1 – SG – p. 41/51

Page 77: Graphes - Département Informatique et Interactionsgcolas/algo-licence/slides/graphes...Graphes Plan du cours : définitions, exemples, parcours en profondeur, algorithme de Dijkstra.

Plus courts chemins : Dijkstra.

13

8

10

7

2

128

3

1

5

4

1

910

2

0

2 3

7source

w

u t

vx

s

Graphes 1 – SG – p. 41/51

Page 78: Graphes - Département Informatique et Interactionsgcolas/algo-licence/slides/graphes...Graphes Plan du cours : définitions, exemples, parcours en profondeur, algorithme de Dijkstra.

Plus courts chemins : Dijkstra.

2

8

10

7

28

12

3

1

5

4

1

910

13

0

2 3

7source

w

u t

vx

s

Graphes 1 – SG – p. 41/51

Page 79: Graphes - Département Informatique et Interactionsgcolas/algo-licence/slides/graphes...Graphes Plan du cours : définitions, exemples, parcours en profondeur, algorithme de Dijkstra.

Algorithme de Dijkstra.

algorithme DIJKSTRA(G, s)in : G = (S, V [], w) un graphe pondéré, s un sommet de G(F une file de priorité)

1 F := S, {i.e. initialement F contient tous les sommets}2 pour chaque sommet u ∈ S faire3 d[u] := ∞,4 d[s] := 0,5 tant que F 6= ∅ faire6 u :=EXTRAIRE_LE_MIN(F ),7 pour chaque sommet v ∈ V [u] faire8 si d[v] > d[u] + w(u, v) alors9 d[v] = d[u] + w(u, v),10 fin pour ,11 fin tant que ,12 renvoyer d,

Graphes 1 – SG – p. 42/51

Page 80: Graphes - Département Informatique et Interactionsgcolas/algo-licence/slides/graphes...Graphes Plan du cours : définitions, exemples, parcours en profondeur, algorithme de Dijkstra.

Algorithme de Dijkstra.

algorithme DIJKSTRA(G, s)in : G = (S, V [], w) un graphe pondéré, s un sommet de G(n le nombre de sommets, m le nombre d’arcs)

1 F := S, O(n)2 pour chaque sommet u ∈ S faire3 d[u] := ∞, O(n)4 d[s] := 0,5 tant que F 6= ∅ faire6 u :=EXTRAIRE_LE_MIN(F ), n × O(n)7 pour chaque sommet v ∈ V [u] faire8 si d[v] > d[u] + w(u, v) alors m fois9 d[v] = d[u] + w(u, v),10 fin pour ,11 fin tant que ,12 renvoyer d,

F : table contenant des sommets.EXTRAIRE_LE_MIN(F ) consiste à par-courir la table.Coût total : O(n2)

Graphes 1 – SG – p. 43/51

Page 81: Graphes - Département Informatique et Interactionsgcolas/algo-licence/slides/graphes...Graphes Plan du cours : définitions, exemples, parcours en profondeur, algorithme de Dijkstra.

Algorithme de Dijkstra.

EXTRAIRE_LE_MIN(F ) :

7 sommets

10 2 3 4 5 6 7 8 9

2

10

d 0 44

10 2 3 4 5 6 7 8 9

F 2

10

8 3 7 410 05916

69 14231418 11

Graphes 1 – SG – p. 44/51

Page 82: Graphes - Département Informatique et Interactionsgcolas/algo-licence/slides/graphes...Graphes Plan du cours : définitions, exemples, parcours en profondeur, algorithme de Dijkstra.

Algorithme de Dijkstra.

EXTRAIRE_LE_MIN(F ) :

7 sommets

10 2 3 4 5 6 7 8 9

2

10

d 0 44

10 2 3 4 5 6 7 8 9

F 2

10

8 3 7 410 05916

69 14231418 11

Graphes 1 – SG – p. 45/51

Page 83: Graphes - Département Informatique et Interactionsgcolas/algo-licence/slides/graphes...Graphes Plan du cours : définitions, exemples, parcours en profondeur, algorithme de Dijkstra.

Algorithme de Dijkstra.

EXTRAIRE_LE_MIN(F ) :

7 sommets

10 2 3 4 5 6 7 8 9

2

10

d 0 44

10 2 3 4 5 6 7 8 9

F 2

10

8 3 7 410 05916

69 14231418 11

Graphes 1 – SG – p. 46/51

Page 84: Graphes - Département Informatique et Interactionsgcolas/algo-licence/slides/graphes...Graphes Plan du cours : définitions, exemples, parcours en profondeur, algorithme de Dijkstra.

Algorithme de Dijkstra.

EXTRAIRE_LE_MIN(F ) :

6 sommets

10 2 3 4 5 6 7 8 9

2

10

d 0 44

10 2 3 4 5 6 7 8 9

F 2

10

8 310 05916

69 14231418 11

4 7

Graphes 1 – SG – p. 47/51

Page 85: Graphes - Département Informatique et Interactionsgcolas/algo-licence/slides/graphes...Graphes Plan du cours : définitions, exemples, parcours en profondeur, algorithme de Dijkstra.

Algorithme de Dijkstra.

algorithme DIJKSTRA(G, s)in : G = (S, V [], w) un graphe pondéré, s un sommet de G(n le nombre de sommets, m le nombre d’arcs)

1 F := S, O(n)2 pour chaque sommet u ∈ S faire3 d[u] := ∞, O(n)4 d[s] := 0,5 tant que F 6= ∅ faire6 u :=EXTRAIRE_LE_MIN(F ), n × O(log n)7 pour chaque sommet v ∈ V [u] faire8 si d[v] > d[u] + w(u, v) alors9 d[v] = d[u] + w(u, v), m × O(log n)10 fin pour ,11 fin tant que ,12 renvoyer d,

F : tas binaire.Extraire le min et diminuer la clé sonten O(log n).Coût total : O(m × log n)

Graphes 1 – SG – p. 48/51

Page 86: Graphes - Département Informatique et Interactionsgcolas/algo-licence/slides/graphes...Graphes Plan du cours : définitions, exemples, parcours en profondeur, algorithme de Dijkstra.

Algorithme de Dijkstra.

En faisant une recherche linéaire dans F : O(|S|2 + |A|)

En implémentant F avec un tas :

initialisations : O(|S|)

Construction du tas : O(|S|)

maintien du tas : O(|S| × log|S| + |A| × log|S|) = O(|A| × log|S|)

Le coût total est donc O(|A| × log|S|) si le graphe est connexe

(O(|S| × log|S| + |A|) avec un tas de Fibonacci)

Graphes 1 – SG – p. 49/51

Page 87: Graphes - Département Informatique et Interactionsgcolas/algo-licence/slides/graphes...Graphes Plan du cours : définitions, exemples, parcours en profondeur, algorithme de Dijkstra.

Algorithme de Dijkstra : preuve.

Supposition. quand u est extrait de F , d[u] > δ(s, u)

[on suppose que u est le premier dans ce cas]

considérons un plus court chemin entre s et u,

soit y le premier sommet de F dans ce chemin,

soit x le sommet précédent y.

s

u

yx

F

Graphes 1 – SG – p. 50/51

Page 88: Graphes - Département Informatique et Interactionsgcolas/algo-licence/slides/graphes...Graphes Plan du cours : définitions, exemples, parcours en profondeur, algorithme de Dijkstra.

Algorithme de Dijkstra : preuve.

le chemin jaune est un plus court chemin

le chemin jaune et l’arête rouge est un plus court chemin(car sous chemin d’un plus court chemin entre s et u)

δ(s, u) ≥ δ(s, y) et δ(s, y) = d[y] car (x, y) a été relaché

d[y] ≥ d[u] puisqu’on a extrait u et non pas y

donc δ(s, u) ≥ d[u] ce qui contredit l’hypothèse δ(s, u) < d[u]

s

u

yx

F

Graphes 1 – SG – p. 51/51