610 likes | 734 Views
Licence d’informatique Algorithmique des graphes. Exploration de la descendance d’un sommet. Utilisation de ce document strictement réservée aux étudiants de l ’IFSIC dans le cadre de leur formation.
E N D
Licence d’informatiqueAlgorithmique des graphes Exploration de la descendance d’un 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.
Explorer la descendance d’un sommet Donnée :un graphe G, et un sommet x de ce graphe Résultat :la descendance de x dans le graphe G Qu’est-ce que c’est ? Définition :le sommet y est descendant de x dans Gsi x = you si il existe un chemin de G, allant de x à y
Explorer la descendance d’un 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 c’est un arc de Get siy est descendant de x dans G
g k l g k l f f a c a c e e d b d b Graphe G* = (*(a) , a ) Exemple i h j
Principe général d’exploration : visites Prédicats : visité(y) :le sommet y a étévisité(par l’exploration) visité(y,z) :l’arc (y, z) a étévisité(par l’exploration) 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)
et donc, d' après (arc) Principe général d’exploration : visites Etat initial : visité(x)(axiome init) But (Etat final) :
Algorithme général d’exploration Invariant : 3 états possibles pour chaque sommet y : 1) Il n’est pas (encore?) visité
Algorithme général d’exploration Invariant : 3 états possibles pour chaque sommet y : 1) Il n’est pas (encore?) visité (donc aucun des arcs qui y aboutissent non plus)
(la réciproque de cet axiome n’est pas vraie) Algorithme général d’exploration Invariant : 3 états possibles pour chaque sommet y : 1) Il n’est 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
Algorithme général d’exploration Invariant : 3 états possibles pour chaque sommet y : 1) Il n’est 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)
Algorithme général d’exploration Invariant : 3 états possibles pour chaque sommet y : dehors 1) Il n’est 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é
Algorithme général d’exploration Invariant : 2 états possibles pour chaque arc (y,z): 1) Il n’est pas (encore?) visité
Algorithme général d’exploration Invariant : 2 états possibles pour chaque arc (y,z): 1) Il n’est pas (encore?) visité 2) Il est déjà visité (donc son origine y et son extrémité z aussi - axiomes (sommet) et (arc))
Algorithme général d’exploration Invariant : L’ensemble des sommets du graphe se répartit en : L’ensemble des arcs du graphe se répartit en :
Algorithme général d’exploration Invariant : L’ensemble des sommets du graphe se répartit en : Propriétés : (seuls les sommets descendants de x peuvent être visités)
Algorithme général d’exploration 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)
dehors terminé visité en_attente STATUT DES SOMMETS ET DES ARCS i g k l f h a c e j d b
Par définition : Algorithme général d’exploration ARRET : état final de l’exploration :
Algorithme général d’exploration ARRET : état final de l ’exploration : C’est-à-dire tout y visité est terminé
Donc : Algorithme général d’exploration ARRET : Réciproquement : état final de l’exploration : Réciproquement:
Algorithme général d’exploration ARRET : Réciproquement : état final de l’exploration : Réciproquement:
état initial de l’exploration : visité(x) Algorithme général d’exploration INIT : V <- ; si x a des successeurs alors T <- ; A <- {x}; sinon T <- {x}; A <- fsi ; D <- tous les sommets sauf x
Algorithme général d’exploration PROGRESSION: Maintien des axiomes (init) un sommet visité ne repasse jamais dehors (sommet) après visite d’un arc (y,z), z n’est pas dehors (arc) la visite d’un arc (y,z) n’est possible que si y est en_attente Terminaison A chaque étape, le nombre d’arcs non visités doit décroître
soit z un successeur de y tel que (y,z) est non visité; visiter l’arc (y,z); Algorithme général d’exploration 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 d’un arc (y,z) n’est possible que si y est en_attente A chaque étape, le nombre d’arcs non visités doit décroître (sommet) après visite d’ un arc (y,z), z n’est pas dehors
Algorithme général d’exploration PROGRESSION: 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é (init) un sommet visité ne repasse jamais dehors
dehors déjà en_attente terminé visité en_attente STATUT DES SOMMETS ET DES ARCS en_attente i g k l f h a c e j d b
dehors visité en_attente dehors STATUT DES SOMMETS ET DES ARCS terminé en_attente Encore des arcs à visiter? NON i g k l terminé f h a c en_attente e j d b
vrai initialement Maintien 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 qu’un sommet devient ou terminé en_attente
vrai initialement Maintien 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 qu’un arc devient visité
Stratégies particulières On particularise l’algorithme général en spécifiant le sommet en_attenteà partir duquel on poursuit l’exploration Deux exemples : • LARGEUR : choisir le sommet « le plus ancien » • PROFONDEUR : choisir le sommet « le plus récent »
LARGEUR D’ABORD : LA FILE Comment repérer le sommet en_attente « le plus ancien »? Gérerl’ensemble A avec la structure de données adéquate : La FILE PAPS Premier Arrivé Premier Sorti
LARGEUR D’ABORD : LA FILE La FILE sens de déplacement v a mettre_en_file(v)
LARGEUR D’ABORD : LA FILE x La FILE sens de déplacement v a mettre_en_file(v) x ôter_de_file
LARGEUR D’ABORD : LA FILE x La FILE sens de déplacement v mettre_en_file(v) a x ôter_de_file
LARGEUR D’ABORD : LA FILE La FILE sens de déplacement v f créer mettre_en_file(v) x ôter_de_file b filevide
LARGEUR D’ABORD : LA FILE Une étape de l ’algorithme : sens de déplacement y Sommet en tête sélectionné : devient terminé ;
LARGEUR D’ABORD : LA FILE z1 z2 z3 y 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);
a i g k l FILE a f h c e j d b
l c e i g k FILE a c e l f a h j d b
l c e i g k FILE a c e l f e l b a h j d b
l c e i g k FILE a c e l f e l b a h l b d f j d b
l c e i g k FILE a c e l f e l b a h l b d f bd f h k j d b
l c e i g k FILE a c e l f e l b a h Déjà visité l b d f bd f h k d f h k j d b
l c e i g k FILE a c e l f e l b a h l b d f bd f h k d f h k f h k j d b Pas de successeur
l c e i g k FILE a c e l f e l b a h l b d f bd f h k d f h k f h k j d b h k g Déjà visité
l c e i g k FILE a c e l Déjà visité f e l b a h l b d f bd f h k d f h k f h k j d b h k g k g
l c e i g k FILE a Sommets déjà visités c e l f e l b a h l b d f bd f h k d f h k f h k j d b h k g k g g
l c e i g k FILE déjà visité a c e l f e l b a h l b d f bd f h k d f h k f h k j d b h k g k g g
g k f h a d k i g l DISTANCE1 DISTANCE 2 f DISTANCE 3 h a c e j d b ARBORESCENCE D’EXPLORATION EN LARGEUR
Stratégies particulières On particularise l ’algorithme général en spécifiant le sommet en_attenteà partir duquel on poursuit l’exploration Deux exemples : • LARGEUR : choisir le sommet « le plus ancien » • PROFONDEUR : choisir le sommet « le plus récent »