Professional Documents
Culture Documents
Algoritmul Hirschberg-Sinclair
Alexandru Juncu
332CA
alexandrujuncu@gmail.com
– exemplu de aplicaţii:
• Găsirea Arborelui Minim de Acoperire (liderul este
rădăcina)
• Reconstruirea după pierderea jetonului într-o topoligie
Token Ring
• Modul de 'negociere'
– transmiterea de mesaje între vecini
• Criteriul de alegere:
– depinde de aplicaţie (ex. nodul cu cel mai mare ID)
Algoritmi Paraleli şi Distibuiţi – Prezentări Laborator
Universitatea Politehnica Bucureşti - Facultatea de Automatica si Calculatoare
• Chang-Roberts
• Reguli:
– fiecare proces trimite un mesaj vecinului din stânga cu ID-ul
său
– dă mai departe orice mesaj primit în care ID-ul este mai mare
ca ID-ul propriu
– dacă primeşte un mesaj cu propriul ID se declară Lider
– anunţă alegerea sa cu un broadcast
Complexitatea (în cazul cel mai
defavorabil) :
Σ i = O(n22)
• Iniţial:
– Toate procesele sunt lideri
• Runda 0
– 6 , 7 şi 8 sunt lideri
• Runda 1:
– 7 şi 8 sunt lideri
• Round 2:
– 8 este singurul lider
Exemplu (I)
1
• Faza 0: 8 8
1 8
5 2
//send(id, faza, contor) 2
1
send(id, 0, 1)
5 2
6
3 5 6
4 6
3 3 7
4
7 7
4
Algoritmi Paraleli şi Distibuiţi – Prezentări Laborator
Universitatea Politehnica Bucureşti - Facultatea de Automatica si Calculatoare
Exemplu (II)
• Faza 0: 8
1
dacă 2
(id_primit > id_curent)
5
atunci trimite_raspuns(OK)
6
3
4
7
Exemplu (III)
• Faza 0: 8
1
dacă 2
(am_primit_amble_raspunsuri)
5
atunci devin_lider()
faza_urmatoare()
6
3
4
7
Exemplu (IV)
• Faza 1: 8 8
1 8
5
send(id, 1, 2) 2
5 6
6
3 6
7
4
7 7
Exemplu (V)
5
• Faza 1: 8
1
dacă (id_primit > id_curent) 6 2
8
atunci forward(id,1,1)
5 8
7 6
7
3 5
4
7
6
Algoritmi Paraleli şi Distibuiţi – Prezentări Laborator
Universitatea Politehnica Bucureşti - Facultatea de Automatica si Calculatoare
Exemplu (VI)
• Faza 1: 8
1
dacă 2
(id_primit > id_curent)
5
atunci trimite_raspuns(OK)
6
3
4
7
Exemplu (VII)
• Faza 1: 8
1
dacă 2
(am_primit_amble_raspunsuri)
5
atunci devin_lider()
faza_urmatoare()
6
3
4
7
Exemplu (VIII)
• Faza 2: 8
1 8 8
send(id, 2, 4) 2
5
6
7
3 7
4
7
Exemplu (VIII)
• Faza 2: 8
1
dacă 2
(id_primit > id_curent)
5
atunci trimite_raspuns(OK)
6
3
4
7
Exemplu (IX)
• Faza 2: 8
1
dacă 2
(am_primit_amble_raspunsuri)
5
atunci devin_lider()
6
sfarsit()
3
4
7
Concluzii
Întrebări?
Mulţumesc.