Telechargé par yassine-net

GRAPHS chap01 Concepts Base

publicité
Sommaire
ALGORITHMES POUR LES
GRAPHES
• Chap. 1 – Concepts de Base sur les
Graphes
• Chap.2 - Chemins
• Chap. 3 – Arbres couvrants
• Chap. 4 – Flots
© L. B. Romdhane Ph.D.
ISITCom / U. de Sousse / Tunisie
© L. B. Romdhane; ISITCom
MRID - Graph Algorithms
2
Sommaire
GRAPHES: NOTIONS DE
BASE
© L. B. Romdhane Ph.D.
•
•
•
•
Introduction
Représentation
Notions relatives aux nœuds
Traversée
– DFS
– BFS
ISITCom / U. de Sousse / Tunisie
© L. B. Romdhane; ISITCom
MRID - Graph Algorithms
4
Concepts de base (1)
Concepts de base (2)
• Un graphe est un ensemble d’objets (appelés
nœuds) et un ensemble de relations entre les
objets (appelées liens)
• Les arêtes peuvent être orientées ou nonorientées
• Graphe orienté : tous ses liens sont orientés.
Ils sont appelés arcs
• Graphe non-orienté : tous ses les liens sont
non-orientées. Ils sont appelés arêtes
• Graphe mixte : il y a des liens orientés (arcs)
et des liens non-orientés (arêtes)
Molécule
• Objets = éléments
chimiques
•O, OH
• Relations : liaisons
© L. B. Romdhane; ISITCom
MRID - Graph Algorithms
5
Concepts de base (3)
© L. B. Romdhane; ISITCom
MRID - Graph Algorithms
6
Concepts de base (4)
• Facebook
– Noeuds
• personnes
– Liens
• amie-de
Site web
© L. B. Romdhane; ISITCom
MRID - Graph Algorithms
L7
© L. B. Romdhane; ISITCom
MRID - Graph Algorithms
8
Concepts de base (5)
Concepts de Base (6)
• Graphe pondéré : les liens (arêtes ou arcs) et/ou
les nœuds portent des informations
– durée / coût pour un vol aérien
– capacité de transmission pour une connexion réseau
Réseau routier
© L. B. Romdhane; ISITCom
MRID - Graph Algorithms
9
Concepts de base (7)
© L. B. Romdhane; ISITCom
MRID - Graph Algorithms
10
Représentation (1)
• Un graphe est un quadruple G(V, E, µ, λ) :
– V : ensemble des nœuds
– E ⊆ V x V : ensemble des liens
– µ : V → LV : définit les étiquettes des nœuds
– λ: E → LE : définit les étiquettes des liens
© L. B. Romdhane; ISITCom
MRID - Graph Algorithms
11
© L. B. Romdhane; ISITCom
MRID - Graph Algorithms
12
Représentation (2)
Représentation (3)
• CONST
N = ….
• TYPE
GRAPHE = tableau[N, N] d’entiers
© L. B. Romdhane; ISITCom
MRID - Graph Algorithms
13
Représentation (4)
© L. B. Romdhane; ISITCom
MRID - Graph Algorithms
14
Représentation (5)
• CONST
N = ….
• TYPE
nodeList = Structure
Voisin : entier
Suiv : * nodeList
FinStructure
GRAPHE = tableau[N] de *nodeList
© L. B. Romdhane; ISITCom
MRID - Graph Algorithms
15
© L. B. Romdhane; ISITCom
MRID - Graph Algorithms
16
Voisinage & Degré (1)
• Un nœud w est dit voisin d’un nœud v ssi il
existe un lien de v vers w (orienté ou non)
• Dans un graphe G(V, E); on a:
Voisinage (x) = { w ∈ V / (x, w) ∈ E}
NOTIONS RELATIVES
AUX NOEUDS
Voisinage(g) = {d, r, n}
Voisinage (n) = {r, d, g, j}
© L. B. Romdhane; ISITCom
MRID - Graph Algorithms
17
Voisinage & Degré (2)
MRID - Graph Algorithms
MRID - Graph Algorithms
18
Voisinage & Degré (3)
• On appelle degré d’un nœud le nombre des
liens incidents sur v
Degre (v) = nombre de liens incidents sur v
• Dans un graphe orienté, on distingue deux
mesures de degrés
Voisinage(A) = {B}
Voisinage (E) = {D, F}
Voisinage (F) = ∅
© L. B. Romdhane; ISITCom
© L. B. Romdhane; ISITCom
19
– Degré entrant
d in (v ) = w /( w; v) ∈ E
– Degré sortant
d out (v ) = w /(v; w) ∈ E
© L. B. Romdhane; ISITCom
MRID - Graph Algorithms
20
Voisinage & Degré (3)
Traversée d’un graphe
• Traverser un graphe revient à visiter ses
nœuds et ses arêtes efficacement
– exécuter un algorithme dans chaque visite
d in (E ) = 1
d (r ) = 4
© L. B. Romdhane; ISITCom
• Deux grandes stratégies de parcours
– DFS (Depth-First Search) : en profondeur d’abords
d out (E ) = 2
MRID - Graph Algorithms
– BFS (Breadth-First Search) : en largeur d’abords
21
© L. B. Romdhane; ISITCom
DFS (1)
MRID - Graph Algorithms
22
DFS (2)
• Principe général
A
– Commencer la traversée à partir d’un nœud initial
A
B
(2)
B
(1)
D
Choix des nœuds : ordre
alphabétique décroissant
D
G
G
• une stratégie de choix pour le nœud initial
– Récursivement explorer tous ses nœuds adjacents
F
F
C
C
• nœuds adjacents sont les voisins directs
• on doit avoir une stratégie pour choisir l’ordre
d’exploration des nœuds adjacents
D
D
(4)
(3)
B
B
G
G
F
F
C
C
MRID - Graph Algorithms
A
A
– Marquer les nœuds/liens visités
– Arrêt : il n’ya plus de nœuds à explorer
© L. B. Romdhane; ISITCom
E
E
23
© L. B. Romdhane; ISITCom
E
E
MRID - Graph Algorithms
24
DFS (3)
DFS (4)
D
D
A
A
(6)
B
(5)
D
D
A
A
B
G
G
B
B
(10)
G
(9)
G
F
F
C
C
ARRET
A
B
(7)
G
F
C
(8)
B
G
F
E
C
MRID - Graph Algorithms
E
25
1. Exécutée à partir du nœud A, l’algorithme DFS :
• a pu joindre les nœuds: F, B, C, D
• les nœuds E, G restent injoignables
2. On peut reprendre l’exécution de l’algorithme à partir de E
© L. B. Romdhane; ISITCom
MRID - Graph Algorithms
DFS (5)
DFS-Analyse (1)
PROCEDURE DFS (G : Graphe, s : sommet)
DEBUT
• Théorème 1
• Théorème 2
POUR CHAQUE nœud v ∈ Voisins(s) FAIRE
– Soit G(V, E) un graphe avec n nœuds et m arêtes
sur lequel on a effectué un DFS à partir d’u nœud
w0. Le DFS visite tous les liens du graphe connexe
de w0; et les liens visités forment un arbre
maximal de G (graphe connexe acyclique)
SI NonMarqué(v) alors DFS(G,v)
FinSi
FinPour
FIN.
MRID - Graph Algorithms
26
– Soit G(V, E) un graphe avec n nœuds et m arêtes
implémenté avec la liste d’adjacence, alors
l’algorithme DFS s’effectue en un temps O(n + m)
Marquer(s); // pour éviter de le revisiter
© L. B. Romdhane; ISITCom
E
E
D
A
© L. B. Romdhane; ISITCom
E
E
D
F
F
C
C
27
© L. B. Romdhane; ISITCom
MRID - Graph Algorithms
28
DFS-Analyse (2)
DFS-Analyse (3)
• Théorème
– Soit G(V, E) un graphe avec n nœuds et m arêtes
implémenté avec la liste d’adjacence, alors il
existe aussi des variantes du DFS s’effectuant en
un temps O(n + m) pour :
G
F
C
E
D
A
B
G
• Déterminer toutes les composantes connexes de G
– exécuter plusieurs fois le DFS à partir d’un nœud non visité
Composantes
connexes
F
C
• Déterminer le(s) chemin(s) entre deux nœuds
MRID - Graph Algorithms
A
B
• Tester la connectivité de G
© L. B. Romdhane; ISITCom
D
Arbre DFS
29
BFS (1)
E
© L. B. Romdhane; ISITCom
30
MRID - Graph Algorithms
BFS (2)
0
0
• Principe général
D
D
A
1
A
B
– Commencer la traversée à partir d’un nœud initial
B
G
G
1
F
– A partir d’un nœud donné, explorer en même temps,
C
F
E
C
1
E
tous ses nœuds adjacents
2
0
– Marquer les nœuds/liens visités
A
B
G
1
31
F
1
G
1
C
© L. B. Romdhane; ISITCom
D
1
B
– Arrêt : il n’ya plus de nœuds à explorer
MRID - Graph Algorithms
A
1
– Numéroter les nœuds visités par niveau
© L. B. Romdhane; ISITCom
2
0
D
E
MRID - Graph Algorithms
F
1
C
E
32
BFS (3)
BFS (4)
PROCEDURE BFS (V, E, s)
DEBUT
pour chaque noeud u dans V − {s} faire
color[u] ← WHITE ; d[u] ← infinity : π[u] ← NIL
fin pour
color[s] ← GRAY; d[s] ← 0 ; π[s] ← NIL ; Q ← créer_file( ); enfiler(s, Q)
tant que NON(file_vide(Q)) faire
u ← defiler(Q)
pour chaque v adjacent à u faire
si (color[v] = WHITE) alors
Color[v] ← GRAY; d[v] ←d[u] + 1; π[v] ← u; enfiler(Q,v)
finsi
finpour
color[u] ← BLACK
fin tantque
FIN
© L. B. Romdhane; ISITCom
MRID - Graph Algorithms
33
BFS (5)
© L. B. Romdhane; ISITCom
© L. B. Romdhane; ISITCom
MRID - Graph Algorithms
34
MRID - Graph Algorithms
36
BFS (6)
MRID - Graph Algorithms
35
© L. B. Romdhane; ISITCom
BFS-Analyse
• Théorème
– Soit G(V, E) un graphe avec n nœuds et m arêtes
implémenté avec la liste d’adjacence, alors
l’algorithme BFS s’effectue en un temps O(n + m)
• Théorème
– Soit G(V, E) avec n nœuds et m arêtes sur lequel on a
effectué un BFS à partir de w0; alors:
• Les liens marqués « finis » forment un arbre maximal T du
graphe connexe de w0
• Pour chaque nœud v à un niveau i , le chemin dans T entre v
et w0 est minimal (en terme du nombre d’arêtes) et possède
i liens
© L. B. Romdhane; ISITCom
MRID - Graph Algorithms
37
Téléchargement