You are on page 1of 29

Universitatea Politehnica Bucureşti - Facultatea de Automatică şi Calculatoare

Algoritmi pentru sisteme tolerante la defecte


Problema: funcţionarea corectă în prezenţa unor defecţiuni ale sistemului
Solutia: replicarea si folosirea unui comparator

comparator
Proces 1

date de Proces 2 date de


intrare iesire

Proces N

aceeaşi ieşire pentru aceleaşi valori de intrare


Mai complicat: valori apropiate la ieşire, pentru valori de intrare apropiate
Universitatea Politehnica Bucureşti - Facultatea de Automatică şi Calculatoare

•  Sistem k-fault tolerant


–  mascheaza k procese defecte

•  Problema: cat de mare trebuie sa fie grupul (n) in


cazul unui numar de k procese defecte?
•  Solutie:
n = k+1 esecuri de tip crash
n = 3k+1 esecuri bizantine (solutie Lamport)
Universitatea Politehnica Bucureşti - Facultatea de Automatică şi Calculatoare

Problema generalilor bizantini


•  Un comandant trebuie să trimită un ordin celor n-1
locotenenţi ai săi
–  nu toţi generalii sunt loiali (chiar comandantul poate fi neloial!)
–  se cauta metoda prin care generalii loiali iau aceeasi decizie

Problema se reformuleaza astfel:


Problema Generalilor Bizantini. Un comandant trebuie să
trimită un ordin celor n-1 locotenenţi ai săi astfel ca:
IC1. Toţi locotenenţii loiali se supun aceluiaşi ordin.
IC2. Dacă comandantul este loial, atunci fiecare locotenent
loial se supune ordinului transmis de acesta.

Obs. - IC1 si IC2 se numesc Interactive Consistency conditions


- când comandantul este loial, IC2 è IC1
- comandantul nu este neapărat loial.
Universitatea Politehnica Bucureşti - Facultatea de Automatică şi Calculatoare

Varianta neaplicabilă (de ce?)


fiecare locotenent loial acţionează conform mesajului primit
de la comandant

Soluţia se bazeaza pe mai multe schimburi de mesaje intre


generali, care
–  comunică între ei prin mesaje orale
•  legături directe punct la punct
•  care nu interferă (nici un general nu poate "asculta" ce comunică alţi doi
generali între ei)
•  fără erori (absenţa unui mesaj nu poate fi pusă pe seama defectării
legăturii)
–  decid pe baza mesajelor schimbate
–  alegerea se face dintr-un numar finit de alternative: atac,
retragere, atac pe flancul stâng, atac pe flancul drept.
–  in versiunea de baza, alegerea este binara (0,1)
Universitatea Politehnica Bucureşti - Facultatea de Automatică şi Calculatoare

Pentru mesaje orale, mai mult de 2/3 din generali trebuie să fie
loiali.
Cu mesaje orale şi un trădător
nu există o soluţie pentru doar trei generali
există soluţie pentru patru generali.

Algoritmul (cazul un tradator):


1. Comandantul transmite decizia sa tuturor locotenenţilor.
2. Fiecare locotenent transmite celorlalţi locotenenţi mesajul primit de la
comandant.
3. După primirea mesajului direct de la comandant şi a còpiilor acestuia
de la ceilalţi locotenenţi, un locotenent stabileste prin vot majoritar ce
decizie trebuie să ia.
Universitatea Politehnica Bucureşti - Facultatea de Automatică şi Calculatoare

Există soluţie pentru un trădător între 4 generali


Scenariul 1. Comandantul este loial, iar decizia este atac.

comandant
atac
atac atac

atac atac
locotenent 1 atac locotenent 2 *** locotenent 3

atac

***

Cei doi locotenenti loiali selecteaza "atac" pe baza principiului majoritatii


Universitatea Politehnica Bucureşti - Facultatea de Automatică şi Calculatoare

Scanariul 2. Comandantul este neloial şi transmite mesaje


diferite locotenenţilor.

comandant
atac
retrag ***

atac retrag
locotenent 1 retrag locotenent 2 *** locotenent 3

atac

***

Locotenentii loiali au acelasi set de valori (atac, retrag, ***) si iau aceeasi
decizie (folosesc acelasi algoritm de alegere)
Universitatea Politehnica Bucureşti - Facultatea de Automatică şi Calculatoare

Nu există soluţie pentru 1 trădător şi 3 generali


Scenariul 3. Grupul conţine trei
comandant generali. Fiecare locotenent
primeste doua valori si ia decizie
atac atac determinista, de ex. da prioritate
comandantului
atac
a)  locotenentul 2 este neloial à
locotenent 1 retrag locotenent 2 generalii loiali iau aceeasi
decizie

comandant b)  comandantul este neloial à


generalii loiali iau decizii
atac retrag
diferite
atac
locotenent 1 retrag locotenent 2 Se poate generaliza la n generali
(demo constructivă)
Universitatea Politehnica Bucureşti - Facultatea de Automatică şi Calculatoare

Soluţia cu mesaje orale


Un mesaj oral îndeplineşte următoarele condiţii:
A1. Fiecare mesaj transmis este livrat corect.
A2. Receptorul unui mesaj ştie cine l-a trimis.
A3. Absenţa unui mesaj poate fi detectată.
A1 si A2 => un trădător nu poate interfera cu comunicarea între
alţi doi generali.
A3 => un trădător nu poate influenţa decizia prin ne-
transmiterea unui mesaj.
Universitatea Politehnica Bucureşti - Facultatea de Automatică şi Calculatoare

Soluţia cu mesaje orale (2)


Convenţii
- se foloseşte expresia un locotenent "obţine o valoare" şi nu
"se supune unui ordin"
-  algoritmul foloseşte o funcţie majority aplicata unui vector de
valori v(i) astfel că dacă majoritatea valorilor v(i) este v
atunci valoarea funcţiei este v; ex.
1. valoarea majoritară în v(i) dacă ea există, altfel o
valoarea implicită Vdef (de exemplu, Retragere);
2. mediana valorilor v(i), presupunând că valorile sunt dintr-
o mulţime ordonată.
- un comandant trădător poate decide sa nu trimită un ordin;
se ia o valoare implicită Vdef (de ex Retragere).
Universitatea Politehnica Bucureşti - Facultatea de Automatică şi Calculatoare

Algoritmul UM(n,0).
(1) Comandantul trimite valoarea sa fiecărui locotenent.
(2) Fiecare locotenent foloseşte valoarea primită de la comandant, sau
foloseşte Vdef dacă nu primeşte nici o valoare.

Algoritmul UM(n,m), m > 0.


(1) Comandantul trimite valoarea sa fiecărui locotenent.
(2) For each Locotenent i
fie vi valoarea primită de la comandant, sau Vdef dacă nu primeşte nici o
valoare.
Locotenentul i acţionează drept comandant şi trimite valoarea vi
fiecăruia din ceilalţi n - 2 locotenenţi folosind UM(n - 1,m - 1)
(3) For each i and each j <> i
fie vj valoarea pe care Locotenentul i o primeşte de la Locotenentul j în
pasul (2) (folosind Algoritmul UM(n - 1, m - 1)), sau Vdef dacă nu
primeşte nici o valoare.
Locotenentul i foloseşte valoarea majority (v1 . . . . . vn-1 ).
Universitatea Politehnica Bucureşti - Facultatea de Automatică şi Calculatoare

Executia algoritmului
Notaţie
Mesajul comandantului este prefixat de identificatorul acestuia
Un locotenent trimite multe mesaje separate catre ceilalti locotenenti
Pentru a le diferentia, la trimiterea unei valori, locotenentul i adauga la
prefix identificatorul i
In UM(n-k,m-k) executat de locotenentul j, se va trimite o valoare
prefixată de id-ul comandantului si o secventa de id-uri a k
locotenenţi (ultimul fiind j)
Mesajul merge catre toti locotenentii ai caror identificatori nu apar in
secvenţă

Executia se deruleaza in doua etape

1.  etapa 1: procesele executa m+1 runde de comunicare a mesajelor; la


fiecare runda se adauga la prefix inca un id, al procesului care trimite
mesajul

2.  etapa 2: fiecare proces foloseste mesajele primite pentru a stabili


decizia
Universitatea Politehnica Bucureşti - Facultatea de Automatică şi Calculatoare

Exemplu pentru m = 1, n = 4, Locotenentul 3 este trădător.


Etapa 1
Se marcheaza intr-un arbore valorile trimise in fiecare pas de locotenenti
Comandantul intervine o singura data, trimite o valoare catre locotenenti
deciziile se iau in urma comunicarii doar intre locotenenti

Pas 1 UM(4,1)
- comandantul (id=0) trimite v0 tuturor locotenenţilor.
Pas 2 UM(3,0) – un tradator trimite o valoare ≠ de cea primita in Pas 1
- L1 trimite v01 celorlalţi locotenenţi
- L2 trimite v02 celorlalţi locotenenţi
- L3 trimite x03 lui L1 si y03 lui L2
C

v0 v0 v0
L1 L2 L3

v01 v01 v02 v02 x03 y03

L2 L3 L3 L1 L1 L2
Universitatea Politehnica Bucureşti - Facultatea de Automatică şi Calculatoare

Etapa 2
Se marcheaza in arbore valorile primite de fiecare locotenent
se incepe de la frunze; arborele se re-organizeaza corespunzator
Pas 2 UM(3,0)
- L1 a primit v02 de la L2 si x03 de la L3 si are valoarea v din Pas 1
calculeaza majority (v,v,x) = v
- L2 a primit v01 de la L1 si y03 de la L3 si are valoarea v din Pas 1
calculeaza majority (v,v,x) = v
- L3 a primit v01 de la L1 si v02 de la L2
nu este loial – decizia lui nu conteaza
Concluzia: locotenentii loiali iau aceeai decizie cu comandantul loial

v0 v0 v0
L1 L2 L3
v02 x03 y03 v01 v01 v02

L2 L3 L3 L1 L1 L2
Universitatea Politehnica Bucureşti - Facultatea de Automatică şi Calculatoare

Exemplu pentru m = 1, n = 4, Comandantul este trădător

Etapa 1
Pas 1 UM(4,1)
- comandantul (id=0) trimite x0, y0 si -0 (nimic 0) locotenenţilor.

Pas 2 UM(3,0) – locotenentii loiali retrimit valorile primite in Pas 1


- L1 trimite x01 lui L2 si L3
- L2 trimite y02 lui L1 si L3
- L3 trimite Vdef03 lui L1 si L2

C
nimic, interpretat ca Vdef0
x0 y0
L1 L2 L3
x01 x01 y02 y02 Vdef03 Vdef03

L2 L3 L3 L1 L1 L2
Universitatea Politehnica Bucureşti - Facultatea de Automatică şi Calculatoare

Etapa 2
Se determina valorile primite de fiecare locotenent in fiecare pas
se incepe de la frunze; arborele se re-organizeaza corespunzator
Pas 2 UM(3,0)
- L1 a primit y02 de la L2 si Vdef03 de la L3 si are valoarea x din Pas 1
calculeaza majority (x,y,Vdef)
- L2 a primit x01 de la L1 si Vdef03 de la L3 si are valoarea y din Pas 1
calculeaza majority (x,y,Vdef)
- L3 a primit x01 de la L1 si y02 de la L2
calculeaza majority (x,y,Vdef)
Concluzia: locotenentii loiali iau aceeai decizie (desi comandantul este neloial)

x0 y0 nimic interpretat ca Vdef0

L1 L2 L3
y02 Vdef03 Vdef03 x01 x01 y02

L2 L3 L3 L1 L1 L2
Universitatea Politehnica Bucureşti - Facultatea de Automatică şi Calculatoare

Complexitate
UM(n,m) transmite n-1 mesaje în primul pas şi invocă n-1
execuţii separate ale algoritmului UM(n-1,m - 1).
Fiecare din aceste executii trimite n-2 mesaje si invoca n-2
executii separate ale algoritmului UM(n-2,m-2)
Ca urmare, se transmit în total (n-1)(n-2) mesaje s.a.m.d.
În ultima iteratie, UM(n-m,0) se transmit (n-1)(n-2)...(n-m-1)
mesaje,
deci numărul total de mesaje este O(nm+1).
Universitatea Politehnica Bucureşti - Facultatea de Automatică şi Calculatoare

Corectitudine

LEMA 1. Pentru orice m şi k, UM(n,m) satisface IC2 dacă


numărul n de generali este mai mare de 2k+m şi sunt cel
mult k trădători.

TEOREMA 1. Pentru orice m, algoritmul UM(n,m) satisface


condiţiile IC1 şi IC2 dacă numărul de generali n este mai
mare de 3m şi sunt cel mult m trădători.

IC1. Toţi locotenenţii loiali se supun aceluiaşi ordin.


IC2. Dacă comandantul este loial, atunci fiecare locotenent
loial se supune ordinului transmis de acesta.
Universitatea Politehnica Bucureşti - Facultatea de Automatică şi Calculatoare

Algoritmul
ipoteză: n > UM(n,0).
2k + m è n - 1 > 2k + (m - 1)
(1) Comandantul
ipoteza trimite valoarea
inducţie satisfacuta sa fiecărui
è fiecare locotenent.
locotenent loial
(2) Fiecare
obţine vj = locotenent foloseşte
v pentru fiecare valoarea
locotenent primită
loial j. de la comandant, sau
foloseşte Vdef dacă nu primeşte nici o valoare.
Sunt cel mult k trădători şi n - 1 > 2k + (m - 1) >= 2k
è majoritatea dintre n-1 locotenenţi sunt loiali
Algoritmul UM(n,m), m > 0.
(1) Comandantul trimite valoarea sa fiecărui locotenent.
(2) For each Locotenent i Lema se refera la IC2 (comandant
è fiecare locotenent
fie vi valoarea loial obţine
primită o
de la comandant, loial).
sauDem
Vdefinductie.
dacă nu Pentru m=0:
primeşte nici o
majoritate de valori vj = v è în pasul
valoare. comandant loial trimite v; fiecare
(3) se obţine majority(v1 . . . . ,drept mesaj transmis este livrat corect (cf.
vn-1)comandant
Locotenentul i acţionează şi trimite valoarea vi
= v è fiecăruia
IC2 satisfacuta propr. A1) è UM(n,0) satisface IC2
din ceilalţi n - 2 locotenenţi folosind UM(n - 1,m - 1)
(3) For each i and each j <> i
Pp. proprietatea IC2 indeplinită
În pas vj valoarea
fie (1), comandant pe care
loial Locotenentul i optr. primeşte
m-1, m>0de laşi Locotenentul
probăm ptr m.j în
trimite pasul
v celor(2) (folosind
n-1 Algoritmul UM(n - 1, m - 1)), sau Vdef dacă nu
locotenenţi.
primeşte nici o valoare.
În (2), fiecare locotenent
Locotenentul loialvaloarea majority (v1 . . . . . vn-1 ).
i foloseşte
aplică UM(n-1,m-1) cu n-1
generali.
Universitatea Politehnica Bucureşti - Facultatea de Automatică şi Calculatoare

Algoritmul UM(n,0).
(1) Comandantul
TEOREMA trimite
1. Pentru valoarea
orice sa fiecărui
m, algoritmul locotenent.
UM(n,m) satisface condiţiile IC1 şi
IC2 dacă numărul
(2) Fiecare de generali
locotenent n este
foloseşte mai primită
valoarea mare dede 3m
la şi sunt cel mult
comandant, saum
trădători.
foloseşte Vdef dacă nu primeşte nici o valoare.
Presupunemprin
teorema adevărată
Demonstraţia inducţie după m.ptr m-1; probăm pentru m > 0.
Algoritmul
Comandant
Pentru UM(n,m),
m=0 (nu loial:
suntpunem m k=m
> 0.în
trădători), Lema 1satisface
UM(n,m) (n>2k+mIC1 ~ n>3m) è UM(n,m)
(toţi locotenenţii
satisface
(1) IC2,aceluiaşi
Comandantul iartrimite
IC2 èIC1
valoarea sa fiecărui locotenent.
loiali se supun ordin) şi IC2 (comandantul fiind loial, fiecare
(2) For each
locotenent loialLocotenent
se supunei ordinului transmis de el).
fie vi valoarea primită de la comandant, sau Vdef dacă nu primeşte nici o
valoare.
DemLocotenentul i acţionează
IC1 ptr. comandant drept comandant şi trimite valoarea vi
trădător:
fiecăruia din ceilalţi n - 2 locotenenţi folosind UM(n - 1,m - 1)
Max. m trădători şi comandant trădător è max. m-1 locotenenţi trădători.
(3) For each i and each j <> i
Suntfie> 3m generalipe
vj valoarea > 3m-1
è care locotenenţi.
Locotenentul i oDeoarece
primeşte 3m-1 > 3(m - 1) è j în
de la Locotenentul
ipotezapasul
de inducţie satisfacuta
(2) (folosind è UM(n-1,m-1)
Algoritmul UM(n - 1, m satisface
- 1)), saucondiţiile IC1nu
Vdef dacă şi IC2.
è ptr. primeşte nici o doi
fiecare j, orice valoare.
locotenenţi loiali obţin aceeaşi valoare vj în pasul (3).
Locotenentul i foloseşte valoarea majority (v1 . . . . . vn-1 ).
è obţin aceleaşi valori v1 . . . vn-1 è calculeaza aceeaşi valoare
majority(v1 . . . vn-1) în pasul (3)
Universitatea Politehnica Bucureşti - Facultatea de Automatică şi Calculatoare

Soluţie cu mesaje semnate


De la mesaje orale avem conditiile:
A1. Fiecare mesaj transmis este livrat corect.
A2. Receptorul unui mesaj ştie cine l-a trimis.
A3. Absenţa unui mesaj poate fi detectată.
Se adaugă condiţia:
A4 (a) Semnătura unui general loial nu poate fi falsificată şi orice
alterare a conţinutului mesajului semnat poate fi detectată
(b) Oricine poate verifica autenticitatea semnăturii unui general.
(În schimb, semnătura unui trădător poate fi falsificată de un alt trădător.)
Algoritmul funcţionează pentru orice număr de generali (>= m+2)
În algoritm:
–  comandantul trimite un ordin semnat fiecărui locotenent;
-  fiecare locotenent adaugă semnătura la ordin şi-l transmite celorlalti
-  fiecare adaugă semnăturile lor şi îl transmit celor care nu l-au semnat
-  ş.a.m.d.
Universitatea Politehnica Bucureşti - Facultatea de Automatică şi Calculatoare

Algoritmul foloseşte o functie choice care se aplică unei mulţimi


de ordine pentru a obţine un singur ordin. Cerinţe:
1. Dacă mulţimea V constă dintr-un singur element v, atunci choice(V) =
v.
2. choice(Φ) = RETREAT, unde Φ este mulţimea vidă.
O definiţie posibilă este ca choice(V) să fie elementul median al lui
V, presupunând că există o ordine a elementelor.
Notaţii:
x:i este valoarea x semnată de generalul i
x:j:i este valoarea x semnată de j, apoi valoarea x:j semnată de i
generalul 0 este comandantul
locotenentul i păstrează mulţimea Vi a ordinelor bine semnate
primite
dacă comandantul este loial, Vi ar trebui să conţină doar un element
Universitatea Politehnica Bucureşti - Facultatea de Automatică şi Calculatoare

Algoritm SM (m).

Iniţial Vi = Φ pentru orice i.


(1) Comandantul semnează şi trimite valoarea sa fiecărui locotenent.
(2) For each i:
(A) If Locotenent i primeşte un mesaj de forma v: 0 de la comandant şi
nu a primit încă nici un ordin then
(i) Vi := {v};
(ii) transmite mesajul v:0:i fiecăruia din ceilalţi locotenenţi.
(B) If Locotenent i primeşte un mesaj de forma v:0:j1: … :jk şi v nu
este în Vi then
(i) adaugă v la Vi;
(ii) if k < m then trimite mesaj v:0:j1: . . . :jk:i fiecărui locotenent
diferit de j1 . . . jk.
(3) For each i:
when Locotenent i nu mai primeşte mesaje el execută ordinul
choice(Vi).
Universitatea Politehnica Bucureşti - Facultatea de Automatică şi Calculatoare

Algoritmul SM(1) pentru cazul a trei generali când


comandantul este trădător.

Comandant
“atac”:0 “retragere”:0

“atac”:0:1
Locotenent 1 “retragere”:0:2 Locotenent 2

Dupa pasul 2 al alg., V1=V2={"atac","retragere"}


Cf algoritm, ambii locotenenti iau aceeasi decizie.
Universitatea Politehnica Bucureşti - Facultatea de Automatică şi Calculatoare

detectare oprire mesaje (pasul 3 al algoritmului)


solutia 1: gestiunea mesajelor primite
•  pentru fiecare secvenţă de locotenenţi j1, ... , jk, k<=m, un
locotenent poate primi cel mult un mesaj de forma v:0:j1: … :jk în
pasul (2);
•  se cere ca locotenentul jk sa trimită v:0:j1: … :jk sau să trimită un
mesaj special care să raporteze că nu va trimite un astfel de
mesaj;
•  fiecare receptor gestionează combinaţiile primite
solutia 2: folosire timer
•  pentru a detecta când nu vor mai sosi mesaje.

Corectitudine
TEOREMA 2. Pentru orice m, Algoritmul SM(m) rezolvă problema generalilor
bizantini dacă există cel mult m trădători.
Universitatea Politehnica Bucureşti - Facultatea de Automatică şi Calculatoare

IC2. Dacă comandantul este loial, atunci fiecare locotenent loial se supune
ordinului transmis de el.

Iniţial Vi = Φ.
(1) Comandantul semnează şi trimite valoarea sa fiecărui locotenent.
(2) For each i:
Pas 1. Comandantul
(A) If Locotenent i primeşte un mesaj de forma v: 0 de la comandant şi
nu a primit încă nici un ordin then trimite ordinul semnat v:0
(i) Vi := {v};
(ii) transmite mesajul v:0:i fiecăruia din ceilalţi locotenenţi.
(B) If Locotenent i primeşte un mesaj de forma v:0:j1: … :jk şi v nu
Fiecare locotenent loial primeşte ordinul
este în Vi then
(i) adaugă v la Vi; v în pasul (2)(A).
(ii) if k < m then trimite mesaj v:0:j1: . . . :jk:i fiecărui locotenent
diferit de j1 . . . jk.
(3) For each i:
when Locotenent Un locotenent neloialmesaje
i nu mai primeşte nu poate falsifica
el execută ordinul
ordinul
choice(Vi). comandantului à un locotenent loial nu poate
primi un alt ordin în pasul (2)(B)
Universitatea Politehnica Bucureşti - Facultatea de Automatică şi Calculatoare

IC1. Toţi locotenenţii loiali se supun aceluiaşi ordin. Analizam


cazul "comandant tradator".
Dacă i primeşte ordinul v în pasul (2)(A), atunci el
Iniţial Vi = Φ. îl transmite lui j în pasul (2)(A)(ii); j îl primeşte
(1) Comandantul semnează (conform proprietăţii
şi trimite valoareaA1).
sa fiecărui locotenent.
(2) For each i:
Dacă i adaugă v la Vi în pasul (2)(B)(i), atunci el trebuie să fi
(A) If Locotenent i primeşte un mesaj de forma v: 0 de la comandant şi
nu a primitprimit
încăunnici
mesaj de forma
un ordin thenv:0:j1: . . . :jk. Dacă j este unul
dintre jr, atunci (cf A4) el trebuie să fi primit deja ordinul v.
(i) Vi := {v};
(ii) transmite mesajul v:0:i fiecăruia din ceilalţi locotenenţi.
Daca j nu este unul din jr & k < m: i trimite mesajul v:0:j1: . . . :jk:i lui j
(B)è
IfjLocotenent i primeşte ordinul
trebuie să primească un mesajv. de forma v:0:j1: … :jk şi v nu
este în Vi then
(i) adaugă v la Vi;
(ii) if k < m then trimite mesaj v:0:j1: . . . :jk:i fiecărui locotenent
diferit de j1 . . . jk.
(3) Daca
For each i: unul din jr & k = m: comandant trădător è cel mult m - 1
j nu este
locotenenţi
when Locotenentsunt trădători.
i nu mai Cel puţin unul
primeşte dintreelj1,
mesaje . . . , jmordinul
execută este loial. El a
choice(Vi).
trimis lui j valoarea v atunci când a primit-o prima dată.
è daca i are v atunci si j are v è toti lt. loiali au aceleasi v-uri
Universitatea Politehnica Bucureşti - Facultatea de Automatică şi Calculatoare

Generalizare: Consensul generalilor bizantini


•  Armata bizantină are mai multi generali
•  Fiecare general i observă inamicul şi comunică observaţia
sa v(i) tuturor celorlalţi generali
•  Fiecare general combină valorile v(1), . . ., v(n) într-o singură
decizie
•  Pentru consens:
–  aceeaşi metodă de decizie
–  aceleaşi valori v(1), . . ., v(n)
Universitatea Politehnica Bucureşti - Facultatea de Automatică şi Calculatoare

Problema
–  nu toţi generalii sunt loiali
–  un general trădător j nu comunică aceeaşi valoare v(j) celorlalţi
Condiţii pentru a aplica metoda specificată:
1.  Fiecare general loial să obţină aceeaşi informaţie v(1) . . . . , v(n).
•  există trădători => un general nu foloseşte direct valoarea v(i)
obţinută direct de la generalul i.
2.  Dacă generalul i este loial, atunci valoarea v(i) transmisă de el
trebuie folosită ca atare de fiecare general loial.
–  decizia nu poate fi "retragere" dacă toţi generalii loiali au trimis
valoarea "atac"
Rescriere (1)
1'. Oricare doi generali loiali folosesc aceeaşi valoare a lui v(i)
(indiferent dacă i este loial sau nu).
Problema se reduce la trimiterea unei valori de la un singur
general catre ceilalţi generali.