Beruflich Dokumente
Kultur Dokumente
em Sistemas Distribudos
Jucele Frana de Alencar
Dissertao de Mestrado
Instituto de Computao
Universidade Estadual de Campinas
Abril de 1998
Banca Examinadora:
----~-:'<.--
- -- - - - -
CM-00112604-9
2.
Este exemplar corresponde redao final da Dissertao devidamente corrigida e defendida por
Jucele Frana de Alencar e aprovada pela Banca Examinadora.
J
1
15-v-~L
Prof. Dr. Ricardo de Oliveira Anido
A'1
{Orientador)
Dissertao apresentada ao Instituto de Computao, UNICAMP, como requisito parcial para a obteno do ttulo de Mestre em Cincia da Computao.
f ;
'' ! "
. "
;1
-,
Agradecimentos
A Deus por tudo.
A meu orientador Prof. Ricardo Anido pela forma como me auxiliou no desenvolvimento deste
trabalho.
A meu marido Francisco por seu companheirismo, apoio, pacincia e carinho.
A meus pais e irmos pelo incentivo e amor que sempre me deram apesar da distncia.
A minha prima Senilde, seu marido Ricardo e seus filhos que me fizeram sentir em casa e me
proporcionaram o to valioso convvio familiar.
A todos os colegas pelo ambiente de harmonia, pela troca de experincias e pelos momentos de
descontrao.
MUITO OBRIGADA.
Resumo
A principal caracterstica de sistemas distribudos pennitir que vrios computadores, situados
em diferentes localizaes, trabalhem em conjunto para a realizao de uma tarefa, possibilitando o compartilhamento de recursos e a distribuio dos servios. No entanto, devido
dificuldade de se obter uma consistncia global do sistema, o desenvolvimento de algoritmos
distribudos torna-se uma tarefa bastante complexa. Visando facilitar o controle, algoritmos
distribudos necessitam, muitas vezes, de um processador que exera uma funo diferenciada
dos demais numa dada aplicao. Este processador normalmente chamado de coordenador ou
lder, e o problema de eleio de lder consiste em criar um algoritmo distribudo para uma dada
rede de processadores tal que, ao terminar a execuo deste algoritmo um, e apenas um, dos
processadores seja designado lder.
Esta dissertao apresenta um survey englobando as principais solues para o problema
de eleio de lder, analisando suas complexidades de mensagens e tempo e buscando uma
classificao de modo a agrupar os algoritmos baseando-se no modelo do sistema e no princpio
bsico usado no desenvolvimento dos mesmos.
V'
Abstract
The main feature of a distributed system is to allow many computers, at different locations, to
work together performing a common task, making the sharing of resources and the distribution
of services possible. However, dueto the difficulty of acquiring a global view of the system, the
development of distributed algorithms is very complex. Several distributed applications mak.e
use of a distinguished processar to execute some special task. This processar generally is called
coordinator or leader; the leader election problem consista offi.nding a distributed algorithm for
a given network such that, at the end of the execution, only one processar has been declared
leader.
This dissertation presents a survey of the main algorithms for the leader election problem,
analyzing their message and time complexities and attempting to classify the algorithms according to the system model and the basic principie used in their development.
Vll
Contedo
Agradecimentos
Resumo
vi
Abstract
vii
1 Introduo
1.1
1.2
Conceitos Bsicos . . . . . . . . . . . . . .
1.1.1 Algoritmos Distribudos . . . . . .
1.1.2 Algoritmos para Eleio de Lder .
1.1.3 Relao com outros tipos de problemas
Estrutura da dissertao .
2 Algoritmos Clssicos
2.1
1
1
2
4
4
5
6
6
9
12
15
2.5
16
2.3
3.2
Eleio em Hipercubos . . . . . . .
3.1.2
3.2.1
3.2.2
Algoritmo de Singh . . . . .
Algoritmo de Floccbini e Mans
Algoritmo de Te! . . . . .
4 Algoritmos Auto-estabilizantes
4.1 Introduo . . . . . . . . . .
4.2 Eleio em Anel Uniforme .
4.2.1
19
20
20
23
29
30
35
39
39
40
40
Algoritmo de Huang
vili
44
56
5 Algoritmos Probabilsticos
5.1 Algoritmos probabilsticos em redes annimas .
5.1.1 Com conhecimento do nmero de ns da rede .
5.1.2 Sem conhecimento sobre o tamanho da rede .
5.2 Algoritmos probabilsticos em redes no annimas
61
6 Concluso
80
Bibliografia
84
61
62
68
75
Lista de Tabelas
2.1 Tabela com alguns limites inferiores para complexidade de mensagens para o
problema de eleio de lder.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
18
6.1
83
Lista de Figuras
2.1
2.2
2.3
2.4
2.5
2.6
2.7
2.8
7
8
10
11
13
3.1
3.2
3.3
19
3.4
3.5
3.6
3.7
3.8
3.9
3.10
3.11
3.12
3.13
4.1
4.2
4.3
4.4
4.5
Exemplo de funcionamento do algoritmo auto-estabilizante de Dijkstra. O processador destacado o processador base e as setas indicam os processadores que
podem utilizar o recurso. . . . . . . . . . . . . . . . . . . .
Regras do algoritmo de Huang. . . . . . . . . . . . . . . .
Outra forma de escrever as regras do algoritmo de Huang.
Exemplo de funcionamento do algoritmo de Huang..
Exemplo de anel subdividido em segmentos. . . . . . . . .
xi
14
17
18
22
23
24
26
27
28
30
31
33
34
37
38
41
42
42
43
44
4.6
4.7
4.8
4.9
4.10
4.11
4.12
4.13
4.14
4.15
4.16
4.17
4.18
4.19
5.1
5.2
5.3
5.4
5.5
5.6
5. 7
5.8
5.9
5.10
5.11
5.12
46
47
48
49
50
50
51
52
53
54
54
55
59
60
63
64
66
67
69
70
72
73
76
77
78
78
Captulo 1
Introduo
A principal caracterstica de sistemas distribudos permitir que vrios computadores, com localizaes fsicas diversas, trabalhem em conjunto para a realizao de uma tarefa. Isso possibilita
a distribuio dos servios de uma dada aplicao, o compartilhamento de dados e recursos, a
replicao de informao, aumentando a disponibilidade, alm de facilitar a interao entre as
pessoas que fazem uso desse sistema.
Entretanto, o desenvolvimento de software para ambientes distribudos muito mais compl~
xo do que para ambientes centralizados, devido dificuldade de se conseguir uma consistncia
global do sistema acarretada pela distribuio do controle e a autonomia dos componentes. Em
um sistema distribudo no se pode estabelecer um estado global do sistema inteiro.
Muitas vezes, visando facilitar o controle, algoritmos desenvolvidos para ambientes distribudos necessitam de um processador que exera uma funo diferenciada dos demais numa
dada aplicao. Este processador normalmente chamado de coordenador ou lder. Quando
o coordenador corrente falha, o sistema, para continuar em operao, deve escolher um novo
coordenador.
O problema de eleio de lder consiste em encontrar um algoritmo distribudo para uma
dada rede de processadores tal que, ao terminar a execuo do algoritmo um, e apenas um, dos
processadores seja designado lder.
A motivao para este trabalho foi a de se realizar uma ampla pesquisa das diversas abordagens encontradas para a resoluo do problema de eleio de lder em sistemas distribudos.
Esta dissertao trata-se ento, de um survey englobando, alm das solues clssicas, os principais trabalhos publicados recentemente, analisando suas complexidades de mensagens e tempo
e buscando uma classificao de modo a agrupar os algoritmos com base no modelo do sistema
e no princpio bsico usado no desenvolvimento dos mesmos.
1.1
Conceitos Bsicos
Nesta seo so apresentados alguns conceitos relativos a sistemas distribudos que sero utilizados ao se analisar os algoritmos no decorrer da dissertao.
1.1.1
Algoritmos Distribudos
Sistemas distribudos so formados por vrios processadores (tambm chamados ns) interligados atravs de uma rede de comunicao. Um algoritmo distribudo composto de processos
e canais de comunicao entre estes processos. Como, normalmente, para os problemas que
estamos estudando, existe um nico processo executando em cada processador, em alguns casos
usamos o termo processo indicando o processador em que este est em execuo, como se cada
processador estivesse associado a um nico processo. Devemos no entanto salientar que, em
sistemas distribudos, h diversas aplicaes executando ao mesmo tempo e, em cada n, um
conjunto de processos executam concorrentemente.
Os sistemas distribudos possuem caractersticas que influenciam no desenvolvimento de
aplicaes para estes sistemas. Algumas dessas caractersticas so: a topologia da rede, o
mecanismo de comunicao, a uniformidade do sistema, existncia de identificadores para os
processadores, uso de senso de direo e definio do tipo de falhas a serem tratadas.
Os canais de comunicao possuem uma estrutura caracterizando a conectividade da rede.
Esta estrutura chamada topologia de comunicao da rede e especifica como esto ligados os
processadores. Em geral usamos um grafo para representar a rede de comunicao permitindo
uma melhor visualizao das ligaes entre os processadores, onde os vrtices simbolizam os
processadores e as arestas, os canais de comunicao.
As topologias mais comuns so: anel, estrela, rvore, malha, hipercubo e completa. Embora
redes completas muitas vezes paream impraticveis, devido ao grande nmero de conexes,
elas so muito estudadas para estabelecer limites de complexidades para o caso de redes mais
prticas (com menos conectividade).
Todos os trabalhos apresentados nesta dissertao consideram que os canais de comnnicao
so livres de falhas. Isso significa que, em geral, as seguintes propriedades so obedecidas:
No h duplicao de mensagens.
No h corrupo de mensagens.
Os canais de comunicao so FIFO (First In First Out), ou seja, as mensagens transmitidas entre dois processadores so recebidas obedecendo a ordem de envio das mesmas.
O tempo para que uma mensagem enviada seja recebida pode ser indeterminado, porm
deve ser finito.
Se o tempo para que uma mensagem enviada seja recebida for limitado, pod~se afirmar
que se aps o tempo determinado a mensagem no for entregue a seu destino, esta deve
ter se perdido e no ser mais entregue.
Outra importante caracterstica dos sistemas distribudos que eles podem ser sncronos ou
assncronos [IR90J. No sistema sncrono h um relgio global que controla a comunicao e as
aes de todos os processadores, onde o tempo divido em intervalos finitos. Os processadores
iniciam sua execuo no intervalo de tempo t = O. A cada intervalo de tempo t um processador
1.1.2
Eleio de lder um dos problemas mais estudados no campo de pesquisa de algoritmos distribudos devido sua importncia prtica. Assim so gerados diversos trabalhos e pesquisas para
melhorar as complexidades dos algoritmos para os diferentes modelos computacionais.
Como j foi dito 1 o estabelecimento de um lder em um conjunto de processadores deve-se
ao fato de, em certas aplicaes, existirem tarefas especiais que devem ser cumpridas por um
nico processador. Algumas dessas funes especiais que o lder pode exercer so: realizar a
excluso mtua com controle centralizado, manter um grafo de espera global para deteco de
deadlock, repor uma ficha perdida, controlar a entrada e sada de um dispositivo no sistema, ou
servir como coordenador de uma tarefa.
Existem vrias definies para o problema de eleio de lder. Alguns autores descrevem o
problema como consistindo em encontrar um algoritmo distribudo para urna rede de processadores idnticos que, quando o algoritmo terminasse, um e apenas um dos processadores fosse
designado lder e todos os outros soubessem que eles no so lderes. Para outros autores mais
estritos necessrio ainda que todos os outros processadores no lderes tomem conhecimento
da identificao do lder. O principal requisito para algoritmos de eleio de lder de que a
escolha do processador eleito seja nica, ainda que vrios ns estejam tentando eleger-se.
Outro ponto de diferenciao dos autores em relao ao tratamento de falhas, que para
alguns torna-se um fator inerente ao protocolo e para outros de responsabilidade de outro nvel
do sistema. Neste trabalho a maioria dos algoritmos no consideram nenhum tipo de falha. So
descritos alguns algoritmos que consideram falha do processador, mas que no caso de topologia
em anel deve continuar enviando as mensagens recebidas para no quebrar a comunicao.
1.1.3
Os algoritmos de eleio de lder esto relacionados com outros problemas clssicos em computao distribuda: excluso mtua, membership, nomeao em rede annima, construo de
uma rvore geradora para a rede.
O problema de excluso mtua definido como a propriedade de utilizao mutuamente
exclusiva de um recurso compartilhado. Para isso deve-se ter um algoritmo que escolha qual
processo tem o direito de usar o recurso num dado instante. Assim como os algoritmos de
excluso mtua, a eleio de um lder deve escolher um processo nico por vez. No entanto, ao
contrrio da excluso mtua, a eleio de lder no necessariamente se preocupa com a justia
dessa escolha. Justia refere-se ao fato de que um processo pode nunca ser escolhido como
coordenador, mas, no caso de excluso mtua, se um processo pede o uso do recurso, este
dever em algum momento obter o direito de uso.
Outro tipo de problema relacionado o membership problem, que identifica quais processos
esto ativos em um dado grupo. Neste problema, conhecida a identificao de cada processo
e deseja-se saber quais so os processos ativos no momento, ou seja, que ns fazem parte do
grupo. Ao final do algoritmo, todos os processos do grupo devem conhecer quem faz parte do
mesmo. Portanto, se todos possuem uma lista idntica de processos ativos, para escolher um
lder basta nomear o de menor, ou opcionalmente maior, identificao na lista.
Ainda uma outra classe de problemas associada com eleio nomeao em rede annima,
ou seja uma rede onde os processadores no possuem identificadores, que consiste em identificar
de forma nica cada processador da rede. Utilizando um algoritmo de nomeao, torna-se fcil
a tarefa de se escolher um coordenador; apenas necessrio, aps a nomeao, tomar como lder
o processo ao qual foi atribuda, por exemplo, a menor identificao.
O problema de eleio de lder em rede genrica est muito relacionado ao problema de se
encontrar uma rvore geradora da rede atravs de um algoritmo decentralizado. O problema de
construir uma rvore geradora de uma rede consiste em estabelecer um subconjunto de canais de
comunicao que forma uma rvore geradora deste grafo representativo da rede [Bar96, GHS83,
LR86, Tsi93]. Ao se estabelecer uma rvore geradora da rede, o processador raiz da rvore pode
ser escolhido como lder.
1.2
Estrutura da dissertao
Captulo 2
Algoritmos Clssicos
Neste captulo sero apresentados alguns algoritmos clssicos para solucionar o problema de
eleio de lder. Os trs primeiros algoritmos descritos ([LeL77, CR79, Pet82]) consideram que os
processadores esto organizados em um anel unidirecional; assim, cada processador pode enviar
mensagens a apenas um de seus vizinhos, obedecendo ordem estabelecida no anel (horria ou
anti~horria).
entre si.
2.1
Para esta soluo cada processador possui uma identificao nica que no de conhecimento de
todos os outros no anel. A principal estrutura de dados deste algoritmo [LeL77J uma lista que
contm a identificao dos processadores candidatos a lder no momento. O algoritmo funciona
como segue para o processador~:
Pi, ao detectar a falha do lder, cria uma nova lista de candidatos, inicialmente vazia.
Pi envia a mensagem ELEIO(i) ao seu vizinho e adiciona o nmero i sua lista de
candidatos.
Ao receber uma mensagem ELEIO(j}, o processo~ deve executar uma das seguintes
tarefas:
1. Se esta a primeira mensagem ELEIO de que ele tem conhecimento (recebeu ou
enviou), Pi cria uma nova lista com iej. Ele envia a mensagem ELEIO(i}, seguida
de ELEIO(j).
2. Se i'f;j, Pi adicionaj a sua lista de candidatos e passa a mensagem para seu vizinho.
3. Se i = j, ento Fi contm a lista completa do todos os processos candidatos no
sistema. .f'i pode determinar o processo de maior identificao da lista, o qual dever
ser o novo lder.
Variveis:
viz; f f canal do processador vizinho
fim = FALSE; //terminou ou no a eleio
Candidatos= cria( Candidatos); f f lista de candidatos
lfder = -1; f f identificao do lder
if decide eleger-se then begin
limpa( Candidatos);
insere(i, Candidatos);
send ELEIO( i) to viz;
end
while not fim do begin
fim= TRUE;
end
end
Cl =lll
Cl=(l]
C2=(1,1]
"
"
'
C'M=I3.1.1)
"G
'
Cl
'
'
=li)
Cl=(l)
C2={2.1)
0={2.1)
Cl={~.1,1]
C'!= (3,2,1)
OI= {4,3,2,1]
C5{5.4.3.2.1)
C4={4,3,2,1\
C>
'
'
'
Cl={l,5,4,3.2)
C2={2.1.5.4.3J
C3={3,2,l)
01)4,3,2,1)
CS={S.4.l.l.ll
-,..~,.-,.~,-i ~
coe-.
'
!lU!I~ELEI0(4)
Cl={2.1.5.4.3)
o= (3,2,l,S,4)
C4 ~ {4,3,2.1]
C5={5,4,3.1,1)
ElEIO(SJ
Cl- (1,5,4,3,2)
C2d[1,1,5,4,3)
C3(3,2,1,5,4]
01=(4,3,2,1,5)
CS(5.4,3.2.1)
2.2
Este algoritmo [CR79] foi wn aperfeioamento da idia de LeLann. Chang e Roberts procuraxam
desenvolver uma soluo com uma complexidade de mensagens menor, mas para o mesmo modelo
de sistema (anel unidirecional).
No algoritmo cada processador inicialmente marcado como no candidato eleio. Qualquer processador pode comear uma eleio (normalmente quando o processador detecta a falha
do lder) e para isso deve primeiramente rotular-se como candidato, colocar sua identificao em
uma mensagem ELEIO e envi-la ao seu vizinho.
Quando um processador recebe uma mensagem de ELEIO ele compara sua identificao
com a da mensagem. Se a identificao da mensagem for maior, ento o processador retransmite
a mesma mensagem a seu vizinho. Caso contrrio, se ele no for ainda candidato, ele inicia sua
eleio transmitindo a mensagem ELEIO com sua identificao. Ao passar uma mensagem
ELEIO o processador marca-se como candidato.
Se a identificao da mensagem recebida for igual do processador, ele torna-se lder. O
lder rotula-se como no participante e manda uma mensagem ELEITO para seu vizinho no-tificando a identificao do novo lder. Quando um processador que no lder recebe uma
mensagem ELEITO, ele rotula-se como no participante e passa a mensagem adiante, tomando
conhecimento de quem o novo lder.
O algoritmo descrito mais detalhadamente na figura 2.3. No algoritmo so usadas as
seguintes variveis
viz: endereo do canal que liga o processador a seu vizinho;
10
Variveis:
viz; // canal do processador vizinho
11
identificao este toma conhecimento que ::ma mensagem percorreu todo o anel e ele possui a
maior identificao. Portanto, ao final (estgio H) o processador com maior identificao no
anel ser o lder, no caso o processador 5. Na figura no mostrada a mensagem ELEITO que
dever percorrer o anel informando que o processador 5 foi eleito.
'
'
'
12
2.3
O algoritmo de Chang e Roberts apresentou uma melhoria no caso mdio com custo de O(n log n ).
Hirschberg e Sinclair [HSSO] propem um algoritmo que requer, no pior caso, O(nlogn) mensagens, mas utiliza uma topologia em anel bidirecional para comunicao. Hirschberg e Sinclair,
no final de seu artigo, chegam a conjecturar que as solues para anis unidirecionais devem ser
r!(n2 ). No entanto, Peterson [Pet82] apresenta um algoritmo que requer O(nlogn) mensagens
para eleio em anel unidirecional.
Peterson utiliza um esquema engenhoso, na verdade mostrando que um algoritmo para anel
bidirecional pode ser executado em um anel unidirecional. As mensagens enviadas pelo algoritmo so: ELEIO e ELEITO. Inicialmente todos os processadores so participantes da eleio.
Quando um processador deixa de ser participante no significa que este no mais um candidato
a lder, e sim que ele no est mais participando diretamente da deteco do processador com
maior identificao. No entanto, antes de deixar de ser participante um processador enviou pelo
menos uma mensagem ELEIO carregando sua identificao, ou seja, o anel j tomou conhecimento de sua identificao. Um processador no participante apenas retransmite as mensagens
que recebe atravs do anel, at que receba uma mensagem ELEIO com sua identificao
indicando que ele possui a maior identificao dentre os processadores do anel, ou que receba
uma mensagem ELEITO indicando o novo lder.
O algoritmo trabalha em fases e o objetivo reduzir a pelo menos metade o nmero de
processadores participantes a cada fase executada. Cada processador possui um identificador
temporrio (tid) que inicializado com sua prpria identificao. A cada fase um processador
}'i recebe uma mensagem com o tid do processador participante que o antecede no anel, Pj,
e outra mensagem com o tid do processador que antecede Pj. Uma comparao entre os trs
tid1s feita. Se o tid de Pi for o maior dentre os trs ento Fi atualiza seu tid para o valor
de tid de Pj e inicia uma nova fase. Caso contrrio, Pi passa seu estado para no participante.
Esta comparao entre os identificadores de trs processadores consecutivos no anel simula um
bidirecionamento. Em um anel bidirecional um processador continuaria participando da eleio
caso ele possusse um identificador maior que os de seua vizinhos da esquerda e da direita. Na
figura 2.5 o algoritmo descrito com mais detalhes. So uaadas as seguintes variveis:
tid, ntid e nntid: armazenam os id temporrios usados para a comparao entre os processadores;
participante: indica se o processador est ou no participando da eleio;
lder: contm a identificao do lder atual.
if (ntid = i) then
send ELEITO(i) to viz;
if (tid > ntid) then
send ELEIO{tid) to viz;
else send ELEIO(ntU) to viz;
receive M from c;
if M = ELEIO(nnti) then begin
if (nntid =i) then
send ELEITO( i) to viz;
if (ntid;:::: max(tid,nntid)) then tid = ntid;
else participante = FALSE;
end
end
else if M = ELEITO(tid) then begin
if tid 'f= i then
send ELEITO(tid) to viz;
l(der = tid;
fim =TRUE;
end
end
if not (participante or fim) then begin
receive M from c;
if M = ELEIO(tid) and lder= -1 then
if (tid = i) then
send ELEITO( i) to viz;
else send ELEIAO(tid) to viz;
end
else if M = ELEITO(tid) then begin
if ticl o:F i then begin
send ELEITO(tid) to viz;
lder = tid;
end
fi.m=TRUE;
end
end
end
13
14
'
'
+ n,
pois com a eliminao de pelo menos metade dos participantes por fase, temos llog n J fases e a
cada fase so enviadas 2n mensagens, sendo que as outras n mensagens servem para anunciar a
15
2.4
> i).
uma mensagem indicando que P; iniciou uma eleio (j < i). J'i dever enviar uma
resposta a P; para que P; tenha conhecimento de que h um processador com identificao
maior que a sua ainda ativo, e tentar eleger-se.
Quando um processador se recupera de uma falha, ele imediatamente executa o algoritmo
tentando sua eleio. Se todos os outros processadores ativos possurem identificao menor, esse
processador que acabou de se recuperar ser o novo lder. O algoritmo descrito com maiores
detalhes na figura 2.7. As mensagens enviadas pelo algoritmo so: ELEIO (indicando que
o processador que enviou a mensagem deseja eleger~se), RESPOSTA ( gerada quando um
processador recebe uma mensagem ELEIO) e ELEITO {indica o novo lder). No algoritmo
so usadas as seguintes variveis:
1 bully
algorithm
16
estado: pode possuir quatro valores: paasivo (o processador no lder e nem est querendo
eleger-se), eleger-se (o processador acha que o lder falhou e vai tentar eleger-se), elegendose (o processador est tentando eleger-se) ou eleito (o processador o lder).
lder: indica quem o lder atual.
As funes usadas no algoritmo so:
2.5
send ELEIOtoj;
estado = elegendo-se;
inicia_timeout();
end
receive M from j;
if M #- nil then begin
cOBe M of
RESPOSTA:
inicia_timeoutO;
estado = passivo;
ELEIO,
send RESPOSTA to j;
if estado 'f:. elegendo-se then begin
estado = eleger-se;
ELEITO:
lder= j;
desativa_timeout();
fim =TRUE;
end
if timeout(T) then begin
if estado= elegendo-se then begin
for ( j = 1; j <i; j = j + 1) do
send ELEITO to j;
estado = eleito;
fim=TRUE;
end
else
estado = eleger-se;
end
end
17
Estgio 1
18
Estgio 2
Estgio3
EstgioS
I Lim.ite
n(nlogn)
n(nlogn)
n(nlogn)
n(nlogn)
fi(nlogn +lEI)
I modelo
rede completa sncrona
rede completa assncrona
anel unidirecional
anel bidirecional
redes genricas
I Referncia I
[AG91]
(KMZ84]
[PKR84]
[Lyn96]
[Tel94]
Tabela 2.1: Tabela com alguns limites inferiores para complexidade de mensagens para o problema de eleio de lder.
Captulo 3
19
3.1
20
3.1.1
O algoritmo de [LMW86) apresentado nesta seo considera redes completas assncronas com
senso de direo, onde cada processador possui um identificador nico, fazendo uso de um ciclo
Hamiltoniano definido na rede atravs de rtulos nos canais de comunicao.
Inicialmente todos os processadores so ativos at que todos, menos o de maior identificao,
tornam-se passivos. Um processador ativo i, ao receber uma mensagem com uma identificao
j tal que j > i, passa seu estado para passivo. Quando i > j, i envia uma mensagem para que
j torne-se passivo. Cada mensagem contm a distncia de i ao processador j. Os processadores
usam a distncia para determinar qual canal de comunicao devem usar.
Os processadores podem ter trs valores para seu estado: ativo, passivo e eleito. O algoritmo
inicia com todos os processadores enviando a mensagem ELEIO( id, d) aos processadores com
distncia 1, sendo que id a identificao do originador da mensagem e d representa a que
distncia o originador est do receptor da mensagem. Se o processador i est ativo ao receber
a mensagem ELEIO(j, e) e j <i, ento i envia uma mensagem ELEIO diretamente para
j, que est a distncia n- e de i, para assegurar que j passe seu estado para passivo e saia
da disputa. Caao i eBteja ativo e j > i, ento i torna-se passivo. Caso i j seja passivo, ento
i transmite a mensagem ELEIO(j, e') ao processador com distncia n- d (no caso de um
processador passivo, d representa a sua distncia em relao ao processador que o desativou),
onde e' = (n- d +e) mod n. A transmisso de ELEIO(j,e') de um processador passivo i
para um processador ativo k faz com que k comnniqu~se diretamente com j. Assim nenhum
processador enviar mais mensagens a i durante a eleio.
Para assegurar o nmero de menaagens apresentado em [LMW86), foi publicada uma correo
posterior onde foi indicado que o algoritmo deveria operar em fases. Deve-se ento incluir o
nmero de fase na mensagem e os processadores devem receber as mensagens obedecendo
21
(n-1+ L'P)p>O
Em [LMW86] foi demonstrado por induo no nmero de tennos do somatrio que, considerando
i!> ~ ~(1 + v's), temos'
(n -1 + L'P)
p~O
22
outra mensagem
end
end
Figura 3.2: Algoritmo de Loui et ai. para redes completas com senso de direo.
23
'
Rede Completa
'
F""' 3
Fase4
(SJ
~~~~-~-''------13
'
Figura 3.3: Exemplo de funcionamento do algoritmo de Loui et al. para redes completas com
senso de direo.
fase anterior at chegar a um processador ativo. Logo a complexidade de tempo dada por:
p~O
Como p (nmero de fases) logq. n+O(l), temos que a complexidade de tempo O(n+log., n),
ou seja, O(n).
3.1.2
Algoritmo de Singh
24
meira fase.
passo: Inicialmente possui o valor zero. Indica em que passo da segunda fase i est.
25
lder: Se estado= ativo, lder= O. Caso i seja desativado, lder indicar o processador que
continua sendo ativo em ~ ao final da primeira fase.
end
Figura 3.5: Algoritmo de Singh para redes completas com senso de direo (parte 1).
26
end
end
Figura 3.6: Algoritmo de Singh para redes completas com senso de direo (parte 2).
27
28
fim= FALSE;
while estado = passivo and not fim do begin
receive M frotn i[d];
caseM of
ELEIO(!, n,j): if fase= 1 then send ACEITO(l,O) to i[d];
ELEI0(2, n,j): if fase= 1 and lder= O then begin
send ACEIT0(2, O) to i[d];
fase= 2;
end else send INFORME{lder) to i[d];
LDER...ANEL{j): if fase = 1 then begin
lder= j;
fase= 2;
send CIENTE{j) to i[d];
end
ELEITO(j): lder= j;
fim= TRUE;
ACEITO(!, n): skip;
ACEIT0(2, n): skip;
CIENTE(i): skip;
INFORME(j): skip;
end
Figura 3.7: Algoritmo de Singh para redes completas com senso de direo (parte 3).
mximo k/2 processadores ativos. Se i no for desativado no primeiro passo, dever enviar
mensagens para desativar ~[k/ 4) e ~[3 k/ 41 no segundo passo. Quando uns dos processadores
ativos de Ai[k/41 ou Ai[3k/ 4] (haver apenas um ativo ou em ~[k/ 4] ou em ~[ak/ 41) for executar o
segundo passo este dever enviar mensagem de ELEIO a i e ao processador ativo de Ai[k/21 .
Portanto, novamente, os processadores iro competir um contra o outro. Com este mtodo, no
mximo k/~-l processadores ativos entram no passo l..
Considerando des(l, i) = { i[k], i[2k), ... , i[l*k]} temos que, a qualquer momento, se nvel> O e
f as e = 1 ento no existe nenhum processador ativo em des( nve~ i). Admitindo que o algoritmo
inicie no tempo O e que todas as mensagens levem uma unidade de tempo para serem entregues,
necessrio tempo O(n/k) para que o primeiro processador a acordar entre na segunda fase.
Como visto, na segunda fase teremos no mximo k/~-l processadores ativos iniciando o passo
l, ou seja, no passo log k restar apenas um processador ativo. Portanto, o tempo transcorrido
entre um dos processadores entrar na segunda faSe e algum deles se declarar lder O(logk).
Logo, a complexidade de tempo do algoritmo O(logn).
As mensagens enviadas na. primeira fase so ELEIO, ACEITO, LDER..ANEL e CIENTE,
sendo necessrio um nmero O(n/k) de cada wna dessas mensagens par:a que se tenha apenas
um processador ativo restante por sub-anel, levando em conta que wn processador ao desativar
outro herda seus processadores passivos. Assim o nmero de mensagens da primeira fase O(n).
Na segunda fase temos no mximo kf'l!- 1 processadores ativos no passo l, sendo que cada um
destes envia ~- 1 mensagens para desativar outros processadores. Conseqentemente o nmero
de mensagens geradas nesta fase E~o;1k(kj'l!- 1 * 2t- 1 ) = O(klogk). Portanto a complexidade
29
3.2
Eleio em Hipercubos
30
o
1
1 5
o
(a)
(b)
Figura 3.8: Modelos de senso de direo para hipercubos: (a) dimenso (b) distncia.
para hipercubo orientado de acordo com as distncias mostrado em [FM93] no ser apresentado
aqui pois a eleio sempre realizada entre apenas 8 processadores, no dando a possibilidade
de todos competirem. Caso se tenha um hipercubo orientado de acordo com as distncias
possvel fazer a transformao para a orientao baseada na dimenso e em seguida realizar a
eleio. Nesta seo sero apresentados dois algoritmos para eleio em hipercubos assncronos
com senso de direo baseado na dimenso. Estes dois algoritmos, apresentados em [FM93]
e [Tel93], foram desenvolvidos no mesmo perodo mas independentemente e possuem algumas
semelhanas que sero descritas em seqncia. no texto.
3.2.1
Em [FM93} apresentado um algoritmo para eleio de lder em hipercubo com senso de direo
baseado na dimenso, o que significa que os processadores possuem d canais de comunicao
com r6tulos de O a d -1. No entanto os processadores no possuem os r6tulos binrios variando
de O a 2d - 1 normalmente usados em hipercubos.
O algoritmo prossegue em passos. Inicialmente, todos os processadores da rede so ativos. Ao
final do algoritmo todos os processadores so passivos exceto um, que continua ativo e declarase lder. A idia do algoritmo fazer com que a disputa ocorra entre os "sub-hipercubos"
at se chegar ao hipercubo de dimenso d. Inicialmente (no passo O) todos os n hipercubos de
dimenso O (compostos de apenas um processador) disputam dois a dois, ou seja cada processador
envia uma mensagem ELEIO atravs do canal com r6tulo O. Os processadores que tiverem
identificao maior que a recebida na mensagem vencem suas disputas no primeiro passo, e no
passo seguinte devem enviar uma mensagem ELEIO atravs do canal com rtulo 1, para
31
32
ELEIO(i,passo,origem,destino), com origem e destino vazios, atravs do canal de comunicao com rtulo O. Os campos origem e destino na mensagem so seqncias de bits de
tamanho d = log n, indicando rtulos de canais de comunicao. Quando um processador tornase passivo ele armazena a origem da mensagem ELEIO acrescentando o nmero do canal por
onde ela foi recebida na varivel lder, para indicar o caminho at o processador que o desativou.
Para fazer essa juno de origem com o canal c por onde a mensagem foi recebida devemos
substituir o bit c da varivel origem, com valor bc, por 1 - bc. Sempre que um processador
passivo recebe uma mensagem destinada a ele, ou seja com a varivel destino vazia, ele a envia
para o processador que o desativou usando o caminho armazenado na varivel lder. Na figura
3.10 podemos ver o algoritmo detalhadamente. A funo primeiro usada para obter a posio
do primeiro bit 1 em uma seqncia de bits. Quando a funo seq e r aplicada o bit r de
seq com valor br- substitudo por seu complemento br. Na figura 3.11 temos um exemplo de
funcionamento do algoritmo para um hipercubo de dimenso 3.
Para fazer a anlise do nmero de mensagens considere d(p- l,p) como sendo a distncia
mxima entre um processador i desativado no passo k-1 e processador ativo em p que desativou
i em p -1. Claramente podemos ver que d(p -l,p) = p, pois no passo p s foram percorridos
canais de comunicao com rtulos de O a p- 1. Seja F(k) o nmero mximo de canais de
comunicao percorridos para que urna mensagem de ELEIO saia de um processador ativo
i no passo k e chegue at outro processador ativo, que ir competir com i em k. No passo
O, n processadores ativos enviaro mensagens ELEIO que percorrero apenas um canal de
comunicao (F(O) = 1) para chegarem aos concorrentes (processadores ativos em 0). No passo
1 cada uma das n/2 mensagens ELEIO dever percorrer no mximo F(1) = 1 + d(O, 1) =
1 + 1 = 2 canais para sarem de um processador ativo no passo 1, chegar a um processador que
tornou-se passivo no passo O e este envi-la para o processador que o desativou. No prximo
passo as nf22 mensagens devero percorrer no mximo F(2) = 1 + d(O, 1) + d(1, 2) = 4 (uma
mensagem sai do processador ativo no passo 2, chega a um processador que foi desativado no
passo O, este envia uma mensagem para o processador que o desativou no passo O que no
mais ativo pois foi desativado no passo 1, assim a mensagem dever percorrer mais dois canais
para chegar ao processador ativo no passo 2). Portanto no passo puma mensagem ELEIO
dever percorrer, no pior caso,
F(p)
k=l
M~nm.mens.ELEIO+nm.mens.ELEITO~
logn
2P"_ 1 F(p-1)
p=l
logn
p=l
n
'}.P-l'
1+
(p - 1))
2
+ n- 1 ~ n (logn
L 2 + 2P2
p -p )
p=l
+ n -1
+ n-1
33
end
ifi
>j
and p
< d-1
then begjn
passo =passo+ 1;
send ELEIO(i,passo,O, O) to c+ 1;
end
if i < j then begin
estado= passivo;
lder = origem EB c;
end
end else if p >passo then begin
end
end
if estado = passivo then begin
receive M from c;
if M = ELEIO(j,p,origem,destiM) then begin
if destino i: O then begin
l =primeiro{ destino);
destino = destino EB l;
origem = origem EB c;
send ELEIO(j,p,origem,destino) to l;
end else begin
destino = lder,
l = primeiro( destino);
destino = destino EB l;
origem = origem EB c;
send ELEIO(j,p,origem,destino) to l;
end
end
if M = ELEITO(j) then begin
end
end
end
Figura 3.10: Algoritmo de Flocchini e Mans para hipercubos com senso de direo baseado na
dimenso.
34
0der:OOI
'
'
o
Eld.;io(10,1,0,0)
@
Hipercubo com d = 3
Passo O
"~
Elelio(l
Passo 1
0 0
0 0
,z;~oo
0
0
ldor:OOI
Hder:OOI
Ekol
0 0
0 0
llder =001
lrdtr=Oll Hdct=OOI
lfder:OOI
lrder=OOI
,010,0)
Eldo(lll,2,0,0)
Hde:r=OOI
lider=OOI
" (111,2,100,0)
CD--@
ilder=OIO
PaS!lol
Hda=OlO
Hdtr=OIO
Passol
Passol
0 0
0
0
lder =001
lldoor:OOI
llder=OOI
0@
0
0
0@
lfdt<r=OIO
ida=OIO
PaS!lol
O ProctSsador 10 deve
anunciar sua elei -o
Passol
=n
Como
logn P2
logn P
logn l )
p=l
p=l
p=l
" - - "L,- 2P
+ 2L,
" 2P
- +n-1 .
( L, 2P
'I; r
F 1
2P
P=l
1
1
L:-="p=12P
n
35
temos que
M ~ 7n- (logn}'- 3logn -7.
Portanto a complexidade de mensagens O( n). O tamanho de cada mensagem ELEIO
log m + 3log n. Considerando que m seja o maior valor para a identificao dos processadores,
so necessrios logm bits para a identificao do processador, logn bits para a varivel passo e
2log n para a origem e o destino da mensagem. So gastos log n passos para que reste apenas
um processador ativo, o qual em tempo constante divulga sua eleio. No entanto cada passo
pode ter durao de at log 2 n unidades de tempo para que as mensagens sejam difundidas visto
que isto realizado seqencialmente. Portanto a complexidade de tempo O{log3 n) unidades
de tempo.
3.2.2
Algoritmo de Te!
O algoritmo de Tel [Te193) tambm trabalha com a idia de disputa entre hipercubos de mesma
dimenso. No entanto, seu algoritmo diferente do apresentado na subseo anterior em relao
forma de encontrar o processador ativo em um sub-hipercubo. Ele usa a idia de se estabelecer
conjunto de ns que formam linhas e colunas no sub-hipercubo. Cada processador pertence a
uma nica linha e a uma nica coluna, sendo que cada linha e coluna possuem apenas um
processador em comum.
Considerando um hipercubo de dimenso d e os rtulos binrios dos processadores, uma linha
de ndice ud-luld/ 2J definida como sendo o subconjunto de ns {ud-lULd/2JXLd/2J-lxo} e
uma coluna uld/ 2J_ 1 . uo como sendo o subconjunto de ns {xd-l ..xld/ 2Juld/ 2J-luo}. Portanto,
temos 2rd/2l linhas e 2Ld/ 2J colunas. Exemplificando, em um hipercubo de dimenso 3 existem
4linhas (linha 00 ~ {0,1}, linha 01 ~ {2,3}, linha 10 ~ {4,5} e alinhall ~ {6,7}) e 2 colunas
(coluna O= {0,2,4,6} e coluna 1 = {1,3,5,7}). Note que no existe interseco nem entre as
linhas nem entre as colunas (cada n pertence a uma nica linha e nica coluna) e que cada
linha possui exatamente um n em comum com cada coluna. Os rtulos binrios dados aos
processadores do hipercubo no so necessrios para o envio de mensagens s linhas e colunas
apenas os rtulos das arestas so necessrios.
O algoritmo funciona de forma semelhante ao algoritmo de [FM93]. Inicialmente todos
os processadores esto ativos e enviam mensagens ELEIO( id, passo) atravs do canal de
comunicao com rtulo O, onde id a identificao do processador e passo uma varivel que
indica a dimenso (passo+ 1) dos hipercubos que esto competindo (no caso passo= 0). A
eleio ocorre primeiramente entre os sub-hipercubos de dimenso 1, depois entre os de dimenso
2 at que tenhamos um nico processador ativo no hipercubo de dimenso d. Um processador
ao receber uma mensagem com identificador maior que o seu torna-se passivo, caso contrrio
ele sabe que venceu a eleio no sub-hipercubo de dimenso = passo+ 1. Sempre que um
processador tomar conhecimento que venceu a competio no passo p ele deve anunciar isso aos
processadores de sua linha. Isso feito enviando uma mensagem ANNCIO atravs dos canais
com rtulo {L(p+ 1) /2 J-1, .. , 0}. Um processador ao receber uma mensagem ANNCIO atravs
de um canal de comunicao c deve retransmiti-la atravs dos canais com rtulo {c -1, .. , O} e
36
atribuir c a varivel que indica o caminho para o processador ativo. O envio das mensagens de
anncio constri uma rvore geradora que contm todos ns da linha, tendo o processador ativo
como raiz da rvore.
Toda mensagem ELEIO parte de um processador ativo de um sub-hipercubo e deve chegar
a um processador ativo de um outro sub-hipercubo. Quando um processador passivo recebe uma
mensagem ELEIO este deve propag-la para que a mensagem chegue ao processador ativo.
Esta propagao feita para os processadores que pertencem coluna do processador passivo que
recebeu a mensagem ELEIO diretamente de um processador ativo do outro sub-hipercubo.
Como cada coluna possui um processador em comum com cada linha no sub-hipercubo, ao se
propagar a mensagem atravs da coluna, um dos processadores ter. conhecimento do processador
ativo visto que todos os processadores pertencentes a linha do processador ativo o conhecem.
Na figura 3.12 temos o algoritmo de Tel completo. Na figura 3.13 apresentado um exemplo de
funcionamento do algoritmo.
O nmero de mensagens do algoritmo dado pelo somatrio do nmero de mensagens de
cada passo. Em um passo so enviadas mensagens ELEIO e ANNCIO. Cada processador
ativo envia uma mensagem ELEIO por passo que poder percorrer todos os processadores
que correspondem a uma coluna neste passo. As mensagens ANNCIO so enviadas pelos
processadores que venceram suas competies em suas linhas. Portanto temos que o nmero
total de mensagens do algoritmo dado por
M = nm. mens. ELEIO+ nm. mens. ANNCIO+ nm. mens. ELEITO
logn-1
L ;
logn-1
(21Pi'J + 1) +
p=O
p=O
Como, caso p seja mpar, 21P/2J = ~2Pf 2 J2 e 2fP/21 = 2P/2 y'2, no pior caso, temos
E,
logn-1
M=n
= n (1
E.
logn-1 1
)
1 1
2P("22P/'V2+1)+
2P+1(2(p+I)/2 V2-1)+1 .
+'Y'2~/! +'"I;'!..+
'"I;'2lP:;:vz _'"I;' 2P~).
2P
p=O
= n
p=O
p=O
1+
VZ + 2
2
logn-1 ( 1
L
p=O
)p
p=O
1 logn-1 ([)P)
2vz + 2
p=O
37
fim=FALSE;
send ELEIO(i,passo) to passo;
while not fim do begin
if estado = ativo then begin
receive ELEIO(j,p) from e;
if p =passo then begin
ifi > j andp = d-1 then begin
/* d a dimenso do hipercubo */
estado= eleito;
for (l = O; l < d; l + +) send ELEITO( i) to l;
/im=TRUE;
end
ifi
end
if i
<j
then begin
estado = passivo;
trata as mensagens pendentes;
end
end else if p >passo then begin
coloca a mensagem em uma fila de mensagens pendentu;
end
end
if estado = passivo then begin
receive M from e;
caseM of
ELEIO(j,p): if passo= p -1 and lfder '# -1 then
send ELEIO(j,p) to lfder,
ifp=ethen
for (I= [pf2J; l :5 (p- 1);1 + +) send ELEIO(j,p) to l;
else for (l =e+1;1 :5 (p-1);1++) send ELEIO(j,p) to l;
ANNCIO(p): lfder =e;
passo =p;
for (l =e-1;12::: O;l- -) send ANNCIO(p) to l;
ELEITO()): for (l =O; I< e; l + +) send ELEITO(j) to I;
1der =e;
fim =TRUE;
end
Figura 3.12: Algoritmo de Tel para hipercubos com senso de direo baseado na dimenso.
.Cil-' 53
38
~ ~
;!~
'
'
'
''
'io(4,o)
~~
Eleio(JO,l)
lldct~
Eleiio(2,l)
EI~<>(JO,O
c~eilo(lO.l)
Passo 1
!lleiio(8,2)
~
(j)
~'
P-1
(j)
l!dot= o
Eleiio(JQ,2)
@-----@
Passol
(j)
(i)
(i)
Hdor=O
l!di =o
:J!
""'" "'"
(j)
~~-CU
PaS!Io 1
(!)
"f
P-o
C)J
~om
~
-o(W)
ffiperrubo com d = 3
~ 0
llleiio(8,l~
Bleiio(8,0) 8
Ek:iil (10,2)
:l
"""''
O Processador 10 deve
annncla.- ma clclo
Captulo 4
Algoritmos Auto-estabilizantes
Neste captulo apresentamos alguns protocolos auto-estabilizantes para eleio de lder. Na primeira seo descrevemos o algoritmo desenvolvido por Dijkstra em {Dij74], que introduziu o
termo auto-estabilizao em sistemas distribudos. Nas sees seguintes analisamos dois algoritmos para eleio de lder em anel uniforme e um algoritmo para redes genricas. Normalmente,
para o caso de algoritmo auto-estabilizantes as complexidades estudadas so de tempo e espao.
4.1
Introduo
O termo auto-estabilizante, usado pela primeira vez na literatura por Dijkstra [Dij74], refere-se
a um sistema que inicia em um estado qualquer, possivehnente ilegal, imprprio segundo as
regras do sistema e, aps um tempo finito, garantidamente alcana uma configurao legtima,
ou seja, vlida para as definies do sistema. Exemplificando, para o problema de excluso
mtua sabemos que o princpio bsico que deve ser obedecido o de que apenas um processador
utilize o recurso compartilhado por vez. Um estado legtimo desse sistema todo aquele que
obedece esse princpio bsico.
O artigo de Dijkstra descreve um protocolo auto-estabilizante para excluso mtua que
trabalha em um anel unidirecional no uniforme (nem todos os processadores executam a mesma
tarefa). Um processador, denominado processador base, executa um algoritmo diferente do
executado pelos outros processadores.
Cada processador no anel possui uma varivel inteira indicando seu estado. Para facilitar o
entendimento das regras que compe o protocolo1 as seguintes notaes so usadas:
39
40
i- estado_viz)
begin
estado = estado_viz;
"processador usa recurso"
end
A seguir, na figura 4.1, mostrado um exemplo do funcionamento do algoritmo. O estado
de cada processador representado pelo nmero dentro de cada crculo que representam os
processadores. O processador base est destacado e os que esto apontados com a seta so os
que possuem o recurso no momento. Os estados de A a D so ilegais pois mais de um processador
detm o recurso simultaneamente. A partir do estado E o sistema estabiliza-se e apenas um
processador usa o recurso por vez.
Provar a correo de protocolos auto-estabilizantes no uma tarefa fcil [Hua93]. Em
[Dij74], Dijkstra no apresenta a prova de correo de seu algoritmo. Ao observar o algoritmo
podemos notar que o nmero de processadores que possuem o direito de utilizar o recurso
simultaneamente nnnca cresce. Quando mn processador executa a mudana de seu estado, ele
deixa de possuir o direito e pode fazer com um de seus vizinhos passe a ter esse direito. Devido a
assimetria gerada pela presena do processador base, consegue-se que o nmero de processadores
com direito a usar o recurso no permanea sempre o mesmo (caso seja maior que 1), e sim que
v diminuindo gradativamente, at tornar-se constante e igual a 1.
4.2
Nesta seo sero apresentados dois algoritmos auto-estabilizantes em anel uniforme. Os dois
protocolos (Hua93, ILS95] trabalham com anel bidirecional de tamanho primo. O tamanho do
anel deve ser primo para que possa ser assegurada a auto-estabilizao do protocolo.
4.2.1
Algoritmo de Huang
No algoritmo de Huang [Hua93] consideramos um anel de tamanho n, onde n primo. Cada processador possui um rtulo que inicialmente pode ter qualquer valor arbitrrio. Com a
execuo do protocolo, os rtulos dos processadores tornar-se-o distintos, variando no domnio
41
Estado A ~
Estado B
Estado C
'
l
1
Estado D
Estado E
Estado F
3
3
2
Figura 4.1: Exemplo de funcionamento do algoritmo auto-estabilizante de Dijkstra. O processador destacado o processador base e as setas indicam os processadores que podem utilizar o
recurso.
{0,1, ... , (n -1)}, e o protocolo termina. Com isso pode-se 1 por exemplo, arbitrar que o processador com rtulo O ser o lder.
O protocolo apresentado por regras, as quais tm duas partes: a guarda e a mudana de
estado. Se a guarda for verdadeira ento o processador deve mudar seu estado. O estado do
processador representado por seu rtulo. A mudana de estado funo de seu estado antigo
e dos estados de seus vizinhos.
Duas suposies adicionais devem ser feitas. (Al) As regras so atmicas, ou seja, um
processador no pode avaliar a guarda em um instante e mudar seu estado num instante posterior
no qual pode ter ocorrido a mudana de estado de outro processador. (A2) Cada processador
que pode realizar sua mudana de estado o far em tempo limitado. Para implementar Al e A2
h um Controlador Central1 que escalona um processador para realizar a mudana de estado.
Sejam a e b rtulos de dois processadores vizinhos no anel. Para a avaliao da condio na
guarda necessria a definio da funo g(a, b) para indicar o gap de a e b, como sendo:
g(a,b)
1
Central Demon.
n, se
a~
42
b=(b+l)modn
''mudana de estado"
end
end
= y) and ( y = n )) begin
x=1
y=n-1
''mudana de estado"
end
(R2): when ( x
<y
) begin
x=x+1
y=y-1
"mudana de estado"
end
Pela definio acima, os valores dos gaps so inteiros positivos variando entre {1, 2, ... , n }.
O protocolo consiste de duas regras. As regras, apresentadas a seguir, baseiam-se na notao
a(x)b(y)c, onde b o rtulo do processador em considerao; a o rtulo de seu vizinho da
esquerda; c o rtulo de seu vizinho da direita; e x e y no so variveis dos processadores e sim
correspondem a g(a, b) e g(b, c) respectivamente. As regras so apresentadas na figura 4.2, sendo
que estas mesmas regras podem ser rescritas como na figura 4.3. A equivalncia entre as duas
verses das regras pode ser facilmente verificada.
Este protocolo leva. o sistema a um estado onde todos os gaps so iguais a m (O< m < n),
todos os processadores possuem rtulos distintos e nenhuma das regras aplicvel, ou seja, o
protocolo termina. Com o trmino do protocolo pode-se escolher, por exemplo, o processo com
rtulo O como lder.
A figura 4.4 mostra um exemplo para n = 5 e uma configurao inicial igual a
1(1)2(4)1(1)7(1)3(3), onde os nmeros entre parnteses so os gaps. Na figura os rtulos dos
processadores so apresentados dentro de cada crculo que os simboliza e os gaps so representados pela letra g entre os processadores. As setas indicam os processadores que esto aptos a
realizar sua mudana de estado e o processador com o crculo mais espesso ser o que executa
a mudana de estado em um dado instante no sistema. No estgio G temos a estabilizao do
sistema, com todos os gaps com valor 2 e cada processador com uma identificao nica no
43
Estado A
Estado C
Estado B
~a~ ~a~
2
g = 4
= 1
g=3
= 1
g=l
Estado E
Estado F
'
'
o~
g= 2
= 1
g=2
o o'
'
g= 2
= 1
g=2
=2
'=
g=l
g=l
Estado D
"
Estado G
o' o'
'
'
g= 2
= 2
g=2
g=
= 2
g=2
k-1
(
~9i
modn=(b-a)modn.
44
Seguindo o teorema, (k * m) mod n = (a- a) mod n =O. Logo, como n primo, temos k =O
ou k = n, o que contraditrio j que O < k < n. Portanto o algoritmo estabilizar quando
todos os gaps possurem o mesmo valor e todos os processadores tero rtulos distintos. Assim
o processador com rtulo igual a O ser o lder.
A complexidade de tempo do algoritmo igual a O(n). Para armazenar cada rtulo dos
processadores temos a complexidade de espao de O{logn).
4.2.2
Uma outra soluo para o problema de eleio de lder auto-estabilizante em anel uniforme
proposta em [ILS95J. Uma das principais caractersticas desse algoritmo o uso de espao
constante de memria, ou seja, complexidade de espao igual a 0(1). O modelo considerado
o de um anel uniforme bidirecional de tamanho primo. Os processadores so idnticos e
no possuem identificaes. A comnnicao realizada atravs de memria compartilhada.
Existe, como no algoritmo anterior, um escalonador que escolhe os processadores para realizar
o movimento. O movimento uma mudana de estado do processador baseado em seu prprio
estado e no estado de seus vizinhos, sendo que este movimento deve ser atmico.
O primeiro campo do estado de mn processador uma varivel binria rtulo. Um segmento
uma seqncia cont.gua mxima de processadores com rtulos de valores alternados. So
chamados de bordas os processadores finais de um segmento (aqueles que tem processadores
adjacentes com o mesmo rtulo binrio), sendo que, obedecendo o sentido horrio no anel, temos
o processador incio e o processador fim do segmento. Para eliminar segmentos de tamanho
unitrio, um processador muda seu rtulo caso este seja igual ao de seus dois vizinhos. Na
figura 4.5 apresentamos mn anel com 11 processadores subdividido em 5 segmentos. O princpio
bsico de funcionamento para o algoritmo realizar a unio dos segmentos at formar mn nico
segmento no anel sempre com a preocupao de usar espao constante de memria.
fim
mi.Wy
inicio
~fim
fim\"\
f')
in~~%
fim
inicio
iniclo
45
enviando a ficha medida at encontrar o processador marcado como MAIS DISTANTE. Quando
o MAIS DISTANTE recebe a ficha, ele passa o estado de MAIS DISTANTE a seu vizinho
na corrente direo. A ficha ento muda de direo e retoma ao processador borda. Quando
o processador borda recebe a ficha retornado, ele o passa ao processador borda do segmento
adjacente, sinalizando que a vez dele fazer a medida. Este procedimento se repete at que
seja encontrado o final de um dos segmentos, ou seja, o processador borda marcado como mais
distante recebe a ficha.
Ao terminar o protocolo de medida o segmento de comprimento menor (o que chega a seu
processador borda primeiro) muda os rtulos binrios de seus processadores para jnntar-se ao
segmento adjacente, com o qual estava realizando a medio. Assim o nmero de segmentos ir.
sempre diminuir at que reste apenas um segmento no anel e o processador incio do segmento
ser o lder.
A seguir ser descrito em detalhes o algoritmo. Quando em um segmento o protocolo de m~
dio iniciado e monitorado pelo processador fim dizemos que temos uma medio da esquerda,
analogamente com o processador incio temos uma medio da direita. Cada processador possui
um conjnnto de 9 variveis que so compartilhadas com seus vizinhos da esquerda e direita. As
variveis so:
1. rtulo: possui valor binrio O);
2. vez: usada pelos processadores borda para determinar de quem a vez de fazer a
medida (valor binrio 0,1);
3. mud_dir (mudana da direita): possui dois valores sim, caso a varivel rtulo deva
ser mudada com a ocorrncia de uma ficha de mudana vindo da direita, ou no, caso
contrrio;
4. proc_med_esq (estado processador na medio da esquerda): pode possuir um de dois
valores mais_distante ou normal, indicando se o processador est marcado como o processador mais distante na execuo de uma medio da esquerda;
5. est_mecl_esq (estado da medio da esquerda): usada para fazer o movimento das fichas
na medio da esquerda, podendo possuir um de sete valores medio (indica passagem da
ficha de medio), volta (para a passagem da ficha de volta da medio), mudana (indica
passagem da ficha de mudana que faz a troca dos rtulos de um segmento), limpeza
(indica passagem da ficha de limpeza, deve limpar a varivel de qualquer possvel erro na
movimentao das fichas), recebe_volta (para o recebimento da ficha de volta da medio),
recebe_mud.ana (para o recebimento da ficha de mudana) e normal;
6. mud_esq (mudana da esquerda): semelhante varivel mud_dir, agora para o caso de
medio da direita;
7.
semelhante varivel
46
vez; =O;
mud.ir; = no; //mudana da direita
proc_med...esq; = normal; // estado processador na medio da esquerda
est..med...esq; = limpeza; // estado da medio da esquerda
mud...esq; = no; // mudana da esquerda
proc_med.ir,: = normal; // estado processador na medio da direita
47
= r6tulo; then
48
vez.= O;
mud..ir;. = no;
proc..me..eslji = normal;
est..me..esq; = limpeza;
mu..esq; = no;
proc..med..diro = normal;
est_me..dir; = mudana;
end
else if (est..med..diro = recebe..mudana) and (est..med..dir.t =normal) then begin
I I elimina a ficha de mudana
mu_esqo = no;
proc_me..dir; = normal;
est..me..diro =limpeza;
end
if (est..med..diro =mudana) then begin
if (est..me..ire = recebe...mudana) then begin
I I passa a ficha de mudana ao prximo
mu..esq; = no;
prOCJne..dir, = norma1;
est..me..dir; =normal;
end
else if (mu..esqe =no) or (rtuloe
li elimina a ficha de mudana
mud..esq; = no;
proc..me..dir; = normal;
est..me..diri = limpeza;
end
end
49
end
else if (est..med..esq; = recebe..mudana.) and (est...med..esq., =normal) then begin
f/ elimina a ficha de mudana e copia a. varivel vez
vez,= vez&;
mud..dir, = no;
proc_med..esq; = normal;
est..med..esq; = limpeza;
end
if (est...med..esq; =mudana) then begin
if (est..med..esqd = recebe..mudana) then begin
f/ passa a ficha de mudana ao prximo
mud..dir; = no;
proc.:med..esq; = normal;
est...med..esq; = normal;
end
else if (mud..dird =no) or (r6tulod =f:. r6ttdo.,;) then begin
!f elimina. a ficha de mudana.
if (est.:med..dir& =volta) then begin
veZ; = vez,; /f copia a varivel vez
mud..dir, = no;
proc..med..esq, = normal;
est..me..esq; = limpeza;
end
else begin
end
end
end
50
REGRA3B:
if (rtulo; '# rt'Uloa) and (est.med.esqa =limpeza) then begin
est.med..esq; = limpeza;
proc.nted.esq;. = normal;
end
((est.med.dirc~
=F mudana) and
(est.med.dirc~
=F normal))
end
= recebe_volta) and
then begin
mud.esq;. = no;
proc_med...diro = normal;
est.med.dir; =limpeza;
if (est.med.diro
((est.me.dirc~
i: volta)
and
(est.med.dirc~
=F normal))
end
REGRA4B:
if (est.med..esq; = recebe..mudana) and ((est.med..esqe
then begin
mud.dir;. = no;
proc..med..esq, = normal;
est.med.esq; = limpeza;
i: mudana)
end
if (est.med..esq1
end
51
REGRA5A:
if ((rtulo., =rtulo,) and (rtuloo =F rtuloc~)) and
(est..med..esq, =medio) then begin
if (proc.:me..esqe = mais..dista.nte) then begin
I I muda seu rtulo e inicia a passagem da ficha de mudana
rtulo; = not rtulo;;
vez.: =O;
mud...ir; =no;
proc..me..esqo = normal;
est_me..esqo = mudana;
mud..esq; = no;
proc.:me...ir; = normal
esLme..diro = limpeza;
erul
else
I I inicia a passagem da ficha de volta da medio
proc.m,e..esq; = normal;
estJned..esq, = volta;
erul
end
REGRA SB:
if ((rtulo<~ = rtuloo) and (rtulo, =F rtuloe)) and
(estJned..dir; =medio) then begin
if (proc..med..dird = mais_distante) then hegin
I I muda seu rtulo e inicia a passagem da ficha de mudana
rtulo, = not rtulo;;
vez; = O;
mud...ir1 = no;
proc..me..esq. = normal;
est..med..esq, = limpeza;
mu..esq; = no;
proc..med..dir, =normal;
est.:me..dirt = mudana;
end
else
I I inicia a passagem da ficha de volta da medio
proc..med..dir; = normal;
est.:med..dir; = volta;
end
end
_,<;\u:. :~
'~~.
i.-~-----~--_,-'
52
53
end
if (est..med..dir; = volta) and (est..med..dire = recebe_volta) then begin
I I copia o estado do proceBSador vizinho e passa a ficha de volta de medio
proc_med..dir, = proc..med..dir.,;
est..med..dir;: = normal;
end
end
54
REGRASA:
if (rtulo; ;f; rtuloe) and (esLmed..dire =medio) then begin
if (esi.med..dir.; '#limpeza) or (est..med..dirct =limpeza) or (rtulo; = rtuloct) then begin
mud..esq;. = sim;
est..med..dir; =medio;
end
end
REGRA SB:
if (rtulo.; ;f; rtuloc~) and (esLmed..esqct =medio) then begin
if (est..med..esq; '#; limpeza) or (est..med..esqe = limpeza) or (rtulo.; = rtuloe) then begin
mud..dir; =sim;
esLmed..esq; = medio;
end
end
A regra 8 apresentada na figura 4.15 apenas realiza a passagem da ficha de medio. Essa
passagem semelhante . da ficha de limpeza. No necessrio pedir para que a ficha seja
passado, o processador apenas copia a ficha. As duas partes da regra tambm so simtricas.
Na regra 9 (figura 4.16), caso um processador tenha a ficha de medio e seja o processador
incio do segmento ele se marca como lder, caso contrrio ele passa sua varivel lder para o
valor O.
Na figura 4.17 pode ser visto um exemplo de como funciona a juno dos segmentos para
o protocolo de Itkis et al. Os processadores esto representados por seus rtulos binrios e o
processador que possui a ficha apresenta um crculo em torno de seu rtulo. O crculo contnuo
menos espesso indica a ficha de medio, o crculo tracejado representa a presena da ficha de
volta de medio e o crculo mais espesso a ficha de mudana que vem mudando os rtulos dos
processadores realizando a juno dos segmentos.
55
56
ativados (mudem seus estados) O(x) vezes, para que se encontre o final do menor segmento e se
realize a mudana dos rtulos. Logo, para que todos os processadores do anel formem um nico
segmento, so necessrios O(n2 ) passos, com complexidade de espao igual a 0(1).
4.3
V rias tcnicas podem ser empregadas para o desenvolvimento de algoritmos para eleio de lder
em redes genricas (uma topologia qualquer) [Lyn96]. Algumas dessas tcnicas so: a difuso
de mensagens atravs da rede atravs de uma busca em profundidade, a difuso de mensagens
atravs de uma rvore geradora da rede, UBar um sincronizador para simular um algoritmo
sncrono, UBar um mecanismo de deteco do estado global para detenninar a terminao de um
algoritmo assncrono.
Em [DIM97] apresentado um algoritmo auto-estabilizante para redes genricas, annimas
e uniformes. O modelo considerado pelo algoritmo de Dolev et al. consiste de n processadores
denotados por P 1 , P 2 , . , Pn para facilitar a notao, pois em redes annimas os processadores
no possuem identificadores. A comunicao realizada atravs de registradores com escritor
nico e mltiplos leitores. Cada processador considerado uma CPU que executa programas
compostos de passos atmicos. Um passo atmico consiste de uma computao interna seguida
por uma ao de terminao. Uma ao de terminao pode ser uma operao de leitura, escrita
ou "lanamento de wna moeda" (escolher um valor entre dois com a mesma probabilidade). Uma
configurao c do sistema representada por um vetor dos estados de todos os seus processadores.
A ativao dos processadores gerenciada por um escalonador. O escalonador escolhe qual
o prximo processador a ser ativado, usando a informao sobre a execuo at o momento.
Uma execuo do sistema uma seqncia finita ou infinita de configuraes E= (q, c2, ... ),tal
que para i = 1, 2, ... , a configurao Ci+l alcanada a partir de q com um dos processadores
executando um nico passo atmico.
Para o clculo da complexidade de tempo deste algoritmo definida uma unidade de tempo
de execuo chamada round. Dada uma execuo E, definimos o primeiro round de E como
sendo o prefixo minimal de E, E', que contm passos atmicos de todos os processadores do
sistema. Assim a complexidade de tempo de uma execuo E o nmero de rounds de E. Com
essa definio o tempo para completar um round no determinado e depende do escalonador.
Neste protocolo cada configurao do sistema possui um grafo dirigido chamado GPF (grafo
de relao pai-filho). Uma configurao segura do sistema para este protocolo uma configurao cujo grafo no dirigido baseado em G P F uma rvore enraizada que contm todos os
processadores e, para a qual durante qualquer execuo que inicie nesta configurao a rvore
no muda. Ao obter-se uma configurao segura, o processador raiz da rvore eleito lder. O
GPF codificado atravs da varivelpai que cada processador possui. Cada processador pode
ser uma raiz ou ter um pai, que um de seus vizinhos. Se Pi pai de Pj em wna configurao
c, ento existe uma aresta dirigida de Pj para ~- Cada rvore em GPF identificada por
um identificador de rvore aid e a raiz da rvore o nico processador a modificar o valor da
identificao da rvore estendendo com um bit aleatrio. Esse novo valor para aid propagado
57
para o restante da rvore pois os processadores que no so razes copiam repetidamente o valor
de aid de seus pais.
O protocolo consiste de duas fases, chamadas eliminao de ciclos e fuso de rvores. Durante a eliminao de ciclos obtida uma floresta que reduzida a uma nica rvore na fase de
fuso. Pela natureza do modelo do protocolo no h como um processador detectar localmente
se todos os ciclos do grafo foram eliminados. Portanto, pode ser que a fase de fuso das rvores
comece antes mesmo de se eliminar todos os ciclos do grafo.
Para eliminar ciclos um processador quebra a ligao com o pai e torna-se raiz sempre
que toma conhecimento que possui identificao de rvore maior que seus vizinhos ou quando
aumenta a distncia entre ele e a raiz de sua rvore, calculada adicionando um distncia de
seu pai at a raiz.
Para reduzir o nmero de rvores a um deve ser assegurado que em algum momento haver
apenas um ad no sistema e uma nica rvore com esse aid. Um processador raiz descobre
que h outras rvores com o mesmo ad colorindo sua rvore repetidas vezes. Cada colorao
inicia-se com a raiz escolhendo aleatoriamente uma nova cor entre seis valores {O a 7 menos
a cor atual e a cor anterior). A seguir a raiz espera at que todos os seus filhos confirmem
que suas sub-rvores foram coloridas com a nova cor. A deteco da existncia de uma outra
rvore com o mesmo aid realizada atravs da observao da cor de todos os vizinhos. Caso um
processador encontre um vizinho com cor diferente da cor anterior da rvore e da cor atual, ele
toma conhecimento de que este vizinho pertence a outra rvore. Esta informao retornada
raiz. Ao receber esta informao, a raiz estende aid adicionando ao seu final wn bit escolhido
aleatoriamente.
O algoritmo, mostrado na figura 4.18, formado por um lao infinito executado por todos
os processadores. No incio do lao cada processador l o registro de variveis(r;) de todos seus
vizinhos para um conjunto de variveis locais. As variveis que compem o registro so:
adi: identificao da rvore a que Pi pertence;
dsi: indica a distncia de Pi raiz da rvore a que ele pertence;
paii: para disi
=f O,
paii deve conter o ndice do canal que liga Pi a seu pai (um de seus
vizinhos);
cori: um inteiro variando de O a 7 usado para colorir a rvore;
cientei: usada pelo protocolo de sincronizao global;
nai: esta varivel lgica ter valor verdadeiro sempre que um processador tomar conheci-
mento de que existe algum processador com cor diferente tanto da nova cor escolhida pela
raiz quanto da cor corrente, ou seja, existe uma nova rvore no sistema.
A varivel cor ..flnterior, usada pela raiz, contm a cor anterior com a qual a rvore foi colorida.
O grau mximo de um n do grafo denotado por .6.. A funo Estende..flid escolhe um
bit aleatoriamente e o concatena ao final de ad. A funo filho(j) quando executada pelo
58
59
= min.is -1};
end
Procedure Fuso_de.rvores
if (dis, =O) and {Vilfilho(j) => ((cor.:[Jl =cor,) anel ciente, [i])} then
begin
if { 3jl {na;UJ ~TRilE) or (=UJ # =ll then
write (aid,,ciente;) = (Estende..aid(aid;),false);
write cor.: = Escolhe..cor(cor ..anterior, cori);
end
else if (dis; =F O) then
if (cor; =F cor,[pai;]) then
begin
if { 3jl (=UJ # = and ''"<01 #.,.,[pai;]) } then
write na;= TRUE;
el~
'*
na, =TRUE;
write ciente,= TRUE;
end
end
60
(ll~,F,F)
(11,4,1,F,F)
(101, l, 6, F, F)
(11~,3,F,F)
~ (ll,4,l,F,F)
(10l,l,6,F,F)
(110, 2, 2, F, F)
(110, 2, 2. F, F)
(11~,3,F,F)
()_____;O
{110,1,2,T,F)
0---0
(101, l, 6, F, F)
{110,0,2,F,F)
{11~,3,F,F)
~O,l,2,F,F)
{1100, 1, 5, F, F)
{110, O, 2, F, F)
{ll~:~t:.3E!---~!/'
o----=::o
(101, l, 6, F, F)
(110,0,3,F,F)
(110, 2, 2, F, F)
(11" 1 3 F F)
cr--<Q''
~1,2,F,F)
~o
(101, 1, 6, F, F)
~Ql,2,F,F)
(110,1,2,T,FJ
(ll0,0,2,F,F)
{11~,3,F,F)
( ~"~
o~
ll
(11,4,l,F,F)
(110, O, 2, F, F)
(11~,3,F,F)
()_____;O
{110, O. 2, F, F)
~ (11,4, I, F, F)
(110.~,3,F,F)
~1,2,F,F)
(ll~,F,F)
(1100,1,5,F,F)
(1100,2,5,F,F)
~0,1,2,F,F)
()_____;O
(llO, I, 2, T, F)
(110,0,2,F,F)
(1100~,3,F,F)
~
o ..,.____.o
(1100,1,5,F,F)
(HOO.> >.F. F)
0100,2,5,F,F)
''
( ~ "'"''''~
o ..,.____.o
{1100,1, 5, F, F)
(1100, 2, 5, F, F)
Captulo 5
Algoritmos Probabilsticos
As principais razes para o uso de algoritmos probabilsticos para eleio de lder so a necessidade de quebra de simetria, para o caso de redes annimas, e o estabelecimento de probabilidades
iguais de eleio a todos os processadores, para redes no annimas. Devido simetria (todos os processadores idnticos), no h algoritmo determinstico para eleio de lder em redes
annimas. O uso de probabilidade pode comprometer a correo ou a terminao do algoritmo,
mas, no caso de redes annimas, uma forma de construir algoritmos para eleio. Para redes
no annimas, a maior parte dos algoritmos existentes elegem o processador de menor ou maior
identificao como lder. No entanto os algoritmos descritos neste captulo visam garantir a
mesma probabilidade de se tornar lder a todos os participantes da eleio, independente de sua
identificao.
Os algoritmos probabilsticos podem ser classificados em algoritmos Las Vegas e Monte Carla
de acordo com o grau de correo garantido [Tel94]. Um algoritmo Las Vegas um algoritmo
probabilstico que possui uma probabilidade p de terminar, mas sempre que termina garantidamente seu resultado correto. Um algoritmo Monte Carla um algoritmo probabilstico que
garantidamente termina, mas possui uma probabilidade 1- p de seu resultado seja incorreto.
Dentre os algoritmos descritos neste captulo temos exemplos de algoritmos das duas categorias.
5.1
Nesta seo sero analisados dois tipos de algoritmos para redes annllnas: os que- utilizam a
informao de quantos ns existem na rede e os que no tm assegurado o tamanho da rede.
O tamanho da rede utilizado principalmente para ter conhecimento se uma mensagem j
percorreu todos os processadores. A maior parte dos algoritmos descritos nesta seo utilizam
anel wridirecional, no entanto apresentado um algoritmo para redes genricas, desenvolvido
por Matias e Afek.
61
5.1.1
62
Nesta seo so apresentados dois algoritmos propostos em [IR90] para anis annimos com
conhecimento do tamanho do anel, um sncrono e o outro assncrono.
Modelo Sncrono
Nesta subseo apresentado um algoritmo de Itai e Rodeh [IR90] para anel wridirecional
uniforme e annimo, utilizando nmeros aleatrios para quebrar a simetria da rede. Tambm
descrita uma modificao a este algoritmo procurando diminuir o tempo necessrio para a
eleio.
Cada processador Pi da rede possui uma seqncia infinita de nmeros reais aleatrios definida como { s[pi, t]}~ 1 onde O :-:;; s[pi, t] :-:;; 1, fazendo com que a mudana de estado de Pi no
t_simo intervalo de tempo dependa de s[pi, t].
O algoritmo composto de fases de n intervalos de tempo cada. A cada fase temos a ::; n
processadores ativos. Durante uma fase alguns desses processadores tornam-se inativos, at que
a seja reduzido a 1. Ao iniciar o algoritmo (intervalo de tempo t =O) todos os processadores
so ativos, ou seja a= n. No incio de cada fase cada processador ativo torna-se um candidato a
lder com probabilidade a- 1 . Ao final da fase todos os processadores calcularam o nmero c de
candidatos desta fase. Se c= 1 o nico candidato torna-se lder. Se c> 1 ento os candidatos
da fase atual sero os processadores ativos da prxima fase. Se c = O esta fase foi intil e os
processadores ativos da prxima fase continuaram a ser os ativos da fase atual. Para que c
seja calculado todos os processadores candidatos enviam uma mensagem no incio da fase. Esta
mensagem deve percorrer o anel e retornar a sua origem ao final da fase aps n intervalos de
tempo. Cada processador calcula c contando o nmero de mensagens que passaram por ele at
o final da fase. Na figura 5.1 encontra-se uma descrio mais detalhada do algoritmo e na figura
5.2 temos um exemplo de funcionamento do algoritmo para n = 6, onde as letras A, C, I e L nos
crculos que representam os processadores indicam se o processador ativo, candidato, inativo
ou lder respectivamente. No incio da primeira fase (t =O) todos os processadores esto ativos e
alguns decidem tornarem-se candidatos. Os processadores candidatos da primeira fase tornamse ativos na segunda fase (t = n) e dentre estes alguns sero os candidatos da segunda fase. Os
que no foram candidatos na primeira fase tornam-se inativos. Como na terceira fase apenas
um processador torna-se candidato este eleito quando iria iniciar-se a quarta fase (t = 3n).
A probabilidade de se ter c candidatos dentre a processadores denotada por p(a,c). Como
cada processador torna-se um candidato com uma probabilidade a- 1 tem-se que
p(a,
c)~ (
: ) a-"(1-
~)o-o~ (1-
D
0
(a -1)-",
sendo:
( : ) o nmero de combinaes de c elementos dentre um conjunto de tamanho a;
a =n;
c=n;
fim= FALSE;
lder= FALSE;
while not (fim) do begin
receive M fromp;-1;
if (t mod n) =F O then begin
if M =fo nil then begin
send (Mensagem) to Pi+Ii
c= c+ 1;
end
end
else begin
if c = 1 then begin
if candidato then lder = TRUE;
else lder = FALSE;
fim= TRUE;
end
else begin
if c > 1 then begin
a= c;
ativo = candidato;
end
ifativo and sfp.,t]::; a- 1 then begin
candidato = TRUE;
c= 1;
send (message) to Pi+Ii
end
else begin
candidato = FALSE;
c= O;
end
end
end
end
63
t=
Incio do Algoritmo
O(incio)
A
A
t = 2n (incio)
t=O(fim)
64
t=n(infcio)
t=n(fim)
c~
c""'
A:/
Fim do Algoritmo
t= 2n (fim)
t= 3n
Figura 5.2: Exemplo de funcionamento do algoritmo sncrono de Itai e Rodeh com n conhecido.
65
Modelo Assncrono
Ainda em [IR90] proposto um algoritmo assncrono, ou seja, semcontrole global de tempo
que ser descrito nesta subseo. O algoritmo constitui-se de duas fases: seleo e verificao.
Inicialmente todos os processadores esto ativos. A fase de seleo composta de c passos, sendo
que um passo consiste em o processador escolher O ou 1, receber a mensagem de seu precedente
e decidir se tornarse ou no inativo. Um processo inativo apenas transmite todas as mensagens
por ele recebidas a seu vizinho no anel. Cada processador ativo executa o seguinte passo c vezes
ou at tornar-se inativo: escolhe um valor O ou 1, cada um com probabilidade e envia a escolha
ao prximo processador ativo. Um processador ativo tornar-se inativo caso sua escolha tenha
sido O e o processador ativo que o precede tenha escolhido 1.
Ao tenninar a fase de seleo pelo menos um processador pennanece ativo, pois para tornarse inativo o processador deve escolher O, mas seu precedente deve escolher 1. No entanto,
faz-se necessrio verificar se apenas um processador permanece ativo (o processador lder), caso
contrrio deve ser executada novamente a fase de seleo. Na fase de verificao cada processador
ativo envia um contador que dever percorrer os n processadores do anel para certificar-se de
que o nico ativo. O algoritmo mostrado na figura 5.3. Uma iterao do algoritmo
exemplificada de maneira simples na figura 5.4, sendo que Cj representa o contador enviado pelo
processador Pi que continua ativo ao final da fase e nCj conta o nmero de mensagens contadores
que Pi recebeu.
A seguir mostraremos uma razo intuitiva para a complexidade de mensagens ser de
O( n log n) bits para c = 5log n. A probabilidade de um processador tornar-se inativo de
~
para este processador escolher O e ~para seu precedente escolher 1). O nmero esperado
de processadores inativos ao final do primeiro passo de n/ 4, pois todos os n processadores
ativos possuem probabilidade de tornarem-se inativos. Em geral, a cada passo um quarto
dos processadores ativos tornam-se inativos, ou seja, a cada passo restam ~ dos processadores
ainda ativos. De acordo com as probabilidades, so necessrios log 413 n passos para que se tenha apenas um processador ativo. Escolhendo c> 2log4/ 3 n ~ 4,81logn temos uma pequena
probabilidade de que mais de um processador esteja ativo ao final dos c passos.
Como cada passo pode levar at n unidades de tempo para ser executado, pois uma mensagem
pode ter que percorrer todo o anel, a complexidade de tempo da fase de seleo O(nlogn) e
da fase de verificao O(n), totalizando um tempo igual a O(nlogn).
O nmero de bits transmitidos a cada passo n, j que cada processador envia apenas uma
mensagem com o bit escolhido. Portanto, na fase de seleo a complexidade de mensagens
de cn = O(nlogn) bits. Na fase de verificao cada um dos a processadores ativos enviam um
contador que deve ter tamanho log n para percorrer o anel tendo ento, um custo an log n. Como
esperado que a seja 1 o custo de O( n log n). Logo, a complexidade de mensagens do algoritmo
O(nlogn) para as duas fases, com uma baixa probabilidade de repetio do algoritmo.
(!
66
Procedure Inicia()
begin
iniciou = TRUE;
Escolhe (meuvalor); I I O ou 1
send (meuvalor) to Pi+li
c= 5logn;
II
end
FASE DE SELEO
Inicia{);
while not fim do begin
receive M from Pi-ti
if M =VALOR( valor) then
if not ativo then
send VALOR(valor) to Pi+li
else
if valor = 1 and meuvalor = O then
ativo = FALSE;
else
if c > 1 then begin
Escolhe{meuvalor); I I O ou 1
send VALOR(meuvalor) to Pi+ti
c=c-1;
end
else begl.n
II
end
67
IFase de Seleo ~
Passo= 2
Passo= 1
Infcio
o o o
1
Ir rl
'/
IFase de Verificao ~
Cl =C2 =ca = 1
Incio
Passo= 3
Ir
Passo= c
~~O~ tO',1
"'
ct=C2=Ca=2
"'
Ct=C2=C3=3
o
Ct=C2=ca=5
Ct=C2=CJ=6
5.1.2
68
Nesta subseo apresentamos os algoritmos para eleio de lder em redes annimas onde no
se conhece o nmero n de ns da rede. Como demonstrado em [m.90), no h algoritmo com
deteco de terminao para descobrir o tamanho da rede que tenha probabilidade de erro menor
que 1. Portanto, nesta seo sero apresentados algoritmos que usam o conhecimento dos limites
de n e um algoritmo onde a terminao no pode ser detectada.
Modelo Sncrono
O algoritmo proposto por ltai e Rodeh [IR90] apresentado nesta subseo utiliza anel uniforme
unidirecional com conhecimento dos limites de n, N ::; n < 2N. Este algoritmo possui duas
fases: seleo e verificao.
A fase de seleo pode ser composta de vrios passos, cada uma com durao de 2N -1 intervalos de tempo, at que um ou mais candidatos a lder sejam escolhidos. No primeiro intervalo
de tempo do passo cada processador escolhe um valor E {0, 1}, sendo que a probabilidade de se
escolher 1 qfn. Um processador que escolha o valor 1 chamado de candidato. Cada candidato
deve ento enviar uma mensagem no primeiro intervalo de tempo de cada passo. Durante os
2N - 1 intervalos de tempo restantes para o trmino do passo toda mensagem recebida por um
processador que no seja candidato deve ser retransmitida. Se nenhum processador escolher 1,
passaro os 2N - 1 intervalos de tempo e nenhuma mensagem ser transmitida, portanto todos
tero conhecimento de que no houve seleo de nenhum candidato a lder e um novo passo da
fase de seleo ser executado. Caso contrrio ser executada a fase de verificao.
Duas sub-fases compem a fase de verificao. Durante a primeira sub-fase os processadores
candidatos enviam uma mensagem no primeiro intervalo de tempo da sub-fase, mas no retransmitem as mensagens recebidasj os demaisprocessadores apenas retransmitem todas as mensagem
que recebem. Esta sub-fase tem durao de N -1 intervalos de tempo. Se um nico candidato
foi escolhido, uma nica mensagem ser enviada e esta no percorrer todo o anel durante esta
sub-fase, pois n > N -1. Logo o candidato no receber mensagem alguma. No entanto, se h
mais de um candidato, sendo n ::; 2N -1, existem dois candidatos com distncia ::; N- 1 entre
eles, e pelo menos um tomar conhecimento de existncia de mais de um candidato. Na segunda
sub-fase de verificao, apenas os candidatos que sabem que existe mais de um candidato enviam
mensagem e no retransmitem as mensagens recebidas, os demais processadores apenas retransmitem as mensagem que chegam at eles. Esta sub-fase tem durao 2N -1 para assegurar que
se houver mais de um candidato todos os processadores do anel tero conhecimento deste fato e
reiniciaro uma nova eleio. Caso haja apenas um candidato no anel nenhuma mensagem ser
enviada na segunda sub-fase de verificao, portanto todos sabero que h um nico candidato
e este ser o lder. A descrio mais detalhada do algoritmo mostrada na figura 5.5.
A cada invocao do algoritmo a complexidade de mensagens em bits da fase de seleo
de n bits, pois, apesar de poderem existir vrios passos na fase de seleo, somente quando um
ou mais candidatos so escolhidos, ou seja no ltimo passo, que h comunicao. Na primeira
sub-fase de verificao so gastos N- 1 bits em mensagens caso haja apenas um candidato,
69
sub-fase =O;
nmsg =O;
candidato = FALSE;
fim= FALSE;
while not fim do begin
if fase = 1 then begin
FASE DE SELEO
if t = O then begin
Escolhe(id);
if id = 1 then begin
candidato = TRUE;
send (msg) to Pi+Ii
end
else
candidato = FALSE;
end
else begin
receive (msg) fromp1-1j
ift < 2N- 2 then begin
if msg i= nil and not candidato then
begin
nmsg = nmsg + 1;
send (msg) to Pi+li
end
end
else begin
if msg =f. nil then
nmsg = nmsg + 1;
if nmsg > O or candidato then begin
fase= 2;
sub_Jase = 1;
t =O;
end
else
t =O;
end
end
end
else if fase = 2 then begin
FASE DE VERIFICAO
if sub-fase = 1 then
begin
if t = O then begin
if candidato then
send (msg) to Pi+li
nmsg =O;
end
else begin
receive (msg) from Pi-ti
if msg =f. nil then
if candidato then
nmsg = nmsg + 1;
else send (msg) to Pi+I;
ift=N-1 begin
sub_fase = 2;
t =O;
end
end
end
else if sub_fase = 2 then begin
if t = O then begin
if candidato and nmsg > O then
send (msg) to Pi+Ii
end
else begin
receive (msg) from Pt-ti
if msg i= nil then begin
send (msg) to Pi+Ii
nmsg = nmsg +1;
end
ift = 2N -1 then begin
if nmsg = O then begin
if candidato then l(der = TRUE;
else lder = FALSE;
fim =TRUE;
end else begin
fase= 1;
t =O;
nmsg =O;
end
end
end
end
t=t+l;
end
n < 2N.
70
N =3
IFase de Seleo I
Intervalo = 4
1
!Fase de Verificao~
ISubfiule 11
Intervalo = O
Intervalo = 1
o OI
ISubfiule 21
Intervalo = O
Intervalo = 1
Intervalo = 3
1
'\:
Figura 5.6: Exemplo de uma iterao do algoritmo sncrono de ltai e Rodeh com N
n < 2N.
71
Modelo Assncrono
Nesta subseo so apresentados trs algoritmos: o deItai e Rodeh [IR90] (wna modificao ao
algoritmo da seo 5.1.1), o algoritmo proposto por Matias e Afek [MA89, AM94] onde nada
se sabe sobre n e o deItai [Ita90] que preocupa-se com o espao de armazenamento necessrio.
Em [IR.90J, o algoritmo proposto para redes annimas com N :::; n < 2N consiste no algoritmo
assncrono da seo 5.1.1 com uma modificao na fase de verificao, onde a mensagem dever
percorrer wna distncia de 2N - 1, ao invs de n, para assegurar que esta passou por todos os
processadores do anel pelo menos uma vez, pois n no conhecido. Caso algum processador
receba mais de duas mensagens na fase de verificao este ter conhecimento de que mais de um
lder foi escolhido, devendo passar esta informao aos outros para que wna nova eleio seja
iniciada. A complexidade de mensagens em bits do algoritmo de O(nlogN + (2N -1) logN),
ou seja, O(nlogn) bits.
Em [Lav95] encontramos a anlise do um algoritmo proposto por Matias e Afek em
[MA89, AM94]. Este um algoritmo simples para eleio em rede annima sem nenhum conhecimento sobre topologia e tamanho, mantendo a eficincia da complexidade de mensagens. O
algoritmo possui uma probabilidade de erro e < 1, sendo ainda mna forma eficiente de construir
uma rvore geradora da rede. O algoritmo dividido em dois passos. Primeiramente, cada
processador escolhe uma identificao id aleatoriamente. Em seguida, essa identificao deve
ser difundida pela rede. Ao receber uma identificao id, cada processador deve verificar se nenhuma identificao maior ou igual a esta j foi recebida. Caso esta seja a maior, o processador
deve repass-la a todos os seus vizinhos e marcar a origem de tal mensagem como sendo seu pai
(pai = origem da mensagem), construindo assim a rvore geradora. Caso contrrio, a mensagem
ignorada. Ao final todos conhecero a maior identificao id na rede e teremos uma rvore
geradora cuja raiz o lder.
O ponto principal do algoritmo a escolha de id de tal forma que a probabilidade de se ter
uma nica identificao mxima e poucos id1s diferentes seja alta. A identificao i~ de um
processador~ deve ser composta por dois nmeros ti e Si Para escolher ti Pi lana uma moeda
no viciada at obter Cara pela primeira vez, e ti o nmero de lances realizados. O nmero Si
72
escolhido aleatoriamente dentro do intervalo [l..d], onde d = O(rlogr) e r=~ Na figura 5.7
o algoritmo mostrado de forma detalhada.
Algoritmo de Matias e Mek
Variveis:
fim= FALSE;
Escolhe( meuid);
max = meuid;
pai= O;
send ( meuid) to todos os vizinhos;
while not fim do begin
receive M from c;
if M = ID(id) then begin
if id > max then begin
max=id;
pai= c;
send (id) to todos os vizinhos;
end
end
end
Procedure Escolhe(id)
begin
t = 1;
lance a moeda;
while moeda = Coroa do
begin
lance a moeda;
t=t+l;
end
s = random(l,d);
id=(t,s);
return id;
end
5.1.
Algoritm~
73
o
o
Figura 5.8: Exemplo de funcionamento do algoritmo de Matias e Afek para redes annimas
genricas.
Em [MA89] demonstrado que o algoritmo garante os itens abaixo:
1. Apesar de no haver deteco de terminao, em algum momento todos os processadores
tero o mesmo mximo, que corresponde maior identificao dentre todas as escolhidas
pelos processadores. A partir deste momento nenhuma mensagem ser gerada e o algoritmo
pra.
2. Usando o mtodo definido para a escolha das identificaes e com a probabilidade de erro
, uma nica identificao com valor mximo gerada. Portanto, teremos um nico l'der
na rede e a construo da rvore geradora.
3. Com base na probabilidade de erro , a complexidade de mensagens de O(mr lognlogr)
(m o nmero total de canais de comunicao), onde cada mensagem tem tamanho
O(loglogn + logr) bits. A complexidade de tempo O(D), onde D o dimetro da
rede.
Outro algoritmo assncrono para redes annimas que usa probabilidade o apresentado
por Itai em ~ta90J, que considera os processadores organizados em um anel unidirecional com
tamanho desconhecido. Este algoritmo usa algumas idias do algoritmo de Matias e Afek [MA89,
AM94], como escolher um nmero aleatrio e vencer quem tiver o maior nmero. Um processador
pode mudar seu estado de acordo com uma mensagem recebida, ou seja, pode ser que um
74
processador que dizia-se lder, mude para no lder dependendo da mensagem. As mensagens
que so enviadas sero recebidas em um tempo finito e a ordem FIFO mantida nos canais de
comunicao.
A grande preocupao do autor nesse artigo foi em relao ao espao de armazenamento,
procurando utilizar uma memria limitada e de tamanho 0(1), ou seja, complexidade de espao
igual a 0(1). No entanto o algoritmo possui uma probabilidade de erro igual a 0(1/n) no
resultado da eleio, pois possvel que mais de um processador seja eleito.
A mensagem que inicia o algoritmo designada iniciar. Os processadores que recebem
uma mensagem iniciar so chamados reis. Cada rei escolhe um identificador id aleatrio, que
enviado atravs do anel em uma mensagem M(i). O tamanho de id tambm aleatrio,
havendo uma probabilidade 2-i de que o tamanho seja i.
Ao receber uma mensagem M(md), o rei compara mid com seu prprio id. Se mid > id, a
mensagem continua atravs do anel. Se mid < id, a mensagem no mais passada adiante. E
se mid = id ento o rei assume que seu prprio id retornou, ele possui a maior identificao e
deve ser nomeado lder. No entanto, esta suposio pode ser errada, pois um outro processador
pode ter escolhido o mesmo id e possvel que haja mensagens maiores que ainda no chegaram.
Portanto, o lder continua participando da eleio e conseqentemente pode vir a deixar o estado
de lder.
O problema do espao de armazenamento ser limitado resolvido da seguinte fonna: se
o d escolhido por um rei Pr o nmero binrio [ai. ... , ai], Pr armazena seu identificador em
um conjunto de processadores Jl,. = {pr, ... ,Pr+l}, que chamado de seu reino, isto , a 1
armazenado no processador Pr, a 2 em Pr+l a1 em Pr+i-l O ltimo processador do reino,
Pr+l , possui o smbolo "#"indicando que este processador o ltimo do reino. Para simplificar,
mostraremos aqui apenas a verso do algoritmo que considera reinos disjuntos. Note que a
comparao dos identificadores feita de forma distribuda, cada processador do reino compara
a parte que ele possui do identificador com a mensagem que receber.
Quando o reino Rr = Wr, ... ,Pr+l} obtm a mensagem id! = [b1, ... , bq] ele a compara com
seu prprio id. Se os identificadores so iguais e nenhum id maior conhecido, ento o ltimo
processador do reino, Pr+l torna-se lder se id < id' (isto , l < q ou l = q e id < id! enquanto
nmeros binrios, ou seja, Ear2l-r <E br2l-r) ento id' continua a passar pelo anel. Assim o
id mximo somente poder parar quando retornar ao seu originador.
As variveis usadas no algoritmo pelo processador Pi so basicamente duas idi que contm
o bit i da identificao gerada pelo reino ou o valor # indicando que o ltimo processador do
reino e memi (0,1 ou#) utilizada para a transmisso das mensagens. Na descrio detalhada
do algoritmo apresentada na figura 5.9, temos ainda algumas variveis de controle: transmite
(usada pelo ltimo processador do reino para saber se a primeira mensagem TRANSMITE
recebida), investiga {usada para que um processador saiba se j. recebeu alguma mensagem
INVESTIGA ou no), ganhou (indica se o reino ganhou a comparao) e lder (indica que
o processador encontrou uma. identificao igual a sua e acredita ser o lder). As mensagens
enviadas so: ESGOLH E (iniciahnente para escolher a identificao do reino), T RANSMIT E
(para que a identificao percorra o reino para que seja transmitida pelo anel), INVESTIGA
75
(transmite a identificao de um reino a outro para que seja realizada a comparao das identificaes) e COMPARA (percorre o reino comparado os bits da identificao).
Como vimos a memria interna necessria a cada processador Pi de tamanho constante,
assim como as mensagens. No entanto o nmero de mensagens alto, pois cada mensagem
transmite 0(1) bit e a identificaes dos reinos de tamanho O{logn) devem percorrer todo o
anel.
O tamanho mximo esperado para id logn e temos um.aprobabilidadep > 1-1/n de que o
maior id seja nico {lembre-se da probabilidade de erro do resultado igual a 1/n). Suponha que
k processadores recebam a mensagem iniciar, esperado que cada um dos k processadores escolham id's de tamanho O{logk). Portanto a complexidade de mensagens esperada O(knlogk),
ou seja, O(n2 logn) bits.
5.2
A seguir, nesta seo, so mostrados algoritmos que garantem probabilidades iguais de vitria
a todos os processadores que participam da eleio, independente de seus identificadores. Sero
apresentados algoritmos propostos em [Cha90] e [VAD94].
No artigo [Cha90], Chang trata da importncia de se escolher um lder dando uma mesma
probabilidade de vitria a todos os competidores. O esquema proposto baseado em uma
licitao onde cada participante envia a todos os outros um valor escolhido aleatoriamente. O
processador de eleio consiste em decidir quem ser o lder baseado nos valores escolhidos.
demonstrado que o algoritmo de eleio, juntamente com o intervalo de nmeros possveis,
garante que todo participante tem probabilidade 1/n de ser eleito. Um outro artigo [VAD94]
apresenta a mesma soluo bsica de [Cha90] para garantir probabilidade igual para todos os
participantes de vencer.
O algoritmo no garante justia (isso no quer dizer que no esteja correto) no caso de existir
processador malicioso. O problema que um processador pode trapacear e sempre garantir sua
eleio, bastando para isso esperar receber as escolhas de todos os outros processadores antes de
fazer sua escolha. Para um algoritmo de eleio de lder estar correto deve-se garantir que um e
apenas um processador seja eleito. No caso deste algoritmo com a aplicao da funo (mod n)
isto garantido.
Como a preocupao do algoritmo garantir que todos os processadores tenham a mesma
chance de vencer, o custo nem discutido no artigo, mas como todos os processadores devem
enviar mensagens a todos os outros a complexidade de mensagem O(n2 ), um cUBto pior em
relao a vrias das solues estudadas.
Considere uma rede no annima com um conjuntoS= {Po,PI, ... ,Pn-1} de processadores,
onde a comunicao realizada atravs de troca de mensagens. Em [Cha90] e [VAD94] apresentam o mesmo algoritmo bsico, onde para escolher um lder entre os n processadores, cada
um deve selecionar um valor para competir e envi--lo aos demais processadores. Ao receber os
valores escolhidos pelos outros processadores, cada processador, para descobrir quem venceu,
76
transmite= FALSE;
investiga = FALSE;
ganhou = FALSE;
lder = FALSE;
if receive iniciar from Pi-1 then begin
rei= TRUE;
id; = Escolhe();
send ESCOLHE(id;) to Pi+ti
send TRANSMITE( "fim") to Pi+ti
end else rei = FALSE;
while TRUE do begin
receive M from Pi-ti
caseM of
ESCOLIIE(a)o
mem; =a;
if decide ser o ltimo then id; = "#";
else begin
id; =Escolhe();
send ESCOLHE(id;:) to P+ti
end
TRANSMITE(a):
if id; = "#" then begin
if not transmite then begin
send INVESTIGA{"#") to P+ti
transmite = TRUE;
end
send lliVESTIGA(mem,:) to P+ti
if a i= ''fim" then mem, = a;
else send INVESTIGA( "fim") to P+ti
end
else begin
send TRANSMITE(mem.;) to Pi+ti
if a i= "fim" then mem, = a;
else send TRANSMITE( "fim") to P+ti
end
lliVESTIGA(a):
if rei and a = "fim" then begin
if mem;: = id;: then
send COMPARA("=") to Pi+ti
else if mem,: L id;: then
send COMPARA("-") to Pi+ti
else
send COMPARA("+") to Pi+li
send INVESTIGA(mem.;) to Pt+ti
end else begin
1f not investiga then begin
mem;: = a; end
COMPARA(a)o
if id; = "#" then begin
if a =f. "fim" then
if a = "=" then begin
if id; = mem; then begin
lder = TRUE;
ganhou = TRUE;
end else begin
lder = FALSE;
ganhou = FALSE;
end
end else if a = "+" then
if id; = mem.; then
ganhou = TRUE;
else begin
lder = FALSE;
ganhou = FALSE;
end
else ganhou = TRUE;
else
if mem; = "#" then
send COMPARA( "fim") to Pi+ti
else
if a = "=" then begin
if mem; = id;: then
send COMPARA("=") to Pi+Ii
else if mem;: > id;: then
send COMPARA("-") to Pi+ti
else
send COMPARA("+") to P+ti
else
investiga = TRUE;
end else if not ganhou begin
send INVESTIGA(mem,:) to P>+ti
mem; =a;
end
end
77
c<n; c++) do
recebi[c) = FALSE;
Escolhe{b[i]);
recebi[i] = TRUE;
while(3 c I recebi[c] =FALSE) do begin
receive valor from c;
b[c] = valor;
recebi[c] = TRUE;
end
if ( i= (:E;,:~ b[c]) mod n) then
l(der = TRUE;
else
lder = FALSE;
Os processadores escolhem
seus valores e enviam aos outros.
78
O processador 2 eleito.
b[4] = 5
b(O] = 2
b[6] =5
(3)
b[3] =4
~
b[2] = 2
Os processadores escolhem seus valores
e os pseudo-processadores usam o mesmo
valor escolhido pelo processador real associado.
(3)
O processador 4 eleito.
Figura 5.12: Exemplo de funcionamento do algoritmo de Chang com alguns processadores possuindo maiores probabilidades de vencer. Os pseudo-processadores esto representados na mesma cor e prximos dos processadores reais a que esto associados.
Outras situaes nas quais mais de um processador deve ser selecionado durante uma competio podem existir. Para. estes casos mais: uma modificao ao algoritmo bsico proposta por
Chang a fim de escolher m vencedores. Cada processador Pi deve escolher m valores, b~, ... , fli- 1 ,
onde paraO:$. k :$. m-1, ~ escolhido do conjunto {0, ... ,n-k -1}. Em seguida o processador
envia os valores selecionados aos demais processadores.
Aps receber os valores escolhidos por todos os n - 1 processadores, cada processador deve
aplicar m funes / 0 , , fm - 1 para que os m processadores sejam selecionados. Ao escolher o
k + 1-simo vencedor, para k de O a m -1, deve ser aplicada a funo Jk(~, ... , b~-k-l) = j =
Li~ok-l ~ mod (n- k), sendo P; o vencedor. Ento, deve-se substituir P; por Pn-k-1 para o
79
bf,
Captulo 6
Concluso
Durante o desenvolvimento deste trabalho de mestrado foi coletado um extenso material bibliogrfico na rea. No entanto, devido limitao de tempo, foi necessrio selecionar alguns
trabalhos a fim de serem estudados mais profnndamente.
Dentre os algoritmos clssicos, apresentamos um dos primeiros algoritmos de eleio que se
tem conhecimento, proposto por LeLann em [LeL77]. A partir deste trabalho surgiram outros,
como [CR79] e [Pet82], propondo melhoramentos, e que tambm usavam a organizao dos
processadores em um anel uniforme. O algoritmo de LeLann visa a composio de uma lista
de processadores ativos em cada n, acarretando um alto custo de O(n 2 ) mensagens tanto no
melhor como no pior caso. Chang e Roberts conseguiram melhorar este custo para O( n log n)
no caso mdio e O(n) no melhor caso, eliminando aa mensagens dos processadores com identificadores menores. O algoritmo apresentado por Peterson, que utiliza a idia de simulao de
bidirecionamento, consegue melhorar o custo de mensagens para O( n log n) no pior caso.
O algoritmo de Garcia-Molina, tambm uma soluo clssica para o problema trabalhando
com topologia completa, tem como grande preocupao a fallia do processador coordenador que
deve ser substitudo pelo processador com maior identificao ainda em atividade, to logo fosse
detectada a falha. O custo do algoritmo maior quando o processador que detecta a falha
possui um valor baixo para sua identificao, o que acarreta que todos os processadores com
identificao maior que a dele iro tentar eleger-se. Assim, o custo de mensagens, no pior caso,
O(n2 ).
Um conceito interessante que tem recebido ateno nos ltimos anos o uso de senso de direo [FM96, Tel95, FMS96, FMS]. O intuito de usar canais de comnnicao rotulados de acordo
com uma propriedade global quebrar a simetria da rede e diminuir o nmero de mensagens
devido ao conhecimento que se adquire com os rtulos. Em [FMS] apresentada uma definio
formal para senso de direo e identificadas quatro classes de rtulos para os processadores.
Nesta dissertao apresentamos alguns algoritmos que utilizam esta abordagem. Os algoritmos
de Loui et al [LMW86), um dos primeiros algoritmos de eleio que usa este conceito, e de Singh
[Sin97) trabalham com uma rede completa, cujos canais so rotulados de acordo com a distncia
entre os processadores, baseando-se em um ciclo hamiltoniano previamente definido. O custo de
80
81
mensagens para os algoritmos de Loui et ale de Singh o mesmo, O(nlogn) bits. No entanto,
a proposta de Singh diminui o nmero de passos necessrios para se completar a eleio.
Ainda fazendo uso do conceito de seru~o de direo dois trabalhos abordando hipercubos
foram desenvolvidos simultanea, mas independentemente ([FM93], posteriormente publicados
82
tratado ortogonalmente, embora alguns autores tenham desenvolvido solues que incorporam
tolerncia a falhas [AA87, Tau89, Sin96, KB96].
Com a pesquisa realizada pudemos ter conhecimento do grande nmero de trabalhos existentes na rea de eleio de lder e de sua diversidade, possibilitando a aprendizagem de novas
tcnicas e abordagens empregadas para o desenvolvimento de algoritmos distribudos.
83
Rer.
[LeL77]
[CR79]
[Pet82]
[GM82]
[LMW86]
[Sin97]
[FM93]
[Tel93]
[Hua93[
[1LS95]
[DIM97]
[IR90]
[1R90]
[1R90]
[IR90]
[MA89]
[Ita90]
[Cba90] e
[VAD94]
I Modelo
anel unidirecional com identificadores
(Seo 2.1)
anel unidirecional com identificadores
(Seo 2.2)
anel unidirecional com identificadores
(Seo 2.3)
rede completa com identificadores
(Seo 2.4)
rede completa com identificadores e
senso de direo (Subseo 3.1.1)
rede completa com identificadores e
senso de direo (Subseo 3.1.2)
hipercubo com senso de direo
(Subseo 3.2.1)
hipercubo com senso de direo
(Subseo 3.2.2)
anel bidirecional de tamanho primo
auto-estabilizante (Subseo 4.2.1)
anel bidirecional de tamanho primo
auto-estabilizante (Subseo 4.2.2)
rede genrica auto-estabilizante
(Seo 4.3)
anel sncrono unidirecional sem ident.
com n conhecido (Subseo 5.1.1)
anel assncrono nnidirecional sem ident.
com n conhecido (Subseo 5.1.1)
anel sncrono unidirecional sem ident.
com n desconhecido (Subseo 5.1.2)
anel assncrono unidirecional sem ident.
com n conhecido (Subseo 5.1.2)
rede genrica (Subseo 5.1.2)
anel assncrono unidirecional sem ident.
com n desconhecido (Subseo 5.1.2)
rede completa. com identificadores
(Seo 5.2)
I Mensagens
I Tempo
O(n)
O(n)
O(n')
O(n)
O(nlogn)
O(nlogn)
O(n')
0(1)
O(n)
O(n)
O(n)
O(logn)
O(n)
O(log'n)
O(n)
O(logn)
I Espao
O(n)
O(logn)
O(n)
0(1)
O(~Dlogn)
O(logn)
O(n)
O(n)
O(nlogn)
O(nlogn)
O(n)
O(N)
O(nlogn)
O(nlogn)
O(mrlognlogr).
O(loglogn + logr)
O(n' logn)
O(D)
O(n')
O(!)
0(1)
O(nlogn)
Thbela 6.1: Thbela com tabela com todos os algoritmos apresentados e suas complexidades.
Bibliografia
[AA87]
[AG91]
Y. Afek and E. Gafni. Time and message bounds for election in synchronous and
asynchronous complete networks. SIAM J. Comput., 20(2):376-394, 1991.
[AM94J
Y. Afek and Y. Matias. Election in anonymous networks. Information and Computation, 113(2),312-330, 1994.
[Ang80)
[AS96J
[Bar96)
[BP89J
[CR79]
[Dij74]
[DIM97]
BlliLIOGRAFIA
85
[FM93]
[FM96]
[FMS]
[FMS96]
[GG96]
[GHS83]
R. G. Gallager, P. A. Humblet, and P. M. Spira. A distributed algorithm for minimumweight spanning trees. A CM 'I'ransactions on Programming Languages and Systems,
5(1),66-77, January 1983.
[GM82]
[Her90]
[HS80]
D. S. Hirschberg and J. B. Sinclair. Decentralized extrema-finding in circular configurations of processors. Communications oj the ACM, 23(11):627-628, November
1980.
[Hua93J
[ll.S95]
[IR90]
{Ita90J
[KB96J
BIBLIOGRAFIA
86
[KMZ84] E. Korach, S. Moran, and S. Zaks. Tight upper and lower bounds for some distributed
algorithms for a complete network of processara, 1984.
lLav95]
[LeL77]
[Lyn96]
[MA89]
Y. Matias and Y. Afek. Simple and efficient election algorithms for anonymous
networks. Lecture Notes in Computer Science, 392:183-194, 1989. Proceedings of
3rd International Workshop on Distributed Algorithms.
[Pet82]
[PKR84] J. Pachl, E. Korach, and D. Rotem. Lower bounds for distributed maximum finding
algorithms. Journal of ACM, 31:905-918, 1984.
[Ray88]
M. Raynal. Algorithms and Protocols, chapter 2, pages 29-40. Jonh Wiley & Sons,
1988.
[SG94]
[Sin96]
[Sin97]
[Tan92]
[Tau89]
BIBLIOGRAFIA
87
[Te193]
G. Tel. Linear election for oriented hypercubes. Technical Report TR-RUU-CS-9339, Department of Computer Science, Utrecht University, Utrecht, The Netherlands,
1993.
[Te194]
[Tel95]
[Tsi93]
[VAD94]