Universitatea Politehnica Bucureşti - Facultatea de Automatica si Calculatoare
Algoritmi Paraleli şi Distibuiţi – Prezentări Laborator
Algoritmul Hirschberg-Sinclair
Alexandru Juncu
332CA
Universitatea Politehnica Bucureşti - Facultatea de Automatica si Calculatoare
Algoritmi Paraleli şi Distibuiţi – Prezentări Laborator
Problema: Alegerea Liderului (I)
• Unde avem nevoie de alegerea unui lider ?– aplicaţii centralizate
• De ce avem nevoie de centralizare ?– un nod coordonează întregul sistem
– exemplu de aplicaţii:
• Găsirea Arborelui Minim de Acoperire (liderul este rădăcina)
• Reconstruirea după pierderea jetonului într-o topoligie Token Ring
Universitatea Politehnica Bucureşti - Facultatea de Automatica si Calculatoare
Alegerea Liderului: ideea generală
• Fiecare nod are trei stări– nedecis– subordonat– lider
• Starea iniţială: toţi sunt nedecişi (sau se consideră toţi lideri)• Starea finală: un singur lider şi ceilalţi subordonaţi
• 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
Algoritmi Paraleli şi Distibuiţi – Prezentări Laborator
Problema: Alegera Liderului (II)
• Diverse situaţii (diverse topologii)
• Diverse nevoi de complexitate
=> diverşi algoritimi
Universitatea Politehnica Bucureşti - Facultatea de Automatica si Calculatoare
Algoritmi Paraleli şi Distibuiţi – Prezentări Laborator
Exemplu de algoritm simplu pentru Inel
• 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 maidefavorabil) :
Σ i = O(n22)
Universitatea Politehnica Bucureşti - Facultatea de Automatica si Calculatoare
Algoritmul Hirschberg-Sinclair (I)
• Optimizează operaţiunea de alegere prin diminuarea numărului de mesaje
• Se aplcă pe inele bidirecţionale
• Alegerea se face incremental
• Algoritmul funcţionează în faze asincrone
Algoritmi Paraleli şi Distibuiţi – Prezentări Laborator
Universitatea Politehnica Bucureşti - Facultatea de Automatica si Calculatoare
Algoritmul Hirschberg-Sinclair (II)
• În faza k, procesul trimite ID-ul său la 2k procese în ambele părţi (mesajul conţine ID şi k )
• Dacă se primeşte un ID ce este mai mare ca propriul ID, se trimite mai departe, altfel se ignoră
• Ultimul proces din lanţ trimite un răspuns spre procesul origine dacă ID-ul său este mai mic decât ID-ul primit
• Răspunsurile sunt întotdeauna date mai departe• Un proces trece la faza k+1 numai dacă primeşte un răspuns
din abele părţi la faza k• Procesul ce primeste propriul ID se declară lider
Algoritmi Paraleli şi Distibuiţi – Prezentări Laborator
Universitatea Politehnica Bucureşti - Facultatea de Automatica si Calculatoare
Algoritmul Hirschberg-Sinclair (III)
• 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
• Sunt cel mult log(N) runde
Algoritmi Paraleli şi Distibuiţi – Prezentări Laborator
Universitatea Politehnica Bucureşti - Facultatea de Automatica si Calculatoare
Exemplu (I)
• Faza 0:
//send(id, faza, contor)
send(id, 0, 1)
12
34
5
6
7
8 8
2
6
7
3
5 8
1
5
3 74
6
2
4
1
Algoritmi Paraleli şi Distibuiţi – Prezentări Laborator
Universitatea Politehnica Bucureşti - Facultatea de Automatica si Calculatoare
Exemplu (II)
• Faza 0:
dacă
(id_primit > id_curent)
atunci trimite_raspuns(OK)
12
34
5
6
7
8
Algoritmi Paraleli şi Distibuiţi – Prezentări Laborator
Universitatea Politehnica Bucureşti - Facultatea de Automatica si Calculatoare
Exemplu (III)
• Faza 0:
dacă
(am_primit_amble_raspunsuri)
atunci devin_lider()
faza_urmatoare()
12
34
5
6
7
8
Algoritmi Paraleli şi Distibuiţi – Prezentări Laborator
Universitatea Politehnica Bucureşti - Facultatea de Automatica si Calculatoare
Exemplu (IV)
• Faza 1:
send(id, 1, 2)
12
34
5
6
7
8 8
6
7
5 8
7
6
Algoritmi Paraleli şi Distibuiţi – Prezentări Laborator
Universitatea Politehnica Bucureşti - Facultatea de Automatica si Calculatoare
Exemplu (V)
• Faza 1:
dacă (id_primit > id_curent)
atunci forward(id,1,1)
12
34
5
6
7
8
8
7
8
57
6
6
5
Algoritmi Paraleli şi Distibuiţi – Prezentări Laborator
Universitatea Politehnica Bucureşti - Facultatea de Automatica si Calculatoare
Exemplu (VI)
• Faza 1:
dacă
(id_primit > id_curent)
atunci trimite_raspuns(OK)
12
34
5
6
7
8
Algoritmi Paraleli şi Distibuiţi – Prezentări Laborator
Universitatea Politehnica Bucureşti - Facultatea de Automatica si Calculatoare
Exemplu (VII)
• Faza 1:
dacă
(am_primit_amble_raspunsuri)
atunci devin_lider()
faza_urmatoare()
12
34
5
6
7
8
Algoritmi Paraleli şi Distibuiţi – Prezentări Laborator
Universitatea Politehnica Bucureşti - Facultatea de Automatica si Calculatoare
Exemplu (VIII)
• Faza 2:
send(id, 2, 4)
12
34
5
6
7
88
7
8
7
Algoritmi Paraleli şi Distibuiţi – Prezentări Laborator
Universitatea Politehnica Bucureşti - Facultatea de Automatica si Calculatoare
Exemplu (VIII)
• Faza 2:
dacă
(id_primit > id_curent)
atunci trimite_raspuns(OK)
12
34
5
6
7
8
Algoritmi Paraleli şi Distibuiţi – Prezentări Laborator
Universitatea Politehnica Bucureşti - Facultatea de Automatica si Calculatoare
Exemplu (IX)
• Faza 2:
dacă
(am_primit_amble_raspunsuri)
atunci devin_lider()
sfarsit()
12
34
5
6
7
8
Algoritmi Paraleli şi Distibuiţi – Prezentări Laborator
Universitatea Politehnica Bucureşti - Facultatea de Automatica si Calculatoare
Concluzii
• Complexitate O(log n) faţă de O( n2)
• Dificultate de implementare relativ redusă
• Număr fix de paşi
Algoritmi Paraleli şi Distibuiţi – Prezentări Laborator
Universitatea Politehnica Bucureşti - Facultatea de Automatica si Calculatoare
Întrebări?
Algoritmi Paraleli şi Distibuiţi – Prezentări Laborator
Top Related