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