La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

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

Présentations similaires


Présentation au sujet: "Parcours, fouilles et vagues Franck Petit LaRIA Université de Picardie Jules Verne, Amiens"— Transcription de la présentation:

1 Parcours, fouilles et vagues Franck Petit LaRIA Université de Picardie Jules Verne, Amiens Franck.Petit@u-picardie.fr

2 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

3 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...

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

5 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

6 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

7 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

8 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

9 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

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

11 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)

12 Franck Petit Parcours, Fouilles et Vagues n Algorithme due à Trémaux (1818-1895) Rapporter par Edouard Lucas (1842-1891), 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), 146--160 Parcours en profondeur Plan

13 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.

14 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 .

15 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 .

16 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 .

17 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 .

18 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 .

19 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.

20 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 .

21 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 .

22 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 .

23 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 .

24 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 .

25 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 .

26 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 .

27 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 .

28 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 .

29 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 .

30 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 .

31 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 .

32 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 .

33 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 .

34 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 .

35 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...

36 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é ?

37 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.

38 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 

39 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

40 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

41 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

42 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

43 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

44 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

45 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

46 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

47 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

48 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

49 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

50 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

51 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

52 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

53 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

54 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

55 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

56 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

57 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

58 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

59 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

60 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

61 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

62 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

63 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

64 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

65 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

66 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

67 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

68 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

69 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

70 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

71 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

72 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

73 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

74 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

75 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 0 1 1 1 1

76 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 0 1 1 1 1 2 2 22 2 2

77 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 0 1 1 1 1 2 2 22 2 2 3 333 3

78 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 0 1 1 1 1 2 2 22 2 2 3 333 34

79 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 0 1 1 1 1 2 2 22 2 2 3 333 34 5

80 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 0 1 1 1 1 2 2 22 2 2 3 333 34 5 Premier Algorithme

81 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

82 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

83 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

84 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

85 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

86 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

87 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

88 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

89 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

90 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

91 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"...

92 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

93 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

94 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

95 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

96 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

97 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 !

98 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

99 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

100 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

101 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

102 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

103 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

104 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

105 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!

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

107 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

108 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.

109 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

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

111 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

112 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

113 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

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

115 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

116 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

117 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

118 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

119 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

120 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

121 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

122 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

123 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

124 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

125 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

126 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 7 5 28 3 1 4 6 TR2 Spécification Sûreté : Au plus un jeton dans le système Vivacité : Chaque processeur obtient le jeton infiniment souvent Anneau à jeton

127 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 2 5 53 1 4 6 7 TR2 Spécification Sûreté : Au plus un jeton dans le système Vivacité : Chaque processeur obtient le jeton infiniment souvent Anneau à jeton

128 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 5 5 51 4 6 7 2 TR2 Spécification Sûreté : Au plus un jeton dans le système Vivacité : Chaque processeur obtient le jeton infiniment souvent Anneau à jeton

129 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 5 5 54 6 7 2 5 TR2 Spécification Sûreté : Au plus un jeton dans le système Vivacité : Chaque processeur obtient le jeton infiniment souvent Anneau à jeton

130 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 5 5 56 7 2 5 5 TR2 Spécification Sûreté : Au plus un jeton dans le système Vivacité : Chaque processeur obtient le jeton infiniment souvent Anneau à jeton

131 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 5 5 57 2 5 5 5 TR2 Spécification Sûreté : Au plus un jeton dans le système Vivacité : Chaque processeur obtient le jeton infiniment souvent Anneau à jeton

132 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 5 5 52 5 5 5 5 TR2 Spécification Sûreté : Au plus un jeton dans le système Vivacité : Chaque processeur obtient le jeton infiniment souvent Anneau à jeton

133 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 5 5 55 5 5 5 5 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

134 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 6 1 71 2 3 4 5 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

135 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 7 2 12 3 4 5 6 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

136 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 1 3 23 4 5 6 7 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

137 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 2 4 34 5 6 7 1 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

138 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 3 5 45 6 7 1 2 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

139 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 4 6 56 7 1 2 3 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

140 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 5 7 67 1 2 3 4 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

141 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 6 8 71 2 3 4 5 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

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

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

144 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

145 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


Télécharger ppt "Parcours, fouilles et vagues Franck Petit LaRIA Université de Picardie Jules Verne, Amiens"

Présentations similaires


Annonces Google