Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
0% ont trouvé ce document utile (0 vote)
8 vues73 pages

Algo Dis

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1/ 73

Algorithmique Distribuée

Problèmes et Algorithmes Fondamentaux

Shantanu Das
http://pageperso.lif.univ-mrs.fr/˜shantanu.das/M1algodist/

Aix-Marseille Université

20/21 fevrier 2018

Shantanu Das (AMU) Algorithmique Distribuée 20/21 fevrier 2018 1 / 52


Problèmes et Algorithmes Fondamentaux

Deux types de systèmes :


Système parallèle : séparer un gros problème en petits
problèmes indépendants
Système distribué : interaction et coopération de
processus indépendants en vue de réaliser une tâche
donnée
Dans ce cours, on ne s’intéressera qu’aux systèmes
distribuées.

Shantanu Das (AMU) Algorithmique Distribuée 20/21 fevrier 2018 2 / 52


Algorithmique "classique"

Processus
Donnée

Un processus qui exécute un algorithme


Une donnée
Complexité : nombre d’opérations/instructions

Shantanu Das (AMU) Algorithmique Distribuée 20/21 fevrier 2018 3 / 52


Trois types de modèles pour
l’algorithmique distribuée

Processus Donnée

Shantanu Das (AMU) Algorithmique Distribuée 20/21 fevrier 2018 4 / 52


Mémoire partagée

Processus
Donnée

une donnée
n processus qui exécutent le même algorithme et
peuvent lire/écrire dans la donnée
complexité : nombre d’écriture/lecture
Shantanu Das (AMU) Algorithmique Distribuée 20/21 fevrier 2018 5 / 52
Agents mobiles

Donnée
Processus

n données
k processus qui exécutent le même algorithme et
peuvent se déplacer dans le réseau
complexité : nombre de déplacements
Shantanu Das (AMU) Algorithmique Distribuée 20/21 fevrier 2018 6 / 52
Passage de message

Processus
Donnée

n données
n processus qui exécutent le même algorithme et
peuvent envoyer des messages à leur voisins
complexité : nombre de messages
Shantanu Das (AMU) Algorithmique Distribuée 20/21 fevrier 2018 7 / 52
Quelques propriétés pour le modèle de
communication par passage de message

Tout les processus exécutent le “même” algorithme.


(l’état initial peut différer.)
Chaque processus connait l’information locale (pas
d’information globale). Ils doivent communiquer pour
l’échange des informations.
A chaque étape de l’algorithme, un nœud peut :
I envoyer des messages aux voisins,
I recevoir des messages de voisins, et
I faire des calculs locaux.

Shantanu Das (AMU) Algorithmique Distribuée 20/21 fevrier 2018 8 / 52


Tâches Fondamentaux

Les tâches distribuées se ramènent en général à une forme


d’accord distribué.

Exemples (Définition informelle) :


Election : un processus, et un seul, doit terminer
dans l’état ELU (les autres sont non-ELU).
Consensus : étant données des valeurs initiales pour
chaque processus, ceux-ci doivent décider une, et une
seule, de ces valeurs.
... et de nombreuses variations.

Shantanu Das (AMU) Algorithmique Distribuée 20/21 fevrier 2018 9 / 52


Problème d’Election
ELU

NON NON
ELU ELU

NON
ELU

Pourquoi est-il important ? (aider à la coordination)


Pourquoi est-il difficile à résoudre ? (symétries)
Comment effectuer l’élection ?
(utiliser des identifiants uniques, UID)

Shantanu Das (AMU) Algorithmique Distribuée 20/21 fevrier 2018 10 / 52


Consensus dans un réseau

1 3 3 3
4 3

5 7 3 3

Tout le processus décide le même valeur.

Shantanu Das (AMU) Algorithmique Distribuée 20/21 fevrier 2018 11 / 52


Les Algorithmes

Pour quel(s) modèle(s) de calcul distribué ?


Avec quelle complexité ?
Y-a-t-il toujours une solution ?

Shantanu Das (AMU) Algorithmique Distribuée 20/21 fevrier 2018 12 / 52


Les Algorithmes

Pour quel(s) modèle(s) de calcul distribué ?


Avec quelle complexité ?
Y-a-t-il toujours une solution ?
Non
=⇒ importance de déterminer ce qui est
possible/impossible en fonction des caractéristiques
du système

Shantanu Das (AMU) Algorithmique Distribuée 20/21 fevrier 2018 12 / 52


Les Modèles Différents
1) Aspects Dynamiques :
synchrone : tous les processus fonctionnent à la
même vitesse
asynchrone : les processus ont des vitesses
différentes qui peuvent varier dans le temps
partiellement synchrone : les processus
fonctionnent à la même vitesse mais ne sont pas
actifs à chaque ronde
types de pannes
I pannes définitives
I pannes transitoires
I pannes byzantines
Shantanu Das (AMU) Algorithmique Distribuée 20/21 fevrier 2018 13 / 52
Les Modèles Différents

2) Aspects Statiques
information structurelle :
I n° unique =⇒ identités
I connexions orientées ou non
connaissance structurelle :
I famille de graphes (arbres, anneaux, planaires, . . .)
=⇒ domaine
I borne sur la taille
I borne sur le diamètre

Shantanu Das (AMU) Algorithmique Distribuée 20/21 fevrier 2018 14 / 52


Les Modèles Différents
3) Détection de la Terminaison
implicite (stabilisation) : chaque processus ne sait pas
quand il a décidé mais l’algorithme converge
faiblement locale : chaque processus sait quand il a décidé
et participe encore à l’algorithme une fois qu’il a décidé
locale : chaque processus sait quand il a décidé et ne
participe plus à l’algorithme une fois qu’il a décidé
globale : un processus sait quand tous les processus ont
décidés

NB Quand un processus termine en donnant une valeur, on dit qu’il


décide.
Shantanu Das (AMU) Algorithmique Distribuée 20/21 fevrier 2018 15 / 52
Exemples des Problèmes

Wakeup (Réveiller tous les processus)


Broadcast (Diffusion d’information)
Gossip (Tous les processus communiquent à tous les
autres processus)
Construction d’arbre couvrant
Election

Shantanu Das (AMU) Algorithmique Distribuée 20/21 fevrier 2018 16 / 52


La Communication

Communication point à point


Chaque nœud peut choisir une (ou plusieurs) arête
incidente pour envoyer un message.
Le receveur sait de quelle arête le message est arrivé.
Taille de messages limitée (généralement
logarithmique en n)
But : Réduire la quantité de communication
(le communication coute plus que le calcul local !)

Shantanu Das (AMU) Algorithmique Distribuée 20/21 fevrier 2018 17 / 52


A Propos de la Complexité
Comment comparer les performances ?
Complexité de la Communication
I Complexité en “espace” : nombre de messages
I Complexité en “espace” : nombre de bits transmis
Complexité en “temps”
I synchrone : nombre de rondes
I asynchrone : parfois nombre de “rondes” (exécutions
optimistes)

Rappel :
On es intéressés à la quantité de la communication plutôt
que la quantité de calculs.

Shantanu Das (AMU) Algorithmique Distribuée 20/21 fevrier 2018 18 / 52


Problème de l’Election

Spécification
Etant donné un réseau de noeud initialement dans l’état
Inconnu, l’algorithme termine avec les conditions
suivantes :
Election : Un noeud et un seul termine dans l’état
ELU
Election avec terminaison explicite :
Tous les autres noeuds savent que l’algorithme est
terminé (et qu’ils sont non-ELU)

Shantanu Das (AMU) Algorithmique Distribuée 20/21 fevrier 2018 19 / 52


Systèmes Synchrones

Définition
Un système est synchrone si il existe une horloge globale
partagée par tous les processus du système.
Envoi de message simultané, les messages sont reçus
durant le même round.

Shantanu Das (AMU) Algorithmique Distribuée 20/21 fevrier 2018 20 / 52


Un Anneau de Processus
envoi de messages

P2

P1
P3

P6
P4

P5

Shantanu Das (AMU) Algorithmique Distribuée 20/21 fevrier 2018 21 / 52


Processus Anonymes

Théorème
Dans un anneau de processus synchrones anonymes (états
de départ identiques), il est impossible d’élire.

Shantanu Das (AMU) Algorithmique Distribuée 20/21 fevrier 2018 22 / 52


Preuve d’impossibilité
Pi : les agents ont tous le même état au début de la ronde i.

Shantanu Das (AMU) Algorithmique Distribuée 20/21 fevrier 2018 23 / 52


Preuve d’impossibilité
Pi : les agents ont tous le même état au début de la ronde i.
P1 est vrai car les agents sont anonymes.

Shantanu Das (AMU) Algorithmique Distribuée 20/21 fevrier 2018 23 / 52


Preuve d’impossibilité
Pi : les agents ont tous le même état au début de la ronde i.
P1 est vrai car les agents sont anonymes.
Supposons que Pi est vraie. Dans ce cas tous les agents vont
effectuer les mêmes actions car il sont dans le même état. Il vont
donc tous envoyer les mêmes messages à leur voisins de gauche et
de droite.
Par conséquent ils vont tous recevoir les mêmes messages des deux
cotés et ils vont tous passer au même état. Pi+1 est donc vraie.
Par récurrence, à chaque ronde, tous les processus sont dans le
même état (symétrie des processus).
Supposons qu’un algorithme d’élection existe. Si l’un des processus
est ELU alors tous les autres le sont aussi.

Shantanu Das (AMU) Algorithmique Distribuée 20/21 fevrier 2018 23 / 52


Processus Avec Identités
Avec identités uniques => Election est possible !

1
6 8

4 3

7 5
2

Shantanu Das (AMU) Algorithmique Distribuée 20/21 fevrier 2018 24 / 52


Processus Avec Identités

On suppose désormais que chaque processus possède un


identifiant unique (UID).
Algorithme d’élection LCR
Pour un anneau unidirectionnel avec UID, sans
connaissance de la taille.

Unidirectionnel : envoi de message possible que sur un seul


voisin (circuit)
LCR pour Le Lann, Chang et Roberts

Shantanu Das (AMU) Algorithmique Distribuée 20/21 fevrier 2018 25 / 52


Algorithme LCR
etat = inconnu ;
u = uid ;
do {
send ( u ) ;
v = receive ();
i f ( v > uid )
u = v;
i f ( v < uid )
u = null ;
i f ( v = = uid )
etat = elu ;
} while ( etat = = inconnu ) ;
Shantanu Das (AMU) Algorithmique Distribuée 20/21 fevrier 2018 26 / 52
Execution de LCR
u=1

u=4 4 2 u=2

u=3
Shantanu Das (AMU) Algorithmique Distribuée 20/21 fevrier 2018 27 / 52
Execution de LCR
u=1

4 1

u=4 4 2 u=2

3 2

u=3
Shantanu Das (AMU) Algorithmique Distribuée 20/21 fevrier 2018 27 / 52
Execution de LCR
u=4

u=null 4 2 u=null

u=null
Shantanu Das (AMU) Algorithmique Distribuée 20/21 fevrier 2018 27 / 52
Execution de LCR
u=4

null 4

u=null 4 2 u=null

null null

u=null
Shantanu Das (AMU) Algorithmique Distribuée 20/21 fevrier 2018 27 / 52
Execution de LCR
u=null

u=null 4 2 u=4

u=null
Shantanu Das (AMU) Algorithmique Distribuée 20/21 fevrier 2018 27 / 52
Execution de LCR
u=null

null null

u=null 4 2 u=4

null 4

u=null
Shantanu Das (AMU) Algorithmique Distribuée 20/21 fevrier 2018 27 / 52
Execution de LCR
u=null

u=null 4 2 u=null

u=4
Shantanu Das (AMU) Algorithmique Distribuée 20/21 fevrier 2018 27 / 52
Execution de LCR
u=null

null null

u=null 4 2 u=null

4 null

u=4
Shantanu Das (AMU) Algorithmique Distribuée 20/21 fevrier 2018 27 / 52
Execution de LCR
u=null

u=null 4 ELU 2 u=null

u=null
Shantanu Das (AMU) Algorithmique Distribuée 20/21 fevrier 2018 27 / 52
Preuve de Correction de LCR

Propriété
Le processus d’UID maximal est dans l’état ELU à la
n-ième ronde et c’est le seul.

Preuve On note imax l’indice du processus d’UID


maximal.
Pour toute ronde r avec 0 ≤ r ≤ n − 1,
uimax +r mod n = UIDimax
Après n rondes, etatimax =ELU,

Shantanu Das (AMU) Algorithmique Distribuée 20/21 fevrier 2018 28 / 52


Terminaison de LCR

Ainsi présenté, l’algorithme ne se termine pas pour les


processus non-ELUs.
⇐= ils sont bloqués dans une boucle infinie d’envoi et de
réception de message vide.

Chaque processus qui voit passer un UID plus grand


que le sien peut se mettre dans l’etat non-ELU (mais
ne sait pas mieux quand s’arrêter)
Le processus ELU peut envoyer un message CestFini
pour indiquer à chaque autre noeud la terminaison

Shantanu Das (AMU) Algorithmique Distribuée 20/21 fevrier 2018 29 / 52


Complexité de LCR

sans détection de la terminaison :


I en temps : n rondes
I en espace : O(n2 ) messages
avec détection de la terminaison locale :
I en temps : 2n rondes
I en espace : O(n2 ) messages

Pire des cas quand les UIDs sont en ordre décroissant.

Shantanu Das (AMU) Algorithmique Distribuée 20/21 fevrier 2018 30 / 52


Complexité de LCR

sans détection de la terminaison :


I en temps : n rondes
I en espace : O(n2 ) messages
avec détection de la terminaison locale :
I en temps : 2n rondes
I en espace : O(n2 ) messages

Pire des cas quand les UIDs sont en ordre décroissant.

Existe-il un algorithme plus efficace ?

Shantanu Das (AMU) Algorithmique Distribuée 20/21 fevrier 2018 30 / 52


Élection en Phases : O(n log n) messages

Un algorithme plus efficace existe.


On considère l’anneau bidirectionnel.
On définit le voisinage de taille d d’un processus noté
Vd (u) comme étant tous les processus à distance ≤ d de
u (d processus à droites et d à gauche)

V2(u)

Shantanu Das (AMU) Algorithmique Distribuée 20/21 fevrier 2018 31 / 52


Élection en Phases : principe

Principe
A la phase k, le processus se compare à ses voisins actifs à
distance 2k : V2k (u). S’il a le plus grand identifiant, il
reste actif. Sinon il devient passif et ne compte plus pour
les comparaisons suivantes
Phase 0 : on se compare aux voisins à distance 1
Phase 1 : on se compare aux voisins à distance 2
Phase 2 : on se compare aux voisins à distance 4
Phase 3 : on se compare aux voisins à distance 8

Shantanu Das (AMU) Algorithmique Distribuée 20/21 fevrier 2018 32 / 52


Élection en Phases : code
To initiate an election (phase 0) :
send(ELECTION< my _id, 0, 0 >) to left and right ;
Upon receiving a message ELECTION< j, k, d > from left (right) :
if ((j > my _id) ∧ (d ≤ 2k )) then
send(ELECTION< j, k, d + 1 >) to right (left) ;
if ((j > my _id) ∧ (d = 2k )) then
send(REPLY< j, k >) to left (right) ;
if (my _id = j) then announce itself as leader ;
Upon receiving a message REPLY< j, k > from left (right) :
if (my _id 6= j) then
send(REPLY< j, k >) to right (left) ;
else
if (already received REPLY< j, k >)
send(ELECTION< j, k + 1, 1 >) to left and right ;

Shantanu Das (AMU) Algorithmique Distribuée 20/21 fevrier 2018 33 / 52


Exemple d’exécution

1
6 8

4 3

7 5
2

Shantanu Das (AMU) Algorithmique Distribuée 20/21 fevrier 2018 34 / 52


Exemple d’exécution
1
6 8

4 3

7 5
2
Shantanu Das (AMU) Algorithmique Distribuée 20/21 fevrier 2018 34 / 52
Exemple d’exécution
1
6 8

4 3

7 5
2
Shantanu Das (AMU) Algorithmique Distribuée 20/21 fevrier 2018 34 / 52
Exemple d’exécution

1
6 8

4 3

7 5
2

Shantanu Das (AMU) Algorithmique Distribuée 20/21 fevrier 2018 34 / 52


Exemple d’exécution
1
6 8

4 3

7 5
2
Shantanu Das (AMU) Algorithmique Distribuée 20/21 fevrier 2018 34 / 52
Exemple d’exécution
1
6 8

4 3

7 5
2
Shantanu Das (AMU) Algorithmique Distribuée 20/21 fevrier 2018 34 / 52
Exemple d’exécution

1
6 8

4 3

7 5
2

Shantanu Das (AMU) Algorithmique Distribuée 20/21 fevrier 2018 34 / 52


Exemple d’exécution
1
6 8

4 3

7 5
2
Shantanu Das (AMU) Algorithmique Distribuée 20/21 fevrier 2018 34 / 52
Exemple d’exécution
1
6 8

4 3

7 5
2
Shantanu Das (AMU) Algorithmique Distribuée 20/21 fevrier 2018 34 / 52
Exemple d’exécution

1
6 8 est élu

4 3

7 5
2

Shantanu Das (AMU) Algorithmique Distribuée 20/21 fevrier 2018 34 / 52


Élection en Phases : analyse

Lemme
A la phase k au plus 4.2k messages sont envoyés pour un
candidat actif.

Lemme
Pourn chaque
 k ≥ 1, le nombre de processeurs actifs est au
2k−1 +1
.

Preuve : La distance minimum entre deux processus


actifs à la fin de la phase k − 1 est 2k−1 + 1.

Shantanu Das (AMU) Algorithmique Distribuée 20/21 fevrier 2018 35 / 52


Élection en Phases : analyse

Le nombre total de phases avant élection est


dlog ne + 1.
Le nombre total de messages est :

dlog ne+1   dlog ne+1


0
X n X
4n.2
| {z } + (4.2k ) = O(n)
2k−1 + 1
phase 0 | k=1
{z } k=1

Phase 1 à dlog ne + 1
= O(n log n)

Shantanu Das (AMU) Algorithmique Distribuée 20/21 fevrier 2018 36 / 52


Election dans un graphe Quelconque
Un graphe arbitraire G (avec identités uniques pour
chaque processus)

Comment faire l’élection (sans connaissance du G) ?


Shantanu Das (AMU) Algorithmique Distribuée 20/21 fevrier 2018 37 / 52
Dans un Réseau Quelconque

Comment élire dans un graphe quelconque avec UIDs et


connaissance d’une borne ∆ sur le diamètre ?
=⇒Algorithme d’Inondation Chaque noeud
commence par diffuser son UID, puis le maximum des
UIDs reçus. L’algorithme dure ∆ rondes.
Si l’UID maximal est celui du processus alors il se
met dans l’état ELU
Sinon, le processus se met dans l’état non-ELU

Shantanu Das (AMU) Algorithmique Distribuée 20/21 fevrier 2018 38 / 52


Correction de l’Algorithme d’Inondation

La correction repose sur l’invariant suivant :


Après r rondes, si d(i, imax ) ≤ r alors

max{UID reçu en i} = UIDimax .

Shantanu Das (AMU) Algorithmique Distribuée 20/21 fevrier 2018 39 / 52


Terminaison de l’Algorithme d’Inondation

Tous les processus ont terminé au bout de ∆ rondes. (et


sont soit dans l’état ELU, soit dans l’état non-ELU)

Shantanu Das (AMU) Algorithmique Distribuée 20/21 fevrier 2018 40 / 52


Complexité de l’Algorithme d’Inondation

En temps : ∆ rondes
En nombre du messages : ∆ × nb d’arêtes du G

Shantanu Das (AMU) Algorithmique Distribuée 20/21 fevrier 2018 41 / 52


Pour Conclure Provisoirement

Il nous a fallu la connaissance d’une borne sur le


diamètre pour élire dans un réseau quelconque
Avec LCR, il est possible d’élire dans un anneau
orienté sans connaissance du taille
Est-il possible d’élire dans un réseau synchrone
quelconque avec UID, sans autre connaissance ou
information structurelles ?

Shantanu Das (AMU) Algorithmique Distribuée 20/21 fevrier 2018 42 / 52


Tolerance aux pannes

Algorithmique distribuée
pour
les systèmes avec défaillances

Shantanu Das (AMU) Algorithmique Distribuée 20/21 fevrier 2018 43 / 52


Problème du consensus

1 3 3 3
4 3

5 7 3 3

Shantanu Das (AMU) Algorithmique Distribuée 20/21 fevrier 2018 44 / 52


Problème du Consensus

Spécification
Etant donnés des processus avec une valeur initiale
quelconque,
Accord Tous les processus qui décident une valeur
décident la même valeur.
Validité Si tous les processus ont w comme valeur
initiale, alors c’est la valeur décidée.
Terminaison Tous les processus (non défaillants)
décident.

Shantanu Das (AMU) Algorithmique Distribuée 20/21 fevrier 2018 45 / 52


Consensus avec Défaillances

S’il n y a pas de défaillances :


Il suffit d’échanger les valeurs initiales et d’en choisir une
par une méthode déterministe (maximum par exemple).

Quand il y a défaillances ...


de liens
de processus
byzantines

Shantanu Das (AMU) Algorithmique Distribuée 20/21 fevrier 2018 46 / 52


L’histoire des deux généraux
Deux armées rouges surplombent une armée bleue de part
et d’autre d’une vallée. Les forces en présence sont telles
que si une seule armée rouge attaque, elle perdra la
bataille. Par contre, si les deux attaquent simultanément,
alors c’est l’armée bleue qui perd.
Les armées rouges communiquent en envoyant des
messagers qui doivent traverser la vallée et peuvent donc
être capturés par l’armée bleue.
Comment les généraux rouges peuvent-ils se mettre
d’accord pour lancer éventuellement l’attaque ou
renoncer ?
Il n’y a pas de solution (déterministe)
Shantanu Das (AMU) Algorithmique Distribuée 20/21 fevrier 2018 47 / 52
Les deux généraux de manière plus formelle
Le problème
On considère deux processus A et B.
Le processus A a un registre d’entrée IA égal à 0 (pas d’attaque) ou
1 (attaque).
Les deux processus A et B ont chacun un registre de sortie OA et
OB initialisé à ⊥.
Le but des deux processus est d’écrire la valeur IA dans leur registre
de sortie (OA ou OB ). Il n’ont le droit qu’à une écriture (une fois
décidé il est impossible de changer d’avis).
Le système est synchrone mais des messages peuvent se perdre.

Théorème
Le problème des deux généraux n’a aucune solution déterministe.

Shantanu Das (AMU) Algorithmique Distribuée 20/21 fevrier 2018 48 / 52


Preuve d’mpossibilité I
Preuve :
On peut observer que dans une exécution ou les généraux
décident 1 (cas IA = 1), au moins un message doit être
reçu. En effet, dans le cas contraire, B ne peut pas
distinguer le cas où IA = 1 de celui où IA = 0. Le lien doit
donc laisser passer au moins un message avant de tomber
en panne.
Supposons par contradiction qu’il existe un algorithme
résolvant le problème. Parmi toutes les exécutions dans
lesquelles les deux processus décident 1, prenons
l’exécution E la plus plus courte (en nombre de messages
reçus) qui est de longueur k ≥ 1.
Shantanu Das (AMU) Algorithmique Distribuée 20/21 fevrier 2018 49 / 52
Preuve d’mpossibilité II
Sans perte de généralité, on peut supposer que le dernier
(k-ième) message reçu est de A vers B. On note t le
numéro de ronde pour lequel A et B ont décidé 1.
On considère maintenant une execution E 0 qui est
identique à E sauf que le k-ième message est perdu.

Exécution E
A

B
Exécution E 0
A

B
Shantanu Das (AMU) Algorithmique Distribuée 20/21 fevrier 2018 50 / 52
Preuve d’mpossibilité III
Le général A ne peut différencier E de E 0 . Puisque A
attaque dans E il doit aussi attaquer dans E 0 . La valeur
OA est donc fixée à la ronde t dans E 0 .
Puisque A attaque dans E 0 , B doit aussi attaquer dans E 0 .
Si k − 1 > 0 alors l’exécution E 0 est plus courte que E et
contient au moins un message. Cela contredit le fait que
E est l’exécution la plus courte qui décide 1.
Si k − 1 = 0 alors il n’y a pas de message reçu dans E 0 et
malgré cela A et B décident 1. Contradiction avec notre
remarque initiale.

Shantanu Das (AMU) Algorithmique Distribuée 20/21 fevrier 2018 51 / 52


Autres Modèles de fautes

Question
1. Si on ne peut perdre qu’un seul message à la fois,
ou bien
2. Si un seul des deux processus peut perdre ses messages,

Y a t-il un solution pour consensus ?

Shantanu Das (AMU) Algorithmique Distribuée 20/21 fevrier 2018 52 / 52

Vous aimerez peut-être aussi