Carlos Eduardo Benevides Bezerra CMP157 CMP157 – Programação Distribuída e Paralela Algoritmo...

Post on 07-Apr-2016

215 views 2 download

Transcript of Carlos Eduardo Benevides Bezerra CMP157 CMP157 – Programação Distribuída e Paralela Algoritmo...

1Carlos Eduardo Benevides Bezerra CMP157CMP157 – Programação Distribuída e Paralela

Algoritmo de Peterson para escolha de líderCMP157 – Programação Distribuída e ParalelaCMP157 – Programação Distribuída e Paralela

Algoritmo de Peterson para escolha de líderGary L. PetersonUniversity of Rochester(An O(n log n) Unidirectional Algorithm for the Circular Extrema Problem

ACM Transactions on Programming Languages and Systems, Vol. 4, No. 4, October 1982, Pages 758-762.)

Carlos Eduardo Benevides BezerraUniversidade Federal do Rio Grande do SulInstituto de Informática

2Carlos Eduardo Benevides Bezerra CMP157CMP157 – Programação Distribuída e Paralela

Algoritmo de Peterson para escolha de líder

O problema: eleição de líderO problema: eleição de líder

• Dado n processos em um anel (cada nó comunica-se apenas com seus vizinhos), o problema de eleger um líder é o de escolher um processo máximo (ou mínimo).

3Carlos Eduardo Benevides Bezerra CMP157CMP157 – Programação Distribuída e Paralela

Algoritmo de Peterson para escolha de líderContextoContexto

• LeLann obteve uma solução que requeria O(n²) mensagens

• Chang e Roberts propuseram uma solução com O(n log n) mensagens no caso médio, mas O(n²) no pior caso

• Hirschber e Sinclair: solução com O(n log n) mensagens, bidirecional.

• Hirschber e Sinclair: especulação sobre possível limite inferior de Ω(n²) mensagens no caso unidirecional

• Peterson propõe então uma solução com O(n log n) mensagens, com comunicação unidirecional e otimal.

4Carlos Eduardo Benevides Bezerra CMP157CMP157 – Programação Distribuída e Paralela

Algoritmo de Peterson para escolha de líderCaracterísticasCaracterísticas

• Cada processo tem um valor único

• Tais valores podem ser transmitidos e comparados

• Todos processos são idênticos, exceto pelo seu valor

• O número n de processos é desconhecido a princípio

• Algoritmo “naturalmente assíncrono”– Sincronização é obtida através dos receives bloqueantes

5Carlos Eduardo Benevides Bezerra CMP157CMP157 – Programação Distribuída e Paralela

Algoritmo de Peterson para escolha de líderAlgoritmo básicoAlgoritmo básico

• Processos divididos em:– Active (executa o algoritmo)

– Relay (apenas repassa as mensagens)– Qualquer um destes dois pode detectar o término e ser eleito

• Algoritmo dividido em fases– A cada fase, o número de processos ativos é dividido por 2– Número máximo de fases: log2(n)

• Consiste numa simulação unidirecional de um algoritmo bidirecional:– A cada fase, cada processo i verifica se seu idi é o

Max (idi-1 , idi , idi+1)– Se não for, o processo i sai do modo Active

6Carlos Eduardo Benevides Bezerra CMP157CMP157 – Programação Distribuída e Paralela

Algoritmo de Peterson para escolha de líderAlgoritmo bidirecional - IAlgoritmo bidirecional - I

7Carlos Eduardo Benevides Bezerra CMP157CMP157 – Programação Distribuída e Paralela

Algoritmo de Peterson para escolha de líderAlgoritmo bidirecional - IIAlgoritmo bidirecional - II

8Carlos Eduardo Benevides Bezerra CMP157CMP157 – Programação Distribuída e Paralela

Algoritmo de Peterson para escolha de líderAlgoritmo bidirecional - IIIAlgoritmo bidirecional - III

9Carlos Eduardo Benevides Bezerra CMP157CMP157 – Programação Distribuída e Paralela

Algoritmo de Peterson para escolha de líderAlgoritmo bidirecional - IVAlgoritmo bidirecional - IV

10Carlos Eduardo Benevides Bezerra CMP157CMP157 – Programação Distribuída e Paralela

Algoritmo de Peterson para escolha de líderAlgoritmo bidirecional - VAlgoritmo bidirecional - V

11Carlos Eduardo Benevides Bezerra CMP157CMP157 – Programação Distribuída e Paralela

Algoritmo de Peterson para escolha de líderAlgoritmo bidirecional - VIAlgoritmo bidirecional - VI

12Carlos Eduardo Benevides Bezerra CMP157CMP157 – Programação Distribuída e Paralela

Algoritmo de Peterson para escolha de líderAlgoritmo bidirecional - VIIAlgoritmo bidirecional - VII

13Carlos Eduardo Benevides Bezerra CMP157CMP157 – Programação Distribuída e Paralela

Algoritmo de Peterson para escolha de líderAlgoritmo bidirecional - VIIIAlgoritmo bidirecional - VIII

14Carlos Eduardo Benevides Bezerra CMP157CMP157 – Programação Distribuída e Paralela

Algoritmo de Peterson para escolha de líderAlgoritmo – tid e processos Algoritmo – tid e processos RelayRelay

• Cada processo possui um tid (id temporário)– O valor inicial de tidi é idi (id real)

• A cada fase, cada processo relay i executa:– recebe mensagem m do vizinho de trás

• Verifica se m é o idi (terminaria o algoritmo)

– repassa m ao vizinho da frente

15Carlos Eduardo Benevides Bezerra CMP157CMP157 – Programação Distribuída e Paralela

Algoritmo de Peterson para escolha de líderAlgoritmo – processo Algoritmo – processo ActiveActive

• A cada fase, cada processo ativo i executa:– envia seu tidi ao vizinho da frente

– recebe tidi-1 do vizinho de trás• Verifica se o valor recebido é idi (terminaria)

– envia Max(tidi-1 , tidi) ao vizinho da frente

– recebe Max(tidi-2 , tidi-1) do vizinho de trás• Verifica se o valor recebido é o id i (terminaria)

– se tidi-1 = Max(tidi , tidi-1 , tidi-2),• então: tidi ← tidi-1

• senão: processo i torna-se relay

16Carlos Eduardo Benevides Bezerra CMP157CMP157 – Programação Distribuída e Paralela

Algoritmo de Peterson para escolha de líderExemplo de execução - IExemplo de execução - I

17Carlos Eduardo Benevides Bezerra CMP157CMP157 – Programação Distribuída e Paralela

Algoritmo de Peterson para escolha de líderExemplo de execução - IIExemplo de execução - II

18Carlos Eduardo Benevides Bezerra CMP157CMP157 – Programação Distribuída e Paralela

Algoritmo de Peterson para escolha de líderExemplo de execução - IIIExemplo de execução - III

19Carlos Eduardo Benevides Bezerra CMP157CMP157 – Programação Distribuída e Paralela

Algoritmo de Peterson para escolha de líderExemplo de execução - IVExemplo de execução - IV

20Carlos Eduardo Benevides Bezerra CMP157CMP157 – Programação Distribuída e Paralela

Algoritmo de Peterson para escolha de líderExemplo de execução - VExemplo de execução - V

21Carlos Eduardo Benevides Bezerra CMP157CMP157 – Programação Distribuída e Paralela

Algoritmo de Peterson para escolha de líderExemplo de execução - VIExemplo de execução - VI

22Carlos Eduardo Benevides Bezerra CMP157CMP157 – Programação Distribuída e Paralela

Algoritmo de Peterson para escolha de líderExemplo de execução - VIIExemplo de execução - VII

23Carlos Eduardo Benevides Bezerra CMP157CMP157 – Programação Distribuída e Paralela

Algoritmo de Peterson para escolha de líderAnálise de complexidadeAnálise de complexidade

• Para cada processo que sobrevive a uma fase, pelo menos um outro não sobreviverá

– Seja a seqüência a1, a2, K, p1, p2 (distintos):• K = Max(a2 , K , p1) equivale aa2 < Max(a1, a2, K) e p1 < Max(K, p1, p2)

– Isso faz com que, no mínimo, metade dos processos sejam descartados a cada fase

– Tem-se, então log2(n) fases, no máximo

• Cada processo (tanto relay quanto active), a cada fase, envia duas mensagens– Tem-se então, 2n = O(n) mensagens a cada fase– Total de 2n × log2(n) mensagens, ou seja, O (n log n)

24Carlos Eduardo Benevides Bezerra CMP157CMP157 – Programação Distribuída e Paralela

Algoritmo de Peterson para escolha de líderConclusõesConclusões

• O algoritmo de Peterson consegue melhorar a complexidade de mensagens num anel unidirecional por simular um algoritmo de anel bidirecional.

• Esse mesmo princípio básico (simulação de recursos não disponíveis) poderia ser usado para melhorar outros algoritmos em situações parecidas.

• Conseguiu-se uma complexidade assintótica otimal. Todos as melhorias realizadas posteriormente tem complexidade de comunicação proporcional a (n log n).

25Carlos Eduardo Benevides Bezerra CMP157CMP157 – Programação Distribuída e Paralela

Algoritmo de Peterson para escolha de líderReferênciasReferências

• PETERSON, Gary L., An O(n log n) Unidirectional Algorithm for the Circular Extrema Problem, ACM Transactions on Programming Languages and Systems, Vol. 4, No. 4, October 1982, Pages 758-762.

• LYNCH, Nancy A., SHAMIR, Boaz P., Distributed Algorithms, Lecture Notes for 6.852, Fall 1992; January, 1993.