Title: Licence dinformatique Algorithmique des graphes
1Licence dinformatiqueAlgorithmique des graphes
- Exploration de la descendance dun sommet
Utilisation de ce document strictement réservée
aux étudiants de l IFSIC dans le cadre de leur
formation. Reproduction ou diffusion en dehors de
l IFSIC strictement interdite sauf autorisation
expresse de l auteur.
2Explorer la descendance dun sommet
Donnée un graphe G, et un sommet x de ce graphe
Résultat la descendance de x dans le graphe G
Quest-ce que cest ?
Définition le sommet y est descendant de x dans
G si x y ou si il existe un
chemin de G, allant de x à y
3Explorer la descendance dun sommet
Donnée un graphe G, et un sommet x de ce graphe
Résultat la descendance de x dans le graphe G
Mais aussi
Définition l arc (y, z) appartient à la
descendance de x dans Gsi cest un arc de G et
si y est descendant de x dans G
4Graphe G (?(a) , ?a )
Exemple
i
h
j
5Principe général dexploration visites
Prédicats
visité(y) le sommet y a été visité (par
lexploration)
visité(y,z) larc (y, z) a été visité (par
lexploration)
Axiomes
(le sommet initial x est visité a priori)
(un sommet z est visité ssi au moins un arc vers
z est visité)
(seul un arc du graphe peut être visité et son
origine doit être visitée)
6Principe général dexploration visites
Etat initial
visité(x) (axiome init)
But (Etat final)
7Algorithme général dexploration
Invariant
3 états possibles pour chaque sommet y
1) Il nest pas (encore?) visité
8Algorithme général dexploration
Invariant
3 états possibles pour chaque sommet y
1) Il nest pas (encore?) visité
(donc aucun des arcs qui y aboutissent non plus)
9Algorithme général dexploration
Invariant
3 états possibles pour chaque sommet y
1) Il nest pas (encore?) visité
(donc aucun des arcs qui y aboutissent non plus)
2) Il est déjà visité, et ses arcs sortants ne
sont pas encore tous visités
10Algorithme général dexploration
Invariant
3 états possibles pour chaque sommet y
1) Il nest pas (encore?) visité
(donc aucun des arcs qui y aboutissent non plus)
2) Il est déjà visité, et ses arcs sortants ne
sont pas encore tous visités
3) Il est déjà visité, et ses arcs sortants sont
tous visités
(donc tous ses successeurs sont aussi visités)
11Algorithme général dexploration
Invariant
3 états possibles pour chaque sommet y
dehors
1) Il nest pas (encore?) visité
(donc aucun des arcs qui y aboutissent non plus)
2) Il est déjà visité, et ses arcs sortants ne
sont pas encore tous visités
en_attente
3) Il est déjà visité, et ses arcs sortants sont
tous visités
(donc tous ses successeurs sont aussi visités)
terminé
12Algorithme général dexploration
Invariant
2 états possibles pour chaque arc (y,z)
1) Il nest pas (encore?) visité
13Algorithme général dexploration
Invariant
2 états possibles pour chaque arc (y,z)
1) Il nest pas (encore?) visité
2) Il est déjà visité
(donc son origine y et son extrémité z aussi -
axiomes (sommet) et (arc))
14Algorithme général dexploration
Invariant
Lensemble des sommets du graphe se répartit en
Lensemble des arcs du graphe se répartit en
15Algorithme général dexploration
Invariant
Lensemble des sommets du graphe se répartit en
Propriétés
(seuls les sommets descendants de x peuvent être
visités)
16Algorithme général dexploration
Invariant
L ensemble des arcs du graphe se répartit en
Propriétés
(seuls les sommets descendants de x peuvent être
visités)
(seuls les arcs de la descendance de x peuvent
être visités)
17STATUT DES SOMMETS ET DES ARCS
i
g
k
l
f
h
c
a
e
j
b
d
18Algorithme général dexploration
ARRET
état final de lexploration
19Algorithme général dexploration
ARRET
état final de l exploration
Cest-à -dire tout y visité est terminé
20Algorithme général dexploration
ARRET
Réciproquement
état final de lexploration
Réciproquement
21Algorithme général dexploration
ARRET
Réciproquement
état final de lexploration
Réciproquement
22Algorithme général dexploration
INIT
V lt- ? si x a des successeurs alors T lt- ?
A lt- x sinon T lt- x A lt- ? fsi D lt-
tous les sommets sauf x
23Algorithme général dexploration
PROGRESSION
Maintien des axiomes
(init) un sommet visité ne repasse jamais dehors
(sommet) après visite dun arc (y,z), z nest pas
dehors
(arc) la visite dun arc (y,z) nest possible que
si y est en_attente
Terminaison
A chaque étape, le nombre darcs non visités doit
décroître
24Algorithme général dexploration
PROGRESSION
soit y un sommet détat en_attente
Si z est dehors ( non visité ) alors( visiter
y ) si z a des successeurs alors
z devient en_attente sinon z
devient terminé fsi
(arc) la visite dun arc (y,z) nest possible que
si y est en_attente
A chaque étape, le nombre darcs non visités doit
décroître
(sommet) après visite d un arc (y,z), z nest
pas dehors
25Algorithme général dexploration
PROGRESSION
soit y un sommet détat en_attente
soit z un successeur de y tel que (y,z) est non
visité
Visiter larc (y,z)
Si z est dehors ( non visité ) alors si z
a des successeurs alors z devient
en_attente sinon z devient terminé fsi
si tous les arcs issus de y sont visités alors
y devient terminé
(init) un sommet visité ne repasse jamais dehors
26STATUT DES SOMMETS ET DES ARCS
en_attente
i
g
k
l
f
h
c
a
e
j
b
d
27STATUT DES SOMMETS ET DES ARCS
terminé
en_attente
Encore des arcs à visiter?
NON
i
g
k
l
terminé
f
h
c
a
en_attente
e
j
b
d
28Maintien des propriétés invariantes
soit y un sommet détat en_attente
soit z un successeur de y tel que (y,z) est non
visité
Visiter larc (y,z)
Si z est dehors ( non visité ) alors si z a
des successeurs alors z devient en_attente
sinon z devient terminé
fsi
si tous les arcs issus de y sont visités alors y
devient terminé
Par induction
vrai chaque fois quun sommet devient
ou terminé
en_attente
29Maintien des propriétés invariantes
soit y un sommet d état en_attente
soit z un successeur de y tel que (y,z) est non
visité
Visiter l arc (y,z)
Si z est dehors ( non visité ) alors
si z a des successeurs alors z
devient en_attente sinon z devient
terminé
fsi
si tous les arcs issus de y sont visités alors
y devient terminé
Par induction
vrai chaque fois quun arc devient
visité
30Stratégies particulières
On particularise lalgorithme général en
spécifiant le sommet en_attente à partir duquel
on poursuit lexploration
Deux exemples
- LARGEUR choisir le sommet  le plus ancienÂ
- PROFONDEUR choisir le sommet  le plus récentÂ
31LARGEUR DABORD LA FILE
Comment repérer le sommet en_attente  le plus
ancien ?
Gérer lensemble A avec la structure de données
adéquate
La FILE
PAPS
Premier Arrivé Premier Sorti
32LARGEUR DABORD LA FILE
La FILE
sens de déplacement
v
a
mettre_en_file(v)
33LARGEUR DABORD LA FILE
La FILE
sens de déplacement
v
a
mettre_en_file(v)
x ? ôter_de_file
34LARGEUR DABORD LA FILE
La FILE
sens de déplacement
v
mettre_en_file(v)
a
x ? ôter_de_file
35LARGEUR DABORD LA FILE
La FILE
sens de déplacement
v
mettre_en_file(v)
f ? créer
x ? ôter_de_file
b ? filevide
36LARGEUR DABORD LA FILE
Une étape de l algorithme
sens de déplacement
y
Sommet en tête sélectionné devient terminé
37LARGEUR DABORD LA FILE
Une étape de l algorithme
sens de déplacement
Sommet en tête sélectionné devient terminé
tous ses arcs sortants sont visités ses
successeurs encore dehors deviennent en_attente
(ils rentrent dans la file)
38i
g
k
l
FILE
a
f
h
c
e
j
b
d
39i
g
k
FILE
a
c e l
f
a
h
j
b
d
40i
g
k
FILE
a
c e l
f
e l b
a
h
j
b
d
41i
g
k
FILE
a
c e l
f
e l b
a
h
l b d f
j
b
d
42i
g
k
FILE
a
c e l
f
e l b
a
h
l b d f
b d f h k
j
b
d
43i
g
k
FILE
a
c e l
f
e l b
a
h
Déjà visité
l b d f
b d f h k
d f h k
j
b
d
44i
g
k
FILE
a
c e l
f
e l b
a
h
l b d f
b d f h k
d f h k
f h k
j
b
d
Pas de successeur
45i
g
k
FILE
a
c e l
f
e l b
a
h
l b d f
b d f h k
d f h k
f h k
j
b
d
h k g
Déjà visité
46i
g
k
FILE
a
c e l
Déjà visité
f
e l b
a
h
l b d f
b d f h k
d f h k
f h k
j
b
d
h k g
k g
47i
g
k
FILE
a
Sommets déjà visités
c e l
f
e l b
a
h
l b d f
b d f h k
d f h k
f h k
j
b
d
h k g
k g
g
48i
g
k
FILE
déjà visité
a
c e l
f
e l b
a
h
l b d f
b d f h k
d f h k
f h k
j
b
d
h k g
k g
g
?
49i
k
l
g
DISTANCE 1
DISTANCE 2
f
DISTANCE 3
h
c
a
e
j
b
d
ARBORESCENCE DEXPLORATION EN LARGEUR
50Stratégies particulières
On particularise l algorithme général en
spécifiant le sommet en_attente à partir duquel
on poursuit lexploration
Deux exemples
- LARGEUR choisir le sommet  le plus ancienÂ
- PROFONDEUR choisir le sommet  le plus récentÂ
51PROFONDEUR DABORD LA PILE
Comment repérer le sommet en_attente  le plus
récent ?
Gérer l ensemble A avec la structure de données
adéquate
La PILE
DAPS
Dernier Arrivé Premier Sorti
52PROFONDEUR DABORD LA PILE
La PILE
v
w
empiler(v)
53PROFONDEUR DABORD LA PILE
La PILE
v
w
empiler(v)
dépiler
54PROFONDEUR DABORD LA PILE
La PILE
w
w
empiler(v)
dépiler
x?sommet_pile
55PROFONDEUR DABORD LA PILE
La PILE
w
empiler(v)
dépiler
x?sommet_pile
56PROFONDEUR DABORD LA PILE
Une étape de l algorithme
y
Sommet en tête sélectionné
Choix dun arc sortant (y,z) non encore visité
Visite de l arc (y,z)
Si z est dehors alors il devient en_attente
empiler(z)
57PROFONDEUR DABORD LA PILE
Une étape de lalgorithme
y
Sommet en tête sélectionné
Choix dun arc sortant (y,z) non encore visité
Si tous les arcs sortants de y sont visités, y
devient terminé
(dépiler)
58PROFONDEUR DABORD LA PILE
Une étape de lalgorithme
Sommet en tête sélectionné
Choix dun arc sortant (y,z) non encore visité
Si tous les arcs sortants de y sont visités, y
devient terminé
(dépiler)
IL FAUT DONC ATTACHER A CHAQUE SOMMET en_attente
LENSEMBLE DES ARCS A VISITER
59i
g
k
l
PILE
a
a c
a c b
a c b e
f
h
c
a c b e d
a c b e
a c b e f
e
a c b e f g
a c b e f g k
a c b e f g k l
j
b
d
a c b e f g k l h
a c b e f g k l
a c b e f g k
a c b e f g
a c b e f
a c b e
a c b
a c
a
?
60ARBORESCENCE DEXPLORATION EN PROFONDEUR
61Comparaison des deux stratégies
Algorithme simple (pas de mémorisation des arcs
à visiter)
Algorithme plus compliqué (mémorisation des
arcs à visiter)
Arborescence de chemins longs (en terme de
nombre darcs)
Arborescence des chemins les plus courts (en
terme de nombre darcs)
Tout état de la pile est un chemin possibilité
de  greffer sur le parcours des calculs sur
les chemins
Les états de la file ne sont pas des chemins
pas de calculs sur les chemins lors du parcours