Parcours, fouilles et vagues Franck Petit LaRIA Université de Picardie Jules Verne, Amiens

Slides:



Advertisements
Présentations similaires
Introduction à la Théorie des graphes
Advertisements

La recherche de chemin optimal
Théorie des graphes.
Placement de Motifs Architecture Application Contraintes: - Charge
La Couche Réseau.
Algorithmes et structures de données avancées Cours 7
Introduction à la tolérance aux défaillances
Algorithmes et structures de données avancés
Introduction à la Théorie des graphes
Stabilisation instantanée efficace
Modélisation par le concept de graphe
Visualisation d’information interactive 5 : Graphes
A.Faÿ 1 Recherche opérationnelle Résumé de cours.
Chap. 1 INTRODUCTION Beaucoup de problèmes de la vie courante, tels la gestion de réseaux de communication ou l'ordonnancement de tâches, correspondent.
INTRODUCTION.
Traitement Co-Séquentiel: Appariment et Fusion de Plusieurs Listes
Chapitre VIII. Introduction aux graphes
Systèmes distribués C. Delporte-Gallet (ESIEE-IGM)
1 Cours numéro 3 Graphes et informatique Définitions Exemple de modélisation Utilisation de ce document strictement réservée aux étudiants de l IFSIC.
Plus courts chemins On présente dans ce chapitre un problème typique de cheminement dans les graphes : la recherche d'un plus court chemin entre deux sommets.
Algorithmes Branch & Bound
Heuristiques A. Introduction B. Recherche d ’une branche
Algorithme à vague Stéphane Devismes.
Tu es comment?.
Pr ZEGOUR Djamel Eddine
LES ARBRES IUP 2 Génie Informatique
Algorithme de Bellman-Ford
Structures de données IFT-2000
Structures de données IFT-2000
Structures de données IFT-2000



Algorithmes d ’approximation
Recherche Opérationnelle
- GRAPHES - Composantes et types
21 février 2006Cours de graphes 2 - Intranet1 Cours de graphes Les plus courts chemins, les chemins les plus légers : à laide de la vague, à laide de la.
DONG Xiaoguang HONG Liang OULDBABA Fadel WANG Min
GPA750 – Gestion de Projets
Patrons de conceptions de créations
Structures de données IFT-2000 Abder Alikacem Arbres de recouvrement minimum Département dinformatique et de génie logiciel Édition Septembre 2009 JFK.

Exploration systématique de graphes
Cours n° 4 Couche réseau.
Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI)
Graphes 1. Introduction 2. Définition 3. Représentation mémoire
Arbres et graphes.
Fondements de l’algorithmique des réseaux
INTRODUCTION.
Tutorat 7 - Introduction au Routage et OSPF
Calcul parallèle => partitionner les données en sous-groupes associés aux processeurs. P0 P2 P1.
Algorithmes Branch & Bound
Licence Informatique Algorithmique des graphes
LE FLOT MAXIMAL et LA COUPE MINIMALE
Université Pierre et Marie Curie Laboratoire d’Informatique de Paris VI Département ASIM Analyse et résultats sur le dimensionnement des mémoires pour.
Exploration systématique de graphes
IN302 – Chapitre 2 Arbres et arborescences. Isthmes Composantes connexes : 2.
Optimisation pour la Conception de Systèmes Embarqués
[Dijkstra 74] BT Bottom Top Middle BottomTopMiddle.

Algorithme de DIJKSTRA
Structures de données avancées : LH* D. E ZEGOUR Institut National d ’Informatique.
R PIF sur l’arbre Je lance une vague. r PIF sur l’arbre J’ai une vague en cours: j’attends la réponse de mes fils.
Réseaux de Petri et suivi du joueur
Algorithmes parallèles
Traversées (Parcours ) de graphes
Introduction à la Théorie des graphes
Algorithmes Branch & Bound Module IAD/RP/RO Master d ’informatique Paris 6 Philippe Chrétienne.
Cycle, Cocycle, Arbre et Arborescence
Chapitre 3 Problèmes de Cheminement
Transcription de la présentation:

Parcours, fouilles et vagues Franck Petit LaRIA Université de Picardie Jules Verne, Amiens

Franck Petit Parcours, Fouilles et Vagues Graphes n Abstraction de problèmes u Théorie de jeux u Ordonnancement de tâches u Logique (SATisfiabilité) u Plus cours chemin d'un point à un autre n Abstraction de situation "concrètes" u Réseaux de transport (ferré, routier, avions, gaz...) u Circuits électriques u Réseaux d'ordinateurs  Parcours, Fouilles

Franck Petit Parcours, Fouilles et Vagues Parcours, Fouilles n Parcours en profondeur n Parcours en largeur n But : Exploration du graphe en vue de... u trouver une solution (jeux, ordonnancement...) u détecter une particularité structurelle du graphe (point d'articulation, isthme, circuit, cycle hamiltonien...) u construction d'arbre couvrant Et les systèmes distribués...

Franck Petit Parcours, Fouilles et Vagues Système Distribué

Franck Petit Parcours, Fouilles et Vagues Système Distribué Applications parallèles et distribuées dans les réseaux d'ordinateurs Logiciel (système d'exploitation) distribué de gestion du réseau Problème de contrôle des ressources

Franck Petit Parcours, Fouilles et Vagues Système Distribué n Diffusion d'information, routage, protocoles de communication n Désignation (Election) d'un leader n Partage de ressource (Exclusion Mutuelle) n Arbre couvrant, algorithme de recherche de point sensible n Synchronisation n Détection d'étreinte fatale, détection de terminaison n Protocole d'initialisation n Calcul parallèle (Tri distribué, calcul massif, etc), grilles... Vagues Fouilles

Franck Petit Parcours, Fouilles et Vagues Plan Parcours en profondeur Parcours en largeurVagues, auto-stabilisation et stabilisation instantanée Systèmes Distribués et auto- stabilisation

Franck Petit Parcours, Fouilles et Vagues Définition graphe n Graphe simple * G = ( V, E ) n Graphes non orientés n Connexe * sans boucle, une seule arête entre deux sommets

Franck Petit Parcours, Fouilles et Vagues Définition Système Distribué n Système distribué SD = ( P, C ) n Liens de communication bidirectionnels n Réseau connexe

Franck Petit Parcours, Fouilles et Vagues Définition Système Distribué n Communications par échange de message

Franck Petit Parcours, Fouilles et Vagues Performances des Système Distribué n Complexité en taille de la mémoire requise ( Mesurée en "nombre d'états par processeur") n Complexité en Temps n Tolérance aux fautes (ou pannes)

Franck Petit Parcours, Fouilles et Vagues n Algorithme due à Trémaux ( ) Rapporter par Edouard Lucas ( ), dans"Récréations Mathématiques", Vol. 1, Gauthier Villars, Paris, 1882 Chapitre 1 : Les traversées, les ponts, les labyrinthes, les reines, le solitaire, la numération, le baguenaudier, la taquin. n But de Trémaux : Résoudre le problème de la sortie d'un labyrinthe n Tarjan. Depth First Search and Linear Graph Algorithms, SIAM Journal of Computing 1, (1972), Parcours en profondeur Plan

Franck Petit Parcours, Fouilles et Vagues Parcours en profondeur ¶A partir d'une racine r, faire v := r ·Si tous les voisins de v sont marqués *, alors aller en . ¸Choisir un voisin non marqué * u, orienter l'arête u  v de u vers v (u  v), faire v := u puis aller en . ¹Si tous les arcs reliées à v sont orientées vers v, alors c'est terminé, sinon choisir le voisin u de v tel que v  u, faire v := u, puis aller en . r Arborescence de Trémaux * Un sommet v est marqué si il existe u, voisin de v, tel que u  v.

Franck Petit Parcours, Fouilles et Vagues Parcours en profondeur ¶A partir d'une racine r, faire v := r r Arborescence de Trémaux v * Un sommet v est marqué si il existe u, voisin de v, tel que u  v. ·Si tous les voisins de v sont marqués *, alors aller en . ¸Choisir un voisin non marqué * u, orienter l'arête u  v de u vers v (u  v), faire v := u puis aller en . ¹Si tous les arcs reliées à v sont orientées vers v, alors c'est terminé, sinon choisir le voisin u de v tel que v  u, faire v := u, puis aller en .

Franck Petit Parcours, Fouilles et Vagues Parcours en profondeur ¶A partir d'une racine r, faire v := r r Arborescence de Trémaux v u * Un sommet v est marqué si il existe u, voisin de v, tel que u  v. ·Si tous les voisins de v sont marqués *, alors aller en . ¸Choisir un voisin non marqué * u, orienter l'arête u  v de u vers v (u  v), faire v := u puis aller en . ¹Si tous les arcs reliées à v sont orientées vers v, alors c'est terminé, sinon choisir le voisin u de v tel que v  u, faire v := u, puis aller en .

Franck Petit Parcours, Fouilles et Vagues Parcours en profondeur ¶A partir d'une racine r, faire v := r r Arborescence de Trémaux v u * Un sommet v est marqué si il existe u, voisin de v, tel que u  v. ·Si tous les voisins de v sont marqués *, alors aller en . ¸Choisir un voisin non marqué * u, orienter l'arête u  v de u vers v (u  v), faire v := u puis aller en . ¹Si tous les arcs reliées à v sont orientées vers v, alors c'est terminé, sinon choisir le voisin u de v tel que v  u, faire v := u, puis aller en .

Franck Petit Parcours, Fouilles et Vagues Parcours en profondeur ¶A partir d'une racine r, faire v := r r Arborescence de Trémaux v u * Un sommet v est marqué si il existe u, voisin de v, tel que u  v. ·Si tous les voisins de v sont marqués *, alors aller en . ¸Choisir un voisin non marqué * u, orienter l'arête u  v de u vers v (u  v), faire v := u puis aller en . ¹Si tous les arcs reliées à v sont orientées vers v, alors c'est terminé, sinon choisir le voisin u de v tel que v  u, faire v := u, puis aller en .

Franck Petit Parcours, Fouilles et Vagues Parcours en profondeur ¶A partir d'une racine r, faire v := r r Arborescence de Trémaux v u * Un sommet v est marqué si il existe u, voisin de v, tel que u  v. ·Si tous les voisins de v sont marqués *, alors aller en . ¸Choisir un voisin non marqué * u, orienter l'arête u  v de u vers v (u  v), faire v := u puis aller en . ¹Si tous les arcs reliées à v sont orientées vers v, alors c'est terminé, sinon choisir le voisin u de v tel que v  u, faire v := u, puis aller en .

Franck Petit Parcours, Fouilles et Vagues ·Si tous les voisins de v sont marqués *, alors aller en . ¸Choisir un voisin non marqué * u, orienter l'arête u  v de u vers v (u  v), faire v := u puis aller en . ¹Si tous les arcs reliées à v sont orientées vers v, alors c'est terminé, sinon choisir le voisin u de v tel que v  u, faire v := u, puis aller en . Parcours en profondeur ¶A partir d'une racine r, faire v := r r Arborescence de Trémaux v * Un sommet v est marqué si il existe u, voisin de v, tel que u  v.

Franck Petit Parcours, Fouilles et Vagues Parcours en profondeur ¶A partir d'une racine r, faire v := r r Arborescence de Trémaux v u * Un sommet v est marqué si il existe u, voisin de v, tel que u  v. ·Si tous les voisins de v sont marqués *, alors aller en . ¸Choisir un voisin non marqué * u, orienter l'arête u  v de u vers v (u  v), faire v := u puis aller en . ¹Si tous les arcs reliées à v sont orientées vers v, alors c'est terminé, sinon choisir le voisin u de v tel que v  u, faire v := u, puis aller en .

Franck Petit Parcours, Fouilles et Vagues Parcours en profondeur ¶A partir d'une racine r, faire v := r r Arborescence de Trémaux v * Un sommet v est marqué si il existe u, voisin de v, tel que u  v. ·Si tous les voisins de v sont marqués *, alors aller en . ¸Choisir un voisin non marqué * u, orienter l'arête u  v de u vers v (u  v), faire v := u puis aller en . ¹Si tous les arcs reliées à v sont orientées vers v, alors c'est terminé, sinon choisir le voisin u de v tel que v  u, faire v := u, puis aller en .

Franck Petit Parcours, Fouilles et Vagues Parcours en profondeur ¶A partir d'une racine r, faire v := r r Arborescence de Trémaux v u * Un sommet v est marqué si il existe u, voisin de v, tel que u  v. ·Si tous les voisins de v sont marqués *, alors aller en . ¸Choisir un voisin non marqué * u, orienter l'arête u  v de u vers v (u  v), faire v := u puis aller en . ¹Si tous les arcs reliées à v sont orientées vers v, alors c'est terminé, sinon choisir le voisin u de v tel que v  u, faire v := u, puis aller en .

Franck Petit Parcours, Fouilles et Vagues Parcours en profondeur ¶A partir d'une racine r, faire v := r r Arborescence de Trémaux v u * Un sommet v est marqué si il existe u, voisin de v, tel que u  v. ·Si tous les voisins de v sont marqués *, alors aller en . ¸Choisir un voisin non marqué * u, orienter l'arête u  v de u vers v (u  v), faire v := u puis aller en . ¹Si tous les arcs reliées à v sont orientées vers v, alors c'est terminé, sinon choisir le voisin u de v tel que v  u, faire v := u, puis aller en .

Franck Petit Parcours, Fouilles et Vagues Parcours en profondeur ¶A partir d'une racine r, faire v := r r Arborescence de Trémaux v * Un sommet v est marqué si il existe u, voisin de v, tel que u  v. ·Si tous les voisins de v sont marqués *, alors aller en . ¸Choisir un voisin non marqué * u, orienter l'arête u  v de u vers v (u  v), faire v := u puis aller en . ¹Si tous les arcs reliées à v sont orientées vers v, alors c'est terminé, sinon choisir le voisin u de v tel que v  u, faire v := u, puis aller en .

Franck Petit Parcours, Fouilles et Vagues Parcours en profondeur ¶A partir d'une racine r, faire v := r r Arborescence de Trémaux v u * Un sommet v est marqué si il existe u, voisin de v, tel que u  v. ·Si tous les voisins de v sont marqués *, alors aller en . ¸Choisir un voisin non marqué * u, orienter l'arête u  v de u vers v (u  v), faire v := u puis aller en . ¹Si tous les arcs reliées à v sont orientées vers v, alors c'est terminé, sinon choisir le voisin u de v tel que v  u, faire v := u, puis aller en .

Franck Petit Parcours, Fouilles et Vagues Parcours en profondeur ¶A partir d'une racine r, faire v := r r Arborescence de Trémaux v * Un sommet v est marqué si il existe u, voisin de v, tel que u  v. ·Si tous les voisins de v sont marqués *, alors aller en . ¸Choisir un voisin non marqué * u, orienter l'arête u  v de u vers v (u  v), faire v := u puis aller en . ¹Si tous les arcs reliées à v sont orientées vers v, alors c'est terminé, sinon choisir le voisin u de v tel que v  u, faire v := u, puis aller en .

Franck Petit Parcours, Fouilles et Vagues Parcours en profondeur ¶A partir d'une racine r, faire v := r r Arborescence de Trémaux v u * Un sommet v est marqué si il existe u, voisin de v, tel que u  v. ·Si tous les voisins de v sont marqués *, alors aller en . ¸Choisir un voisin non marqué * u, orienter l'arête u  v de u vers v (u  v), faire v := u puis aller en . ¹Si tous les arcs reliées à v sont orientées vers v, alors c'est terminé, sinon choisir le voisin u de v tel que v  u, faire v := u, puis aller en .

Franck Petit Parcours, Fouilles et Vagues Parcours en profondeur ¶A partir d'une racine r, faire v := r r Arborescence de Trémaux v u * Un sommet v est marqué si il existe u, voisin de v, tel que u  v. ·Si tous les voisins de v sont marqués *, alors aller en . ¸Choisir un voisin non marqué * u, orienter l'arête u  v de u vers v (u  v), faire v := u puis aller en . ¹Si tous les arcs reliées à v sont orientées vers v, alors c'est terminé, sinon choisir le voisin u de v tel que v  u, faire v := u, puis aller en .

Franck Petit Parcours, Fouilles et Vagues Parcours en profondeur ¶A partir d'une racine r, faire v := r r Arborescence de Trémaux v * Un sommet v est marqué si il existe u, voisin de v, tel que u  v. ·Si tous les voisins de v sont marqués *, alors aller en . ¸Choisir un voisin non marqué * u, orienter l'arête u  v de u vers v (u  v), faire v := u puis aller en . ¹Si tous les arcs reliées à v sont orientées vers v, alors c'est terminé, sinon choisir le voisin u de v tel que v  u, faire v := u, puis aller en .

Franck Petit Parcours, Fouilles et Vagues Parcours en profondeur ¶A partir d'une racine r, faire v := r r Arborescence de Trémaux v v * Un sommet v est marqué si il existe u, voisin de v, tel que u  v. ·Si tous les voisins de v sont marqués *, alors aller en . ¸Choisir un voisin non marqué * u, orienter l'arête u  v de u vers v (u  v), faire v := u puis aller en . ¹Si tous les arcs reliées à v sont orientées vers v, alors c'est terminé, sinon choisir le voisin u de v tel que v  u, faire v := u, puis aller en .

Franck Petit Parcours, Fouilles et Vagues Parcours en profondeur ¶A partir d'une racine r, faire v := r r Arborescence de Trémaux vv v v vv v v vv v * Un sommet v est marqué si il existe u, voisin de v, tel que u  v. ·Si tous les voisins de v sont marqués *, alors aller en . ¸Choisir un voisin non marqué * u, orienter l'arête u  v de u vers v (u  v), faire v := u puis aller en . ¹Si tous les arcs reliées à v sont orientées vers v, alors c'est terminé, sinon choisir le voisin u de v tel que v  u, faire v := u, puis aller en .

Franck Petit Parcours, Fouilles et Vagues Parcours en profondeur ¶A partir d'une racine r, faire v := r r Arborescence de Trémaux v v * Un sommet v est marqué si il existe u, voisin de v, tel que u  v. ·Si tous les voisins de v sont marqués *, alors aller en . ¸Choisir un voisin non marqué * u, orienter l'arête u  v de u vers v (u  v), faire v := u puis aller en . ¹Si tous les arcs reliées à v sont orientées vers v, alors c'est terminé, sinon choisir le voisin u de v tel que v  u, faire v := u, puis aller en .

Franck Petit Parcours, Fouilles et Vagues Parcours en profondeur ¶A partir d'une racine r, faire v := r r Arborescence de Trémaux vv vv * Un sommet v est marqué si il existe u, voisin de v, tel que u  v. ·Si tous les voisins de v sont marqués *, alors aller en . ¸Choisir un voisin non marqué * u, orienter l'arête u  v de u vers v (u  v), faire v := u puis aller en . ¹Si tous les arcs reliées à v sont orientées vers v, alors c'est terminé, sinon choisir le voisin u de v tel que v  u, faire v := u, puis aller en .

Franck Petit Parcours, Fouilles et Vagues Parcours en profondeur ¶A partir d'une racine r, faire v := r r Arborescence de Trémaux v v vv v * Un sommet v est marqué si il existe u, voisin de v, tel que u  v. ·Si tous les voisins de v sont marqués *, alors aller en . ¸Choisir un voisin non marqué * u, orienter l'arête u  v de u vers v (u  v), faire v := u puis aller en . ¹Si tous les arcs reliées à v sont orientées vers v, alors c'est terminé, sinon choisir le voisin u de v tel que v  u, faire v := u, puis aller en .

Franck Petit Parcours, Fouilles et Vagues n Utilité dans le domaine des graphes u Recherche des points d'articulation u Recherche des composantes (fortement) connexes (graphes orientés) u Tri topologique (graphes orienté, sans circuit) u... Parcours en profondeur Et les systèmes distribués...

Franck Petit Parcours, Fouilles et Vagues n Utilité dans le domaine des systèmes distribués u Recherche des points d'articulation u Exclusion mutuelle u Construction d'arbre couvrant u Algorithmes de Routage u D'une façon plus générale, tout ce qui nécessite un algorithme à vague... Parcours en profondeur Séquentiel Et comment fait-on un parcours profondeur dans un système distribué ?

Franck Petit Parcours, Fouilles et Vagues Parcours en profondeur ¶A partir d'une racine r, faire v := r ·Si tous les voisins de v sont marqués *, alors aller en . ¸Choisir un voisin non marqué * u, orienter l'arête u  v de u vers v (u  v), faire v := u puis aller en . ¹Si tous les arcs reliées à v sont orientées vers v, alors c'est terminé, sinon choisir le voisin u de v tel que v  u, faire v := u, puis aller en . * Un sommet v est marqué si il existe u, voisin de v, tel que u  v.

Franck Petit Parcours, Fouilles et Vagues Parcours en profondeur La racine r : "Je décide de faire un parcours en profondeur!" FilsCourant := l  L Envoyer jeton J à FilsCourant. Pour tous:A la réception de J, sur un lien l faire Si Marqués =  (c'est la première fois je reçois J), alors Père := l. Marqués := Marqués  {l} Si Marqués = L alors Si Père =  (je suis la racine) alors C'est Terminé! sinon Envoyer J à mon Père sinonSi l = FilsCourant ou l = Père alorsFilsCourant := l  L \ Marqués Envoyer J à FilsCourant. sinonEnvoyer J à l Constantes:L: ensemble de liens Variables: Père, FilsCourant: lien, initialement  ; Marqués : Ensembles de liens, initialement 

Franck Petit Parcours, Fouilles et Vagues Parcours en profondeur La racine r : "Je décide de faire un parcours en profondeur!" FilsCourant := l  L \ Marqués (un lien (voisin) non marqué l) Envoyer jeton J à FilsCourant. r

Franck Petit Parcours, Fouilles et Vagues Pour tous:A la réception de J, sur un lien l faire Si Marqués =  (c'est la première fois je reçois J), alors Père := l. Marqués := Marqués  {l} Si Marqués = L alors Si Père =  (je suis la racine) alors C'est Terminé! sinon Envoyer J à mon Père sinonSi l = FilsCourant ou l = Père alorsFilsCourant := l  L \ Marqués, Envoyer J à FilsCourant. sinonEnvoyer J à l Parcours en profondeur r P

Franck Petit Parcours, Fouilles et Vagues Pour tous:A la réception de J, sur un lien l faire Si Marqués =  (c'est la première fois je reçois J), alors Père := l. Marqués := Marqués  {l} Si Marqués = L alors Si Père =  (je suis la racine) alors C'est Terminé! sinon Envoyer J à mon Père sinonSi l = FilsCourant ou l = Père alorsFilsCourant := l  L \ Marqués, Envoyer J à FilsCourant. sinonEnvoyer J à l Parcours en profondeur r P P

Franck Petit Parcours, Fouilles et Vagues Pour tous:A la réception de J, sur un lien l faire Si Marqués =  (c'est la première fois je reçois J), alors Père := l. Marqués := Marqués  {l} Si Marqués = L alors Si Père =  (je suis la racine) alors C'est Terminé! sinon Envoyer J à mon Père sinonSi l = FilsCourant ou l = Père alorsFilsCourant := l  L \ Marqués, Envoyer J à FilsCourant. sinonEnvoyer J à l Parcours en profondeur r P P P

Franck Petit Parcours, Fouilles et Vagues Pour tous:A la réception de J, sur un lien l faire Si Marqués =  (c'est la première fois je reçois J), alors Père := l. Marqués := Marqués  {l} Si Marqués = L alors Si Père =  (je suis la racine) alors C'est Terminé! sinon Envoyer J à mon Père sinonSi l = FilsCourant ou l = Père alorsFilsCourant := l  L \ Marqués, Envoyer J à FilsCourant. sinonEnvoyer J à l Parcours en profondeur r P P P P

Franck Petit Parcours, Fouilles et Vagues Pour tous:A la réception de J, sur un lien l faire Si Marqués =  (c'est la première fois je reçois J), alors Père := l. Marqués := Marqués  {l} Si Marqués = L alors Si Père =  (je suis la racine) alors C'est Terminé! sinon Envoyer J à mon Père sinonSi l = FilsCourant ou l = Père alorsFilsCourant := l  L \ Marqués, Envoyer J à FilsCourant. sinonEnvoyer J à l Parcours en profondeur r P P P P P

Franck Petit Parcours, Fouilles et Vagues Pour tous:A la réception de J, sur un lien l faire Si Marqués =  (c'est la première fois je reçois J), alors Père := l. Marqués := Marqués  {l} Si Marqués = L alors Si Père =  (je suis la racine) alors C'est Terminé! sinon Envoyer J à mon Père sinonSi l = FilsCourant ou l = Père alorsFilsCourant := l  L \ Marqués, Envoyer J à FilsCourant. sinonEnvoyer J à l Parcours en profondeur r P P P P P P

Franck Petit Parcours, Fouilles et Vagues Pour tous:A la réception de J, sur un lien l faire Si Marqués =  (c'est la première fois je reçois J), alors Père := l. Marqués := Marqués  {l} Si Marqués = L alors Si Père =  (je suis la racine) alors C'est Terminé! sinon Envoyer J à mon Père sinonSi l = FilsCourant ou l = Père alorsFilsCourant := l  L \ Marqués, Envoyer J à FilsCourant. sinonEnvoyer J à l Parcours en profondeur r P P P P P P

Franck Petit Parcours, Fouilles et Vagues Pour tous:A la réception de J, sur un lien l faire Si Marqués =  (c'est la première fois je reçois J), alors Père := l. Marqués := Marqués  {l} Si Marqués = L alors Si Père =  (je suis la racine) alors C'est Terminé! sinon Envoyer J à mon Père sinonSi l = FilsCourant ou l = Père alorsFilsCourant := l  L \ Marqués, Envoyer J à FilsCourant. sinonEnvoyer J à l Parcours en profondeur r P P P P P P

Franck Petit Parcours, Fouilles et Vagues Pour tous:A la réception de J, sur un lien l faire Si Marqués =  (c'est la première fois je reçois J), alors Père := l. Marqués:= Marqués  {l} Si Marqués = L alors Si Père =  (je suis la racine) alors C'est Terminé! sinon Envoyer J à mon Père sinonSi l = FilsCourant ou l = Père alorsFilsCourant := l  L \ Marqués, Envoyer J à FilsCourant. sinonEnvoyer J à l Parcours en profondeur r P P P P P P

Franck Petit Parcours, Fouilles et Vagues Pour tous:A la réception de J, sur un lien l faire Si Marqués =  (c'est la première fois je reçois J), alors Père := l. Marqués := Marqués  {l} Si Marqués = L alors Si Père =  (je suis la racine) alors C'est Terminé! sinon Envoyer J à mon Père sinonSi l = FilsCourant ou l = Père alorsFilsCourant := l  L \ Marqués, Envoyer J à FilsCourant. sinonEnvoyer J à l Parcours en profondeur r P P P P P P P P

Franck Petit Parcours, Fouilles et Vagues Pour tous:A la réception de J, sur un lien l faire Si Marqués =  (c'est la première fois je reçois J), alors Père := l. Marqués := Marqués  {l} Si Marqués = L alors Si Père =  (je suis la racine) alors C'est Terminé! sinon Envoyer J à mon Père sinonSi l = FilsCourant ou l = Père alorsFilsCourant := l  L \ Marqués, Envoyer J à FilsCourant. sinonEnvoyer J à l Parcours en profondeur r P P P P P P P P

Franck Petit Parcours, Fouilles et Vagues Pour tous:A la réception de J, sur un lien l faire Si Marqués =  (c'est la première fois je reçois J), alors Père := l. Marqués := Marqués  {l} Si Marqués = L alors Si Père =  (je suis la racine) alors C'est Terminé! sinon Envoyer J à mon Père sinonSi l = FilsCourant ou l = Père alorsFilsCourant := l  L \ Marqués, Envoyer J à FilsCourant. sinonEnvoyer J à l Parcours en profondeur r P P P P P P P PP

Franck Petit Parcours, Fouilles et Vagues Pour tous:A la réception de J, sur un lien l faire Si Marqués =  (c'est la première fois je reçois J), alors Père := l. Marqués := Marqués  {l} Si Marqués = L alors Si Père =  (je suis la racine) alors C'est Terminé! sinon Envoyer J à mon Père sinonSi l = FilsCourant ou l = Père alorsFilsCourant := l  L \ Marqués, Envoyer J à FilsCourant. sinonEnvoyer J à l Parcours en profondeur r P P P P P P P PP

Franck Petit Parcours, Fouilles et Vagues Pour tous:A la réception de J, sur un lien l faire Si Marqués =  (c'est la première fois je reçois J), alors Père := l. Marqués := Marqués  {l} Si Marqués = L alors Si Père =  (je suis la racine) alors C'est Terminé! sinon Envoyer J à mon Père sinonSi l = FilsCourant ou l = Père alorsFilsCourant := l  L \ Marqués, Envoyer J à FilsCourant. sinonEnvoyer J à l Parcours en profondeur r P P P P P P P PP

Franck Petit Parcours, Fouilles et Vagues Pour tous:A la réception de J, sur un lien l faire Si Marqués =  (c'est la première fois je reçois J), alors Père := l. Marqués := Marqués  {l} Si Marqués = L alors Si Père =  (je suis la racine) alors C'est Terminé! sinon Envoyer J à mon Père sinonSi l = FilsCourant ou l = Père alorsFilsCourant := l  L \ Marqués, Envoyer J à FilsCourant. sinonEnvoyer J à l Parcours en profondeur r P P P P P P P PP

Franck Petit Parcours, Fouilles et Vagues Pour tous:A la réception de J, sur un lien l faire Si Marqués =  (c'est la première fois je reçois J), alors Père := l. Marqués := Marqués  {l} Si Marqués = L alors Si Père =  (je suis la racine) alors C'est Terminé! sinon Envoyer J à mon Père sinonSi l = FilsCourant ou l = Père alorsFilsCourant := l  L \ Marqués, Envoyer J à FilsCourant. sinonEnvoyer J à l Parcours en profondeur r P P P P P P P PP

Franck Petit Parcours, Fouilles et Vagues Pour tous:A la réception de J, sur un lien l faire Si Marqués =  (c'est la première fois je reçois J), alors Père := l. Marqués := Marqués  {l} Si Marqués = L alors Si Père =  (je suis la racine) alors C'est Terminé! sinon Envoyer J à mon Père sinonSi l = FilsCourant ou l = Père alorsFilsCourant := l  L \ Marqués, Envoyer J à FilsCourant. sinonEnvoyer J à l Parcours en profondeur r P P P P P P P PP

Franck Petit Parcours, Fouilles et Vagues Pour tous:A la réception de J, sur un lien l faire Si Marqués =  (c'est la première fois je reçois J), alors Père := l. Marqués := Marqués  {l} Si Marqués = L alors Si Père =  (je suis la racine) alors C'est Terminé! sinon Envoyer J à mon Père sinonSi l = FilsCourant ou l = Père alorsFilsCourant := l  L \ Marqués, Envoyer J à FilsCourant. sinonEnvoyer J à l Parcours en profondeur r P P P P P P P PP

Franck Petit Parcours, Fouilles et Vagues Pour tous:A la réception de J, sur un lien l faire Si Marqués =  (c'est la première fois je reçois J), alors Père := l. Marqués := Marqués  {l} Si Marqués = L alors Si Père =  (je suis la racine) alors C'est Terminé! sinon Envoyer J à mon Père sinonSi l = FilsCourant ou l = Père alorsFilsCourant := l  L \ Marqués, Envoyer J à FilsCourant. sinonEnvoyer J à l Parcours en profondeur r P P P P P P P PP

Franck Petit Parcours, Fouilles et Vagues Pour tous:A la réception de J, sur un lien l faire Si Marqués =  (c'est la première fois je reçois J), alors Père := l. Marqués := Marqués  {l} Si Marqués = L alors Si Père =  (je suis la racine) alors C'est Terminé! sinon Envoyer J à mon Père sinonSi l = FilsCourant ou l = Père alorsFilsCourant := l  L \ Marqués, Envoyer J à FilsCourant. sinonEnvoyer J à l Parcours en profondeur r P P P P P P P PP

Franck Petit Parcours, Fouilles et Vagues Pour tous:A la réception de J, sur un lien l faire Si Marqués =  (c'est la première fois je reçois J), alors Père := l. Marqués := Marqués  {l} Si Marqués = L alors Si Père =  (je suis la racine) alors C'est Terminé! sinon Envoyer J à mon Père sinonSi l = FilsCourant ou l = Père alorsFilsCourant := l  L \ Marqués, Envoyer J à FilsCourant. sinonEnvoyer J à l Parcours en profondeur r P P P P P P P PP

Franck Petit Parcours, Fouilles et Vagues Pour tous:A la réception de J, sur un lien l faire Si Marqués =  (c'est la première fois je reçois J), alors Père := l. Marqués := Marqués  {l} Si Marqués = L alors Si Père =  (je suis la racine) alors C'est Terminé! sinon Envoyer J à mon Père sinonSi l = FilsCourant ou l = Père alorsFilsCourant := l  L \ Marqués, Envoyer J à FilsCourant. sinonEnvoyer J à l Parcours en profondeur r P P P P P P P PP

Franck Petit Parcours, Fouilles et Vagues Pour tous:A la réception de J, sur un lien l faire Si Marqués =  (c'est la première fois je reçois J), alors Père := l. Marqués := Marqués  {l} Si Marqués = L alors Si Père =  (je suis la racine) alors C'est Terminé! sinon Envoyer J à mon Père sinonSi l = FilsCourant ou l = Père alorsFilsCourant := l  L \ Marqués, Envoyer J à FilsCourant. sinonEnvoyer J à l Parcours en profondeur r P P P P P P P PP P P P P

Franck Petit Parcours, Fouilles et Vagues Pour tous:A la réception de J, sur un lien l faire Si Marqués =  (c'est la première fois je reçois J), alors Père := l. Marqués := Marqués  {l} Si Marqués = L alors Si Père =  (je suis la racine) alors C'est Terminé! sinon Envoyer J à mon Père sinonSi l = FilsCourant ou l = Père alorsFilsCourant := l  L \ Marqués, Envoyer J à FilsCourant. sinonEnvoyer J à l Parcours en profondeur r P P P P P P P PP P P P P P

Franck Petit Parcours, Fouilles et Vagues Pour tous:A la réception de J, sur un lien l faire Si Marqués =  (c'est la première fois je reçois J), alors Père := l. Marqués := Marqués  {l} Si Marqués = L alors Si Père =  (je suis la racine) alors C'est Terminé! sinon Envoyer J à mon Père sinonSi l = FilsCourant ou l = Père alorsFilsCourant := l  L \ Marqués, Envoyer J à FilsCourant. sinonEnvoyer J à l Parcours en profondeur r P P P P P P P PP P P P P P P

Franck Petit Parcours, Fouilles et Vagues Pour tous:A la réception de J, sur un lien l faire Si Marqués =  (c'est la première fois je reçois J), alors Père := l. Marqués := Marqués  {l} Si Marqués = L alors Si Père =  (je suis la racine) alors C'est Terminé! sinon Envoyer J à mon Père sinonSi l = FilsCourant ou l = Père alorsFilsCourant := l  L \ Marqués, Envoyer J à FilsCourant. sinonEnvoyer J à l Parcours en profondeur r P P P P P P P PP P P P P P P

Franck Petit Parcours, Fouilles et Vagues Pour tous:A la réception de J, sur un lien l faire Si Marqués =  (c'est la première fois je reçois J), alors Père := l. Marqués := Marqués  {l} Si Marqués = L alors Si Père =  (je suis la racine) alors C'est Terminé! sinon Envoyer J à mon Père sinonSi l = FilsCourant ou l = Père alorsFilsCourant := l  L \ Marqués, Envoyer J à FilsCourant. sinonEnvoyer J à l Parcours en profondeur r P P P P P P P PP P P P P P P

Franck Petit Parcours, Fouilles et Vagues Pour tous:A la réception de J, sur un lien l faire Si Marqués =  (c'est la première fois je reçois J), alors Père := l. Marqués := Marqués  {l} Si Marqués = L alors Si Père =  (je suis la racine) alors C'est Terminé! sinon Envoyer J à mon Père sinonSi l = FilsCourant ou l = Père alorsFilsCourant := l  L \ Marqués, Envoyer J à FilsCourant. sinonEnvoyer J à l Parcours en profondeur r P P P P P P P PP P P P P P P P P

Franck Petit Parcours, Fouilles et Vagues Pour tous:A la réception de J, sur un lien l faire Si Marqués =  (c'est la première fois je reçois J), alors Père := l. Marqués := Marqués  {l} Si Marqués = L alors Si Père =  (je suis la racine) alors C'est Terminé! sinon Envoyer J à mon Père sinonSi l = FilsCourant ou l = Père alorsFilsCourant := l  L \ Marqués, Envoyer J à FilsCourant. sinonEnvoyer J à l Parcours en profondeur r P P P P P P P PP P P P P P P P P

Franck Petit Parcours, Fouilles et Vagues Pour tous:A la réception de J, sur un lien l faire Si Marqués =  (c'est la première fois je reçois J), alors Père := l. Marqués := Marqués  {l} Si Marqués = L alors Si Père =  (je suis la racine) alors C'est Terminé! sinon Envoyer J à mon Père sinonSi l = FilsCourant ou l = Père alorsFilsCourant := l  L \ Marqués, Envoyer J à FilsCourant. sinonEnvoyer J à l Parcours en profondeur r P P P P P P P PP P P P P P P P P

Franck Petit Parcours, Fouilles et Vagues Pour tous:A la réception de J, sur un lien l faire Si Marqués =  (c'est la première fois je reçois J), alors Père := l. Marqués := Marqués  {l} Si Marqués = L alors Si Père =  (je suis la racine) alors C'est Terminé! sinon Envoyer J à mon Père sinonSi l = FilsCourant ou l = Père alorsFilsCourant := l  L \ Marqués, Envoyer J à FilsCourant. sinonEnvoyer J à l Parcours en profondeur r P P P P P P P PP P P P P P P P P

Franck Petit Parcours, Fouilles et Vagues Pour tous:A la réception de J, sur un lien l faire Si Marqués =  (c'est la première fois je reçois J), alors Père := l. Marqués := Marqués  {l} Si Marqués = L alors Si Père =  (je suis la racine) alors C'est Terminé! sinon Envoyer J à mon Père sinonSi l = FilsCourant ou l = Père alorsFilsCourant := l  L \ Marqués, Envoyer J à FilsCourant. sinonEnvoyer J à l Parcours en profondeur r P P P P P P P PP P P P P P P P P

Franck Petit Parcours, Fouilles et Vagues Pour tous:A la réception de J, sur un lien l faire Si Marqués =  (c'est la première fois je reçois J), alors Père := l. Marqués := Marqués  {l} Si Marqués = L alors Si Père =  (je suis la racine) alors C'est Terminé! sinon Envoyer J à mon Père sinonSi l = FilsCourant ou l = Père alorsFilsCourant := l  L \ Marqués, Envoyer J à FilsCourant. sinonEnvoyer J à l Parcours en profondeur r P P P P P P P PP P P P P P P P P

Franck Petit Parcours, Fouilles et Vagues n Complexité u Complexité en nombre d'étapes : F Graphe : 2(n-1) m étapes (nombre d'arcs de l'arbre couvrant) F Systèmes Distribués : 2m étapes (nombre d'arêtes du graphe) n Complexités comparables... Parcours en profondeur

Franck Petit Parcours, Fouilles et Vagues Plan Parcours en largeur n Algorithme due à ??? n Utilité moins évidente dans le domaine des graphes.... u Stratégie de résolution dans la théorie des jeux (algorithme de retour en arrière, Branch and Bound...) u SAT

Franck Petit Parcours, Fouilles et Vagues Parcours en largeur ¶A partir d'une racine r, nommer r "0" ·Si tous les sommets sont nommés, alors c'est terminé. ¸Pour tout sommet v adjacent à au moins un sommet nommé, Nommer v par "le min de ses voisins nommés" +1 ¸Aller en . r Premier Algorithme

Franck Petit Parcours, Fouilles et Vagues Parcours en largeur ¶A partir d'une racine r, nommer r "0" ·Si tous les sommets sont nommés, alors c'est terminé. ¸Pour tout sommet v adjacent à au moins un sommet nommé, Nommer v par "le min de ses voisins nommés" +1 ¸Aller en . r Premier Algorithme

Franck Petit Parcours, Fouilles et Vagues Parcours en largeur ¶A partir d'une racine r, nommer r "0" ·Si tous les sommets sont nommés, alors c'est terminé. ¸Pour tout sommet v adjacent à au moins un sommet nommé, Nommer v par "le min de ses voisins nommés" +1 ¸Aller en . r Premier Algorithme

Franck Petit Parcours, Fouilles et Vagues Parcours en largeur ¶A partir d'une racine r, nommer r "0" ·Si tous les sommets sont nommés, alors c'est terminé. ¸Pour tout sommet v adjacent à au moins un sommet nommé, Nommer v par "le min de ses voisins nommés" +1 ¸Aller en . r Premier Algorithme

Franck Petit Parcours, Fouilles et Vagues Parcours en largeur ¶A partir d'une racine r, nommer r "0" ·Si tous les sommets sont nommés, alors c'est terminé. ¸Pour tout sommet v adjacent à au moins un sommet nommé, Nommer v par "le min de ses voisins nommés" +1 ¸Aller en . r Premier Algorithme

Franck Petit Parcours, Fouilles et Vagues Parcours en largeur ¶A partir d'une racine r, nommer r "0" ·Si tous les sommets sont nommés, alors c'est terminé. ¸Pour tout sommet v adjacent à au moins un sommet nommé, Nommer v par "le min de ses voisins nommés" +1 ¸Aller en . r Premier Algorithme

Franck Petit Parcours, Fouilles et Vagues n Permet de fixer une profondeur maximum F Graphe infini (résolution de problème, SAT...) n Arbre de hauteur minimale n Permet de calculer le plus cours chemin d'un sommet à la racine n Offre la possibilité d'avoir un "arbre" couvrant à plusieurs pères (DAG: Directed Acyclic Graph) Intérêt du premier algorithme

Franck Petit Parcours, Fouilles et Vagues Parcours en largeur ¶Tant qu'il existe un sommet non marqué *, Pour tout voisin u d'un sommet marqué * v, choisir un des voisins marqué * v' de u et orienter l'arête u  v' de u vers v' fin pour fin tant que ·C'est terminé. r * Un sommet v est marqué si v = r ou si il existe u, voisin de v, tel que u  v Deuxième Algorithme

Franck Petit Parcours, Fouilles et Vagues Parcours en largeur ¶Tant qu'il existe un sommet non marqué *, Pour tout voisin u d'un sommet marqué * v, choisir un des voisins marqué * v' de u et orienter l'arête u  v' de u vers v' fin pour fin tant que ·C'est terminé. r * Un sommet v est marqué si v = r ou si il existe u, voisin de v, tel que u  v Deuxième Algorithme

Franck Petit Parcours, Fouilles et Vagues Parcours en largeur ¶Tant qu'il existe un sommet non marqué *, Pour tout voisin u d'un sommet marqué * v, choisir un des voisins marqué * v' de u et orienter l'arête u  v' de u vers v' fin pour fin tant que ·C'est terminé. r * Un sommet v est marqué si v = r ou si il existe u, voisin de v, tel que u  v Deuxième Algorithme

Franck Petit Parcours, Fouilles et Vagues Parcours en largeur ¶Tant qu'il existe un sommet non marqué *, Pour tout voisin u d'un sommet marqué * v, choisir un des voisins marqué * v' de u et orienter l'arête u  v' de u vers v' fin pour fin tant que ·C'est terminé. r * Un sommet v est marqué si v = r ou si il existe u, voisin de v, tel que u  v Deuxième Algorithme

Franck Petit Parcours, Fouilles et Vagues Parcours en largeur ¶Tant qu'il existe un sommet non marqué *, Pour tout voisin u d'un sommet marqué * v, choisir un des voisins marqué * v' de u et orienter l'arête u  v' de u vers v' fin pour fin tant que ·C'est terminé. r * Un sommet v est marqué si v = r ou si il existe u, voisin de v, tel que u  v Deuxième Algorithme

Franck Petit Parcours, Fouilles et Vagues Parcours en largeur ¶Tant qu'il existe un sommet non marqué *, Pour tout voisin u d'un sommet marqué * v, choisir un des voisins marqué * v' de u et orienter l'arête u  v' de u vers v' fin pour fin tant que ·C'est terminé. r * Un sommet v est marqué si v = r ou si il existe u, voisin de v, tel que u  v Deuxième Algorithme

Franck Petit Parcours, Fouilles et Vagues n Arbre de hauteur minimale n Permet de calculer le plus cours chemin d'un sommet à la racine n Calcul un arbre couvrant unique (pas de DAG) n Utilise moins de ressources mémoires... Intérêt du second algorithme  Systèmes Distribués n De plus, les deux algorithmes sont fondamentalement parallèles alors que le parcours en profondeur est fondamentalement séquentiel

Franck Petit Parcours, Fouilles et Vagues Parcours en largeur La racine r : "Je décide de faire un parcours en largeur!" Pour tout l  L, Envoyer m à l Constantes:L: ensemble de liens Variables: Père : lien, initialement  ; Marqués, Fils: Ensembles de liens, initialement  A la réception de m, sur un lien l faire Marqués := Marqués  {l} Si Marqués = L alors C'est Terminé! finsi

Franck Petit Parcours, Fouilles et Vagues Parcours en largeur Constantes:L: ensemble de liens Variables: Père : lien, initialement  ; Marqués, Fils: Ensembles de liens, initialement  Pour tout p  r:A la réception de m, sur un lien l faire Si Marqués =  (c'est la première fois je reçois m), alorsPère := l Marqués := Marqués  {l} Si Marqués = L alorsEnvoyer m à mon Père sinonPour tout l  L \ Marqués, Envoyer m à l sinon Marqués := Marqués  {l} Si Marqués = L alors Envoyer m à mon Père finsi

Franck Petit Parcours, Fouilles et Vagues La racine r : "Je décide de faire un parcours en largeur!" Pour tout l  L, Envoyer m à l Parcours en largeur r Une exécution "idéale"...

Franck Petit Parcours, Fouilles et Vagues Pour tout p  r:A la réception de m, sur un lien l faire Si Marqués =  (c'est la première fois je reçois m), alorsPère := l, Marqués := Marqués  {l} Si Marqués = L alorsEnvoyer m à mon Père sinonPour tout l  L \ Marqués, Envoyer m à l sinonMarqués := Marqués  {l} Si Marqués = L alors Envoyer m à mon Père finsi finsi Parcours en largeur r Une exécution "idéale"... P P P P

Franck Petit Parcours, Fouilles et Vagues Pour tout p  r:A la réception de m, sur un lien l faire Si Marqués =  (c'est la première fois je reçois m), alorsPère := l, Marqués := Marqués  {l} Si Marqués = L alorsEnvoyer m à mon Père sinonPour tout l  L \ Marqués, Envoyer m à l sinonMarqués := Marqués  {l} Si Marqués = L alors Envoyer m à mon Père finsi finsi Parcours en largeur r Une exécution "idéale"... P P P P P P P P P P

Franck Petit Parcours, Fouilles et Vagues Pour tout p  r:A la réception de m, sur un lien l faire Si Marqués =  (c'est la première fois je reçois m), alorsPère := l, Marqués := Marqués  {l} Si Marqués = L alorsEnvoyer m à mon Père sinonPour tout l  L \ Marqués, Envoyer m à l sinonMarqués := Marqués  {l} Si Marqués = L alors Envoyer m à mon Père finsi finsi Parcours en largeur r Une exécution "idéale"... P P P P P P P P P P P P P P P

Franck Petit Parcours, Fouilles et Vagues Pour tout p  r:A la réception de m, sur un lien l faire Si Marqués =  (c'est la première fois je reçois m), alorsPère := l, Marqués := Marqués  {l} Si Marqués = L alorsEnvoyer m à mon Père sinonPour tout l  L \ Marqués, Envoyer m à l sinonMarqués := Marqués  {l} Si Marqués = L alors Envoyer m à mon Père finsi finsi Parcours en largeur r Une exécution "idéale"... P P P P P P P P P P P P P P P P

Franck Petit Parcours, Fouilles et Vagues Pour tout p  r:A la réception de m, sur un lien l faire Si Marqués =  (c'est la première fois je reçois m), alorsPère := l, Marqués := Marqués  {l} Si Marqués = L alorsEnvoyer m à mon Père sinonPour tout l  L \ Marqués, Envoyer m à l sinonMarqués := Marqués  {l} Si Marqués = L alors Envoyer m à mon Père finsi finsi Parcours en largeur r Une exécution "idéale"... P P P P P P P P P P P P P P P P P

Franck Petit Parcours, Fouilles et Vagues La racine r : "Je décide de faire un parcours en largeur!" Pour tout l  L, Envoyer m à l Parcours en largeur r Ceci est un canal lent! Ceci est un canal rapide! Ceci est aussi un canal lent !

Franck Petit Parcours, Fouilles et Vagues Pour tout p  r:A la réception de m, sur un lien l faire Si Marqués =  (c'est la première fois je reçois m), alorsPère := l, Marqués := Marqués  {l} Si Marqués = L alorsEnvoyer m à mon Père sinonPour tout l  L \ Marqués, Envoyer m à l sinonMarqués := Marqués  {l} Si Marqués = L alors Envoyer m à mon Père finsi finsi Parcours en largeur r Ceci est un processeur rapide! P

Franck Petit Parcours, Fouilles et Vagues Parcours en largeur r P P Pour tout p  r:A la réception de m, sur un lien l faire Si Marqués =  (c'est la première fois je reçois m), alorsPère := l, Marqués := Marqués  {l} Si Marqués = L alorsEnvoyer m à mon Père sinonPour tout l  L \ Marqués, Envoyer m à l sinonMarqués := Marqués  {l} Si Marqués = L alors Envoyer m à mon Père finsi finsi

Franck Petit Parcours, Fouilles et Vagues Parcours en largeur r P PP Pour tout p  r:A la réception de m, sur un lien l faire Si Marqués =  (c'est la première fois je reçois m), alorsPère := l, Marqués := Marqués  {l} Si Marqués = L alorsEnvoyer m à mon Père sinonPour tout l  L \ Marqués, Envoyer m à l sinonMarqués := Marqués  {l} Si Marqués = L alors Envoyer m à mon Père finsi finsi

Franck Petit Parcours, Fouilles et Vagues Parcours en largeur r P PP P Pour tout p  r:A la réception de m, sur un lien l faire Si Marqués =  (c'est la première fois je reçois m), alorsPère := l, Marqués := Marqués  {l} Si Marqués = L alorsEnvoyer m à mon Père sinonPour tout l  L \ Marqués, Envoyer m à l sinonMarqués := Marqués  {l} Si Marqués = L alors Envoyer m à mon Père finsi finsi

Franck Petit Parcours, Fouilles et Vagues Parcours en largeur r P PP P P Pour tout p  r:A la réception de m, sur un lien l faire Si Marqués =  (c'est la première fois je reçois m), alorsPère := l, Marqués := Marqués  {l} Si Marqués = L alorsEnvoyer m à mon Père sinonPour tout l  L \ Marqués, Envoyer m à l sinonMarqués := Marqués  {l} Si Marqués = L alors Envoyer m à mon Père finsi finsi

Franck Petit Parcours, Fouilles et Vagues Parcours en largeur r P PP P P PP Pour tout p  r:A la réception de m, sur un lien l faire Si Marqués =  (c'est la première fois je reçois m), alorsPère := l, Marqués := Marqués  {l} Si Marqués = L alorsEnvoyer m à mon Père sinonPour tout l  L \ Marqués, Envoyer m à l sinonMarqués := Marqués  {l} Si Marqués = L alors Envoyer m à mon Père finsi finsi

Franck Petit Parcours, Fouilles et Vagues Parcours en largeur r P PP P P P P P C'est fichu... :-( (sniff!) Pour tout p  r:A la réception de m, sur un lien l faire Si Marqués =  (c'est la première fois je reçois m), alorsPère := l, Marqués := Marqués  {l} Si Marqués = L alorsEnvoyer m à mon Père sinonPour tout l  L \ Marqués, Envoyer m à l sinonMarqués := Marqués  {l} Si Marqués = L alors Envoyer m à mon Père finsi finsi

Franck Petit Parcours, Fouilles et Vagues Parcours en largeur Propagation of Information with Feedback (Propagation d'information avec Retour) Chang [1982] - Segall [1983] n Utilise au mieux les capacités et le parallélisme du réseau n Assez "mauvais" pour construire un arbre couvrant (mécanisme dynamique) Et si on veut vraiment un arbre en largeur... n On vient d'inventer le PIF!

Franck Petit Parcours, Fouilles et Vagues Parcours en largeur r n Synchroniseur d'Awerbush [1985] "Est-tu mon Fils ?"

Franck Petit Parcours, Fouilles et Vagues Parcours en largeur r n Synchroniseur d'Awerbush [1985] "Est-tu mon Fils ?" Oui!Non! "Est-ce que tu prolonges ?" P P P P

Franck Petit Parcours, Fouilles et Vagues Parcours en largeur r n Synchroniseur d'Awerbush [1985] "Est-tu mon Fils ?" Oui!Non! "Est-ce que tu prolonges ?" P P P P P P P P P etc.

Franck Petit Parcours, Fouilles et Vagues n Complexité en nombre d'étapes : u Graphe : O(D) u Systèmes Distribués : F O(D) pour le PIF F O(D²) pour l'arbre couvrant en largeur Parcours en largeur

Franck Petit Parcours, Fouilles et Vagues Plan Parcours en profondeur Parcours en largeurSystèmes Distribués et auto- stabilisation

Franck Petit Parcours, Fouilles et Vagues Performances des Système Distribué n Complexité en taille de la mémoire requise ( Mesurée en "nombre d'états par processeur") n Complexité en Temps n Tolérance aux fautes (ou pannes) Self-Stabilization

Franck Petit Parcours, Fouilles et Vagues Quel que soit son état initial, le système est sûr d’atteindre par lui-même un état légitime en un nombre fini d’étapes. Dijkstra 1974  Messages incorrects dans les canaux  Valeurs incorrectes dans les variables Auto-stabilisation

Franck Petit Parcours, Fouilles et Vagues Quel que soit son état initial, le système est sûr d’atteindre par lui-même un état légitime en un nombre fini d’étapes. Dijkstra 1974 Perturbation correct Phase de stabilisation Auto-stabilisation

Franck Petit Parcours, Fouilles et Vagues p Modèle à états

Franck Petit Parcours, Fouilles et Vagues Spécification Sûreté : Au plus un jeton dans le système Vivacité : Chaque processeur obtient le jeton infiniment souvent top p = TR1 : (vp (vp =vg)=vg)  v p :=v g  1 p  top TR2 : (v p  vg)vg)  v p :=v g gd g g g g g g gd d d d d d d Anneau à jeton

Franck Petit Parcours, Fouilles et Vagues Spécification Sûreté : Au plus un jeton dans le système Vivacité : Chaque processeur obtient le jeton infiniment souvent TR1 TR2 top TR2 TR1 TR2 p = top TR1 : (v p =v g )  v p :=v g  1 p  top TR2 : (v p  v g )  v p :=v g Auto-stabilisant ? Anneau à jeton

Franck Petit Parcours, Fouilles et Vagues top TR2 p = top TR1 : (v p =v g )  v p :=v g  1 p  top TR2 : (v p  v g )  v p :=v g Anneau à jeton Spécification Sûreté : Au plus un jeton dans le système Vivacité : Chaque processeur obtient le jeton infiniment souvent

Franck Petit Parcours, Fouilles et Vagues top TR1 TR2 p = top TR1 : (v p =v g )  v p :=v g  1 p  top TR2 : (v p  v g )  v p :=v g Anneau à jeton Spécification Sûreté : Au plus un jeton dans le système Vivacité : Chaque processeur obtient le jeton infiniment souvent

Franck Petit Parcours, Fouilles et Vagues top TR1 TR2 p = top TR1 : (v p =v g )  v p :=v g  1 p  top TR2 : (v p  v g )  v p :=v g Anneau à jeton Spécification Sûreté : Au plus un jeton dans le système Vivacité : Chaque processeur obtient le jeton infiniment souvent

Franck Petit Parcours, Fouilles et Vagues top TR1 TR2 p = top TR1 : (v p =v g )  v p :=v g  1 p  top TR2 : (v p  v g )  v p :=v g TR2 Anneau à jeton Spécification Sûreté : Au plus un jeton dans le système Vivacité : Chaque processeur obtient le jeton infiniment souvent

Franck Petit Parcours, Fouilles et Vagues top TR1 TR2 p = top TR1 : (v p =v g )  v p :=v g  1 p  top TR2 : (v p  v g )  v p :=v g TR2 Anneau à jeton Spécification Sûreté : Au plus un jeton dans le système Vivacité : Chaque processeur obtient le jeton infiniment souvent

Franck Petit Parcours, Fouilles et Vagues top TR1 TR2 p = top TR1 : (v p =v g )  v p :=v g  1 p  top TR2 : (v p  v g )  v p :=v g TR2 Anneau à jeton Spécification Sûreté : Au plus un jeton dans le système Vivacité : Chaque processeur obtient le jeton infiniment souvent

Franck Petit Parcours, Fouilles et Vagues top TR1 TR2 p = top TR1 : (v p =v g )  v p :=v g  1 p  top TR2 : (v p  v g )  v p :=v g TR2 Anneau à jeton Spécification Sûreté : Au plus un jeton dans le système Vivacité : Chaque processeur obtient le jeton infiniment souvent

Franck Petit Parcours, Fouilles et Vagues top TR1 TR2 p = top TR1 : (v p =v g )  v p :=v g  1 p  top TR2 : (v p  v g )  v p :=v g TR2 Anneau à jeton Spécification Sûreté : Au plus un jeton dans le système Vivacité : Chaque processeur obtient le jeton infiniment souvent

Franck Petit Parcours, Fouilles et Vagues Spécification Sûreté : Au plus un jeton dans le système Vivacité : Chaque processeur obtient le jeton infiniment souvent top TR2 p = top TR1 : (v p =v g )  v p :=v g  1 p  top TR2 : (v p  v g )  v p :=v g TR2 Idem configuration initiale Anneau à jeton

Franck Petit Parcours, Fouilles et Vagues top  p = TR1 : (vp (vp =vg)=vg)  v p :=v g  k 1 p  top TR2 : (v p  vg)vg)  v p :=v g TR2 Spécification Sûreté : Au plus un jeton dans le système Vivacité : Chaque processeur obtient le jeton infiniment souvent Anneau à jeton

Franck Petit Parcours, Fouilles et Vagues top p = top TR1 : (v p =v g )  v p :=v g  k 1 p  top TR2 : (v p  v g )  v p :=v g TR2 Spécification Sûreté : Au plus un jeton dans le système Vivacité : Chaque processeur obtient le jeton infiniment souvent Anneau à jeton

Franck Petit Parcours, Fouilles et Vagues top p = top TR1 : (v p =v g )  v p :=v g  k 1 p  top TR2 : (v p  v g )  v p :=v g TR2 Spécification Sûreté : Au plus un jeton dans le système Vivacité : Chaque processeur obtient le jeton infiniment souvent Anneau à jeton

Franck Petit Parcours, Fouilles et Vagues top p = top TR1 : (v p =v g )  v p :=v g  k 1 p  top TR2 : (v p  v g )  v p :=v g TR2 Spécification Sûreté : Au plus un jeton dans le système Vivacité : Chaque processeur obtient le jeton infiniment souvent Anneau à jeton

Franck Petit Parcours, Fouilles et Vagues top p = top TR1 : (v p =v g )  v p :=v g  k 1 p  top TR2 : (v p  v g )  v p :=v g TR2 Spécification Sûreté : Au plus un jeton dans le système Vivacité : Chaque processeur obtient le jeton infiniment souvent Anneau à jeton

Franck Petit Parcours, Fouilles et Vagues top p = top TR1 : (v p =v g )  v p :=v g  k 1 p  top TR2 : (v p  v g )  v p :=v g TR2 Spécification Sûreté : Au plus un jeton dans le système Vivacité : Chaque processeur obtient le jeton infiniment souvent Anneau à jeton

Franck Petit Parcours, Fouilles et Vagues top p = top TR1 : (v p =v g )  v p :=v g  k 1 p  top TR2 : (v p  v g )  v p :=v g TR2 Spécification Sûreté : Au plus un jeton dans le système Vivacité : Chaque processeur obtient le jeton infiniment souvent Anneau à jeton

Franck Petit Parcours, Fouilles et Vagues top p = top TR1 : (v p =v g )  v p :=v g  k 1 p  top TR2 : (v p  v g )  v p :=v g TR1 Valeur de k ? Spécification Sûreté : Au plus un jeton dans le système Vivacité : Chaque processeur obtient le jeton infiniment souvent Anneau à jeton

Franck Petit Parcours, Fouilles et Vagues top p = top TR1 : (v p =v g )  v p :=v g  k 1 p  top TR2 : (v p  v g )  v p :=v g TR2 TR1 TR2 Spécification Sûreté : Au plus un jeton dans le système Vivacité : Chaque processeur obtient le jeton infiniment souvent Anneau à jeton

Franck Petit Parcours, Fouilles et Vagues top p = top TR1 : (v p =v g )  v p :=v g  k 1 p  top TR2 : (v p  v g )  v p :=v g TR2 TR1 TR2 Spécification Sûreté : Au plus un jeton dans le système Vivacité : Chaque processeur obtient le jeton infiniment souvent Anneau à jeton

Franck Petit Parcours, Fouilles et Vagues top p = top TR1 : (v p =v g )  v p :=v g  k 1 p  top TR2 : (v p  v g )  v p :=v g TR2 TR1 TR2 Spécification Sûreté : Au plus un jeton dans le système Vivacité : Chaque processeur obtient le jeton infiniment souvent Anneau à jeton

Franck Petit Parcours, Fouilles et Vagues top p = top TR1 : (v p =v g )  v p :=v g  k 1 p  top TR2 : (v p  v g )  v p :=v g TR2 TR1 TR2 Spécification Sûreté : Au plus un jeton dans le système Vivacité : Chaque processeur obtient le jeton infiniment souvent Anneau à jeton

Franck Petit Parcours, Fouilles et Vagues top p = top TR1 : (v p =v g )  v p :=v g  k 1 p  top TR2 : (v p  v g )  v p :=v g TR2 TR1 TR2 Spécification Sûreté : Au plus un jeton dans le système Vivacité : Chaque processeur obtient le jeton infiniment souvent Anneau à jeton

Franck Petit Parcours, Fouilles et Vagues top p = top TR1 : (v p =v g )  v p :=v g  k 1 p  top TR2 : (v p  v g )  v p :=v g TR2 TR1 TR2 Spécification Sûreté : Au plus un jeton dans le système Vivacité : Chaque processeur obtient le jeton infiniment souvent Anneau à jeton

Franck Petit Parcours, Fouilles et Vagues top p = top TR1 : (v p =v g )  v p :=v g  k 1 p  top TR2 : (v p  v g )  v p :=v g TR2 TR1 TR2 Spécification Sûreté : Au plus un jeton dans le système Vivacité : Chaque processeur obtient le jeton infiniment souvent Anneau à jeton

Franck Petit Parcours, Fouilles et Vagues top p = top TR1 : (v p =v g )  v p :=v g  k 1 p  top TR2 : (v p  v g )  v p :=v g TR2 Temps de Stabilisation : O(n) Spécification Sûreté : Au plus un jeton dans le système Vivacité : Chaque processeur obtient le jeton infiniment souvent Anneau à jeton

Franck Petit Parcours, Fouilles et Vagues Bottom Top Middle [Dijkstra 74] BT BottomTopMiddle

Franck Petit Parcours, Fouilles et Vagues Bottom Top Middle [Dijkstra 74] BT BottomTopMiddle

Franck Petit Parcours, Fouilles et Vagues Plan Parcours en profondeur Parcours en largeurVagues, auto-stabilisation et stabilisation instantanée Systèmes Distribués et auto- stabilisation

Franck Petit Parcours, Fouilles et Vagues Plan Parcours en profondeur Parcours en largeurVagues, auto-stabilisation et stabilisation instantanée Systèmes Distribués et auto- stabilisation