Sei sulla pagina 1di 100

Algoritmos para Eleio de Lder

em Sistemas Distribudos
Jucele Frana de Alencar

Dissertao de Mestrado

Instituto de Computao
Universidade Estadual de Campinas

Algoritmos para Eleio de Lder


em Sistemas Distribudos

J ucele Frana de Alencar

Abril de 1998

Banca Examinadora:

Prof. Dr. llicardo de Oliveira Anido (Orientador)


Prof. Dr. Valmir C. Barbosa
Programa de Engenharia de Sistemas e Computao - COPPE/UFRJ
Prof. Dr. Cid Carvalho de Souza
Instituto de Computao - UNICAMP
Prof. Dr. Luiz Eduardo Buzato (Suplente)
Instituto de Computao - UNICAMP

Apoio financeiro CNPq e FAPESP.

----~-:'<.--

- -- - - - -

CM-00112604-9

FICHA CATALOGRFICA ELABORADA PELA


BIBLIOTECA DO !MECC DA UN!CAMP

Alencar. Jucele Frana


AL25a

Algoritmos para eleio de lder em sistemas distribudos I


Jucele Frana Alencar-- Campinas, [S.P. :s.n.], 1998.
Orientador : Ricardo de Oliveira Anido
Dissertao (mestrado) - Universidade Estadual de Campinas,
Instituto de Computao.
1. Sistemas operacionais distribudos (Computadores).

2.

Algoritmos. 3. Processamento distribudo. L Anido. Ricardo de


Oliveira. 11. Universidade Estadual de Campinas. Instituto de
Computao. lll. Ttulo.

Algoritmos para Eleio de Lder


em Sistemas Distribudos

Este exemplar corresponde redao final da Dissertao devidamente corrigida e defendida por
Jucele Frana de Alencar e aprovada pela Banca Examinadora.

Campinas, 6 de Abril de 1998.

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.

Tese de Mestrado defendida e aprovada em 17 de fevereiro de


1998 pela Banca Examinadora composta pelos Professores
Doutores

P"rof. Dr. Cid arvalho"de Souza

f ;
'' ! "

. "

;1
-,

Prol. Dr. Ricardo de Oliviera Anido

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

Algoritmo de LeLann (1977) . . . . . .

2.2 Algoritmo de Chang e Roberts (1979)

1
1
2
4
4

5
6
6
9

Algoritmo de Peterson {1982) . . .

12

2.4 Algoritmo de Garcia-Molina (1982)

15

2.5

16

2.3

Alguns Limites Inferiores

3 Uso de Senso de Direo


3.1

Eleio em Rede Completa


3.1.1 Algoritmo de Loui et al.

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

4.2.2 Algoritmo de !tida et ai.


4.3 Eleio em Redes Genricas

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

Tabela com tabela com todos os algoritmos apresentados e suas complexidades. .

Lista de Figuras
2.1
2.2
2.3
2.4
2.5
2.6
2.7
2.8

Algoritmo de LeLann para anel unidirecional. . . . .


Exemplo de funcionamento do algoritmo de LeLann.
Algoritmo de Chang e Roberts. . . . . . . . . . . . .
Um exemplo de funcionamento do algoritmo de Chang e Roberts..
Algoritmo de Peterson. . . . . . . . . . . . . . . . . . . . .
Um exemplo de funcionamento do algoritmo de Peterson. . ..
Algoritmo de Garcia-Molina. . . . . . . . . . . . . . . . . . . .
Um exemplo de funcionamento do algoritmo de Garcia-Molina.

7
8
10
11
13

3.1
3.2
3.3

Exemplo de uma rede completa com senso de direo. . . . . .


Algoritmo de Loui et al. para redes completas com senso de direo.
Exemplo de funcionamento do algoritmo de Loui et ai. para redes completas com
senso de direo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Exemplo de rede dividida em 4 sub-anis. . . . . . . . . . . . . . . . . . .
Algoritmo de Singh para redes completas com senso de direo (parte 1).
Algoritmo de Singh para redes completas com senso de direo (parte 2).
Algoritmo de Singh para redes completas com senso de direo (parte 3).
Modelos de senso de direo para hipercubos: (a) dimenso (b) distncia.
Exemplos de caminhos entre os processadores i e j ( <1,2,0>, <2,0,1> e <0,1,0,2,0> ).
Algoritmo de Flocchini e Mans para hipercubos com senso de direo baseado na
dimenso. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Exemplo de funcionamento do algoritmo de Flocchini e Mans. . . . . . . . . . .
Algoritmo de Tel para hipercubos com senso de direo baseado na dimenso. .
Exemplo de funcionamento do algoritmo de Tel.. . . . . . . . . . . . . .

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

Algoritmo auto-estabilizante de Itkia et al. para anel uniforme.


Regra 1. .
Regra 2A.
Regra 2B.
Regra 3.
Regra 4.
Regra 5.
Regra 6.
Regra 7.
Regra 8.
Regra 9.
Exemplo de funcionamento do algoritmo de Itkis et al.
Algoritmo auto-estabilizante para redes genricas . . . .
Exemplo de funcionamento do algoritmo auto-estabilizante para eleio em redes
genricas de Dolev et ai. . . . . . . . . . . . . . . . . . . . .
Algoritmo sncrono para redes annimas com n conhecido. .
Exemplo de funcionamento do algoritmo sncrono deItai e Rodeh com n conhecido.
Algoritmo assncrono para redes annimas com n conhecido. . . . . . . . . . . . .
Exemplo de uma iterao do algoritmo assncrono de Itai e Rodeh com conhecimento de n. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Algoritmo sncrono para redes annimas com N :$ n < 2N. . . . . . . . . . . . .
Exemplo de uma iterao do algoritmo sncrono deItai e Rodeh com N :$ n < 2N.
Algoritmo de Matias e Afek para redes annimas sem conhecimento de n. . . . .
Exemplo de funcionamento do algoritmo de Matias e Afek para redes annimas
genricas. . . . . . . . . . . . . . . . . . . . . .
Algoritmo de Itai para anel annimo. . . . . . . . . . . . . . . . . . . . . . . .
Algoritmo bsico de Chang ou Vernadat et al. . . . . . . . . . . . . . . . . . .
Exemplo de funcionamento do algoritmo bsico de Chang ou Vernadat et ai.
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.

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. Conceitos Bsicos

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. Conceitos Bsicos

Pi l uma mensagem enviada no intervalo de tempo t - 1 se essa mensagem existe, executa


alguma tarefa e pode enviar no mximo uma mensagem a cada processador. Portanto, havendo
sincronismo possvel dividir o algoritmo em aes que so executadas simultaneamente por
todos os processadores. J no caso assncrono, cada processador possui seu prprio relgio sem
relao com os relgios dos demais processadores, podendo executar a taxas no constantes;
assim, os diferentes processadores podem ser uns mais lentos que outros. No existindo um
sincronismo no determinado quanto tempo levar para uma mensagem enviada ser recebida.
Assim, no caso assncrono, no h relao entre as execues dos diversos processadores.
Em uma rede os processadores podem ter identificaes. Uma rede denominada annima
quando seus processadores no possuem identificaes que podem ser usadas em suas computaes, nem mesmo para identificar o processador origem ou destino de urna mensagem. Como
citado em [IR90] e demonstrado em {Ang80] no h algoritmo para eleio de lder em rede
annima que execute em todos os vrtices e termine em tempo finito. O fato que a simetria
da rede no pode ser quebrada sem que haja computao infinita ou resultado incorreto.
Uma forma de quebrar a simetria de uma rede possibilitar a distino de seus canais de
comunicao de acordo com algum esquema global definido. Essa diferenciao dos canais
definida como senso de direo.
Outro mecanismo usado para quebrar a simetria da rede diferenciar os processadores. Um
sistema dito uniforme se todos seus processadores executam o mesmo programa. Caso exista
um processador diferente e todos os outros idnticos, o sistema conhecido como semi-uniforme.
A terminao de um algoritmo distribudo definida como o estado em que todos os processos terminaram de executar o que deveriam e no h mais nenhuma mensagem em trnsito
(mensagens enviadas e ainda no recebidas).
Um conceito interessante tambm usado o de auto-estabilizao. Um algoritmo autoestabilizante aquele que inicia sua execuo em qualquer estado, possivelmente imprprio
para os parmetros estabelecidos para o problema, e ao executar, sem interveno extema, se
estabiliza em um estado desejado.
Para realizar a comparao entre diferentes algoritmos que solucionam um mesmo tipo de
problema preciso estabelecer uma forma de medir o consumo de recursos dos algoritmos. Esse
consumo de recursos pode ser medido de vrias maneiras:
Complexidade de mensagens: corresponde ao nmero total de mensagens trocadas pelo
algoritmo, ou seja o nmero mximo de mensagens enviadas no pior caso para todas as
variaes possveis na execuo do algoritmo. Esta medida pode ser substituda por uma
mais exata a complexidade de mensagens em bits, que pode ser til para mostrar diferenas
relevantes entre os algoritmos quando o tamanho das mensagens depende do nmero de
ns na rede ou do nmero de canais de comunicao entre os ns. A complexidade de
mensagens em bits leva em conta o nmero de mensagens trocadas pelo algoritmo e seus
tamanhos.
Complexidade de tempo: dada pelo tempo gasto pela computao do algoritmo, considerando que o tempo para processamento de um evento zero e o tempo de transmisso

1.1. Conceitos Bsicos

de pelo menos uma unidade de tempo.


Complexidade de espao: definida como sendo a quantidade de memria necessria para
a execuo do algoritmo.

1.1.2

Algoritmos para Eleio de Lder

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

Relao com outros tipos de problemas

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.

1.2. Estrutura da dissertao

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

No captulo 2 so apresentados alguns algoritmos clssicos para o problema de eleio de lder.


So algoritmos mais antigos como [LeL77, CR79, Pet82, GM82] e com descries encontradas na
maior parte dos livros que abordam sistemas distribudos como [Ray88, SG94, Tan92, CDK94].
O conceito de redes com uso de senso de direo utilizado pelos algoritmos encontrados no
captulo 3. O fato de se ter uma orientao em relao aos canais de comunicao permite uma
ordenao no processo de eleio. Neste captulo so apresentados algoritmos para topologias
completas e hipercubos.
O captulo 4 apresenta algoritmos auto-estabilizantes, termo introduzido por Dijkstra em
[Dij74]. Vrios tipos de algoritmos, para diferentes topologias, anel, rvores, redes genricas, vm
sendo desenvolvidos procurando diminuir o tempo necessrio para a estabilizao do sistema.
A introduo de probabilidade nos algoritmos para eleio vista no captulo 5. Alguns
algoritmos que introduzem uma probabilidade de erro para conseguir quebrar a simetria da rede
so apresentados. Esses algoritmos possuem uma pequena probabilidade de que ao terminar o
algoritmo tenha-se nenhum ou mais de um lder. Caso isso acontea uma nova eleio deve ser
inicializada. Outro tipo de algoritmos que usam a probabilidade para que todos os participantes
tenha a mesma chance de vencer tambm so apresentados.
Finalmente, no captulo 6 so expostas as concluses na forma de comentrios sobre as
comparaes entre os algoritmos descritos.

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).

O algoritmo de [GM82J assume que todos os processadores podem comunicar-se

entre si.

2.1

Algoritmo de LeLann (1977)

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.

2.1. Algoritmo de LeLann (1977)

Algoritmo de LeLann para o Processador i

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

receive ELEIO(j) from c;


if i ::f:. j then begin
insere(j, Candidatos);
send ELEIO(j) to viz;
end
else begin
lfder = max(Candidatos);

fim= TRUE;
end
end

Figura 2.1: Algoritmo de LeLann para anel unidirecional.


A figura 2.1 apresenta o algoritmo de LeLann detalhadamente. No algoritmo so usadas as
seguintes variveis:

viz: endereo do canal que liga o processador a seu vizinho;


fim: varivel lgica que indica se o processador j terminou ou no a eleio;
Candidatos: lista de processos candidatos;

lder: indica quem o lder atual.


As funes usadas no algoritmo so:

cria(X): cria uma lista com identificao X vazia;


limpa(X): esvazia a lista X;
insere(a, X): insere um elemento a na lista X;

max(X): devolve o valor mximo encontrado na lista X.


Na figura 2.2 mostrado um exemplo do funcionamento do algoritmo de LeLann, onde Ci
corresponde lista de processadores candidatos do processador i. No estgio A da figura, o processador 1 decide eleger-se e envia uma mensagem ELEIO a seu vizinho, iniciando a eleio

2.1. Algoritmo de LeLann (1977)

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)

Figura 2.2: Exemplo de funcionamento do algoritmo de LeLann.


no anel. Cada processador ao tomar conhecimento de que a eleio est ocorrendo, normalmente ao receber uma mensagem ELEIO, inicializa sua lista de processadores candidatos
com sua identificao e transmite sua mensagem ELEIO. Cada mensagem recebida por um
processador retra.nsmitida ao seu vizinho no anel. A eleio termina quando o ltimo processo
completa sua lista de candidatos o que, no exemplo, representado pela recepo da mensagem
ELEI0{5} em trnsito no estgio I da figura. Ao final, como todos possuem a lista de candidatos com os mesmos processadores, todos sabem que o processador eleito foi o 5, e nenhuma
mensagem adicional precisa ser enviada.
Se for assegurado que todas as mensagens circulam pelo anel chegando a seus destinos, podese afirmar que o algoritmo terminar elegendo um e apenas um lder. Ao ocorrer falha de um
processador no se deve interromper o anel, ou seja, o sistema de transmisso de mensagem deve
passar a mensagem, cujo destino o n que falhou, para o prximo n no anel vizinho ao da
falha.
Este algoritmo possui complexidade de mensagens igual a O( n 2 ) mensagens, onde n o
nmero de processadores no anel, pois cada um dos processadores envia uma mensagem que
dever percorrer todos os processadores do anel.

2.2. Algoritmo de Ghang e Roberis (1979)

A complexidade de tempo do algoritmo igual a O(n), visto que n- 1 unidades de tempo


aps o primeiro processador iniciar a execuo do algoritmo todos os processadores j iniciaram
a eleio sendo necessrias mais n unidades de tempo para a identificao do ltimo processador
a iniciar a eleio percorra todo anel, totalizando 2n - 1 unidades de tempo.

2.2

Algoritmo de Chang e Roberts (1979)

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;

candidato: indica se o processador est ou no tentando eleger-se;


lder: contm a identificao do lder atual.
A figura 2.4 descreve um exemplo de funcionamento do algoritmo de Chang e Roberts. Os
processadores destacados com um crculo mais espesso representam os candidatos eleio. No
estgio A do exemplo a eleio iniciada por dois processadores {1 e 3), que enviam mensagens
ELEIO a seus vizinhos. Quando um processador i recebe uma mensagem ELEIO(j) ele
compara i e j e decide se deve enviar urna mensagem e com qual identificao. Por exemplo,
no estgio B da figura o processador 3 recebe uma mensagem ELEI0{2); como 2 < 3 e 3
j candidato, o processador 3 no envia nenhuma mensagem. No mesmo estgio, o processador 4 recebe a mensagem ELEI0{3}, como 4 > 3 e 4 ainda no era candidato, 4 envia a
mensagem ELEI0(4). Quando um processador receber uma mensagem ELEIO com sua

2.2. Algoritmo de Chang e R.oberts (1979)

Algoritmo de Chang e Roberts para o Processador

10

Variveis:
viz; // canal do processador vizinho

fim = FALSE; f /terminou ou no a eleio


lfder = -1; f/ identificao do Hder
candidato = FALSE;

if decide eleger-se then begin


candidato = TRUE;
send ELEIO( i) to viz;
end
whlle not fim then begin
receive M from c;
if M = ELEIO(j) then begin
if i = j then begin
lfder =i;
candidato = FALSE;
send ELEITO(i) to viz;
end
else begin
if j > ithen
send ELEI O(j) to viz;
else if not candidato then begin
candidato = TRUE;
send ELEIO( i) to viz;
end
end
if M

= ELEITO(j) then begin


if i =/:. j then begin

send ELEITO(j) to viz;


l!der = j;
candidato = FALSE;
end
fim= TRUE;
end
end

Figura 2.3: Algoritmo de Chang e Roberts.

2.2. Algoritmo de Chang e Roberts {1979)

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.

'

'

'

Figura 2.4: Um exemplo de funcionamento do algoritmo de Chang e Roberts.


Visto que o algoritmo compara as identificaes dos processadores e apenas mantm as
mensagens com identificao do maior processador, haver um momento que a mensagem com
a maior identificao ter passado por todos e o processador mximo ser eleito.

O nmero de mensagens necessrias para a eleio depende do processador que inicia a


eleio e da disposio dos identificadores dos processadores, que variam de 1 a n. Caso apenas
um processador, Pi, inicie a eleio, o pior caso ocorre quando o processador P; anterior a Pi,
obedecendo a ordem do anel, possui a maior identificao. Neste caso, o algoritmo ter um custo
de mell8agens de 3n - 1 para a eleio de um novo lder (n - 1 mensagens para ir de Pi a P;, n
mensagens para ELEIO(j) percorrer o anel e mais n mensagens ELEITO).
No artigo [CR79] feita uma anlise da complexidade de mensagem~ no caso mdio. No
clculo so utilizadas as probabilidades para as diferentes disposies dos identificadores no

2.3. Algoritmo de Peterson (1982}

12

anel, e o resultado obtido O(nlogn), significando uma melhora em relao ao algoritmo de


LeLann, onde a complexidade de mensagens O(n2 ) para qualquer caso. No entanto, no pior
caso, o algoritmo de Chang e Roberts mantm o custo de O(n 2 ). A complexidade de tempo
para o algoritmo de Chang e Roberts a mesma do algoritmo de LeLann, ou seja, O(n).

2.3

Algoritmo de Peterson {1982)

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.

2.3. Algoritmo de Peterson (1982)

Algoritmo de Peterson para o Processador i


Variveis:
tid = i; f/ id temporrio
participante = TRUE; // participante da eleio
viz; // canal do processador vizinho
fim = FALSE; f {terminou ou no a eleio
l!der = -1; f/ identificao do Hder

whlle not(fim) do begin


if (participante) then begin
send ELEIO(tid) to viz;
receive M from c;
if M = ELEIO(ntid) then begin

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

Figura 2.5: Algoritmo de Peterson.

13

2.3. Algodtmo de Peterson (1982)

14

A figura 2.6 apresenta um exemplo de funcionamento do algoritmo de Peterson. Na figura os


processadores esto representados por um crculo mais espesso. No estgio A todos os processadores so participantes e enviam mensagem ELEIO a seus vizinhos. O envio da segunda
mensagem da primeira fase mostrado no estgio B da figura. Ao receber a segunda mensagem
(estgio C) os processadores 3, 4 e 5 deixam de ser participantes e apenas 1 e 2 iniciam uma
nova fase. No estgio F o processador 5 percebe que a mensagem ELEI0(5) percorreu todo o
anel, e inicia o anncio de sua eleio, que termina no estgio L. Ao final todos os processadores
tm conhecimento que 5 foi eleito.

'

'

Figura 2.6: Um exemplo de funcionamento do algoritmo de Peterson.

Facilmente podemos notar que o nmero mximo de mensagens enviadas 2nllognJ

+ 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

2.4. Algoritmo de Garcia-MolinA (1982)

15

identificao do processo eleito a todos os outros do anel. O nmero de participantes dimunui


pela metade a cada fase pois um processador s permanecer participante se o processador
participante a sua esquerda deiTar de s-lo. No artigo so mostrados ainda alguns melhoramentos
que diminuem o nmero de mensagens transmitidas) mas ainda mantm a complexidade de
mensagens igual a O(nlogn). A idia antecipar a passagem do processador para o estado no
participante, no esperando a comparao como os dois vizinhos. A cada comparao com a
identificao vinda do vizinho, o processador pode decidir deixar ou no de ser participante. A
complexidade de tempo do algoritmo O(nlogn).

2.4

Algoritmo de Garcia-Molina (1982)

O algoritmo apresentado por Garcia-Molina em {GM82J, conhecido tambm como algoritmo do


Ditador 1 , trabalha com os processadores organizados em uma rede completa. O princpio bsico
para dar incio eleio que, ao detectar a falha do lder, o processador tenta eleger-se.
Quando um processador Pt envia uma mensagem ao lder fazendo um pedido e no obtm
resposta durante um intervalo de tempo T, ele assume que o lder falhou e tenta eleger-se como novo lder. O processador Pi envia uma mensagem ELEIO para todo processador com
identificao maior que a sua e espera por mensagens de um desses processadores durante um
tempo T. Se nenhuma resposta for recebida, Pi assume que todos os processadores com identificao maior que a sua falharam, declara-se lder e envia mensagens a todos os processadores
de identificao mais baixa, anunciando ser o novo lder.
No entanto, se alguma resposta for recebida, Pi espera durante um intervalo de tempo T por
urna mensagem indicando que um processo com identificao maior que i o novo lder. Se no
for recebida resposta alguma em T, Pt asswne que o processador de maior identificao falhou
e tenta eleger-se novamente.
Durante a execuo, se Pi no o lder, este pode receber dois tipos de mensagens:
uma mensagem indicando que P; o novo lder (j
a informao do novo lder.

> i).

Ento o processador Pt armazena

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

2.5. Alguns Limites Inferiores

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:

inicia_timeout(}: inicializa o contador de timeoutj


desativa_timeout(): desativa o contador de timeoutj
timeout(t): retoma o valor verdadeiro se o contador de timeout chegar ao valor t.
Um exemplo do funcionamento do algoritmo pode ser visualizado na figura 2.8. Considere
5 processadores com identificadores de 1 a 5. O processador lder (5) falha; suponha que o
processador 2 descobre que 5 falhou. O processador 2 envia mensagens ELEIO a todos com
identificao maior que a sua (estgio 1 da figura). Os processadores 3 e 4 respondem a 2 e
iniciam suas eleies (estgios 2 e 3). O processador 4 envia resposta a 3 e falha (estgio 4).
Expira, ento, o tempo e 2 tenta eleger-se novamente (estgio 4), mas, quem acaba elegendo-se
o processador 3 (estgios 5 e 6).
Assegurando que as mensagens enviadas sempre chegam a seus destinos, ou seja, que no
ocorram falhas na rede de comunicao, o processador ativo com maior identificao ser eleito.
Ao analisarmos o algoritmo, fcil notar que sua complexidade de mensagens O(n2 ), o que,
no pior caso, corresponde ao processador de mais baixa identificao iniciar sua eleio sendo
que os demais processadores ainda esto ativos. A complexidade de tempo necessria para que
um processador seja eleito igual a 0(1) considerando somente a falha de processadores e no
do meio de comunicao.

2.5

Alguns Limites Inferiores

Alguns resultados para os limites inferiores de complexidade de mensagens para o problema


de eleio de lder so apresentados na literatura. A tabela a seguir mostra alguns desses
limites inferiores que foram determinados de acordo com certos modelos de rede. As referncias
apresentadas na tabela demonstram a obteno dos limites inferiores.

2.5. Alguns Limites Inferiores

Algoritmo de Garcla-Molina para o Processador i


Variveis:
fim = FALSE; f /terminou ou no a eleio
lder= -1; f f identificao do Hder
estado= passivo; // estado processador (passivo, eleger-se, elegendo-se, eleito)
if decide eleger-se then
estado = eleger-se;
whlle not fim do begin
if estado = eleger-se then begin
for ( j =i+ 1; j < n; j = j + 1) do

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

Figura 2. 7: Alguritmo de Garcia-Molina.

17

2.5. Alguns Limites Inferiores

Estgio 1

18

Estgio 2

Estgio3

EstgioS

Figura 2.8: Um exemplo de funcionamento do algoritmo de Garcia-Molina.

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

Uso de Senso de Direo


Dizemos que uma rede possui senso de direo se os processadores so capazes de fazer distino
entre seus canais de comunicao, de acordo com um esquema globalmente consistente. Na figura
3.1 temos um exemplo de rede com senso de direo, onde as arestas direcionadas representam
um ciclo Hamiltoniano e os rtulos dos canais de comunicao representam a distncia entre os
processadores atravs do ciclo.

Figura 3.1: Exemplo de uma rede completa com senso de direo.


Neste captulo estudaremos dois algoritmos para eleio em redes completas e outros dois
algoritmos que trabalham com redes em hipercubo. O senso de direo usado para diminuir a
nmero de mensagens necessrias para realizar a eleio.

19

3.1. Eleio em Rede Completa

3.1

20

Eleio em Rede Completa

No caso de redes completas, senso de direo refere-se ao conhecimento de um ciclo Hamiltoniano


e existncia de rtulos em cada canal de comnnicao dos processadores, os quais so baseados
na distncia entre os processadores percorrend~se o ciclo Hamiltoniano como no exemplo da
figura 3.1. Neste caso, se um processador i est a uma distncia d de j, ento j est a uma
distncia n- d de i (n o nmero total de processadores).
A seguir sero apresentados dois algoritmos para eleio de lder em redes assncronas completas com senso de direo. O primeiro algoritmo [LMW86], mais antigo e que se assemelha ao
algoritmo de [Pet82), foi um dos primeiros a propor o uso de senso de direo para diminuir o
nmero de mensagens. Em [Sin97) proposta uma nova forma de fazer uso do senso de direo
a fim de tornar a eleio mais eficiente. Os dois possuem o mesmo nmero de mensagens, O(n),
mas diferem na complexidade de tempo, o primeiro com O(n) e o segundo com O(logn). Como
citado em [LMW86), para o caso de uma rede sem senso de direo so necessrias O(nlogn)
mensagens para resolver o problema de eleio.

3.1.1

Algoritmo de Loui et ai.

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

3.1. Eleio em Rede Completa

21

ordem crescente do nmero de fase. Na figura 3.2 o algoritmo apresentado.


Na figura 3.3 apresentado um exemplo de funcionamento do algoritmo de Loui et al., onde
temos 7 processadores com identificadores variando em {1,2, ... ,7}. Os processadores ativos so
apresentados em cor escura e quando um processador torna-se passivo passamos a desenhlo na cor branca. A cada fase as mensagens enviadas so representadas pelas setas entre os
processadores e o nmero ao lado de cada seta representa o identificador que a mensagem contm.
Na primeira fase todos os processadores enviam mensagens a seus vizinhos com distncia 1.
Na fase seguinte os processadores que receberam mensagem com identificao maior que a sua
tornam-se passivos. Os demais enviam uma mensagem para desativar o originador da mensagem
que receberam, que um processador com identificao menor. A troca de mensagens continua
at que um processador ativo receba uma mensagem com identificao igual sua. Este dever
ento declarar-se lder.
Sem perda de generalidade assumimos que todos os processadores ativos enviam suas mensagens simultaneamente no incio de cada fase. Alguns processadores passivos tambm enviam
mensagens. A fase p termina quando todos os processadores ativos recebem as mensagens enviadas durante a fase p. Considere que as fases so numerados de 1 a p, sendo que p comea
quando p - 1 termina. Seja Cp o nmero de processadores ativos no incio da fase p (Co = n).
Sabemos que cada processador envia apenas uma nica mensagem aps tornar-se passivo, totalizando (n-1) mensagens enviadas por processadores passivos durante todo o algoritmo. Portanto
o nmero total de mensagens enviadas :

(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)

< n-1 + i!> 2 n < 3.62n.

p~O

Assim, a complexidade de mensagens do algoritmo O(n), e considerando que o nmero


de bits necessrios para a identificao dos processadores seja O(logn), a complexidade de
mensagens em bits O(nlogn).
Toda mensagem enviada durante uma fase deve chegar a um processador ativo nesta mesma
fase, no entanto pode ser necessrio que processadores passivos retransmitam mensagens que
receberam durante a fase. Portanto para calcular a complexidade de tempo no basta saber o
nmero de fases, mas deve-se contar o tempo de cada fase, que determinado pelo nmero de
retransmisses. Sabemos que uma mensagem para chegar a um processador ativo pode demorar
no mximo 1 mais o nmero de processadores que se tornaram passivos na fase anterior, ou
seja, a mensagem no mximo percorreria todos os processadores que se tornaram passivos na

22

3.1. Eleio em Rede Completa

Algoritmo de Loui et ai. para o Processador i


Variveis:
d=n-1;
estado = ativo;
fase= 1;
fim= FALSE;
while not fim do
begin
if estado = ativo then
begin
send ELEIO( i, n- d, fase) to n- d;
receive ELEIO(j,d,f) from e;
while f =F fase do
recoloca a mensagem na fila de memagens a receber e recebe
fase = fase +1;
ifi<jthen
estado = passivo;
else if i = j then
begin
estado = eleito;
fim= TRUE;
for(e=1;e<n;e++)
send ELEITO( i) to e;
end
end
if estado= passivo then
begln
receive M from e;
fase= fase +1;
if M = ELEIO(j,d' ,!) then begin
send ELEIO(j, (n- d +fi) mod n, fase) to n- d;
end else if M = ELEITO(j) then
fim =TRUE;

outra mensagem

end
end

Figura 3.2: Algoritmo de Loui et ai. para redes completas com senso de direo.

3.1. Eleio em Rede Completa

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:

L, tempo da fasep ~L, 1 + (n -<;,) ~ p+ (n-1).


p~O

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

Assim como o algoritmo apresentado anteriormente1 no artigo de Singh [Sin97] proposto um


algoritmo para eleio em redes assncronas completas usando senso de direo1 onde cada processador possui um identificador nico. O protocolo possui duas fases. Na primeira o nmero de

3.1. Eleio em Rede Completa

24

processadores ativos reduzido para aproximadamente n/ log n, onde n corresponde ao nmero


de processadores da rede. Para isso o anel lgico, fonnado pelo ciclo Hamiltoniano, divido em k
sub-anis, onde k = nj2floglognl. Ao final da primeira fase h no mximo um processador ativo
em cada sub-anel. Na segunda fase do protocolo, os processadores ativos restantes competem
entre si para. elegerem um nico lder.
A relao (l,d) < (l',cf) considerada verdadeira caso (l < l') ou ((l ~ l')e(d < cf)).
Usaremos a notao i[d] representando o n com distncia d de i (i[O] =i) e i[x ..y] representando
o conjunto {i[x],i[x + 1], ... ,i[y]}. Por exemplo, de acordo com a figura 3.1, c[3] =a e c[l..3] =
{ d, e, a}. considerado que n potncia de 2. Posteriormente sero comentadas as modificaes
que devem ser feitas quando n no potncia de 2. Os processadores so organizados logicamente
em um anel que corresponde ao ciclo Hamiltoniano. Os sub-anis so formados da. seguinte
maneira: o anel a. que o processador i pertence composto pelo conjunto {i[O], i[k], i[2k], ... , i[nk]} de processadores. Na figura. 3.4 temos um exemplo onde n = 16 e k = 4, sendo que os subanis so: {a, e,i,m}, {b, j,j, n}, {c,g, k,o} e {d, h, l,p} representados por diferentes cores. Ser
usada a notao ~ para indicar o sub-anel a que i pertence.

Figura 3.4: Exemplo de rede dividida em 4 sub-anis.


Abaixo temos uma descrio das variveis usadas no algoritmo para um processador i:
estado: Pode ter trs valores: passivo (inicialmente e quando um processador o desativa),
ativo (enquanto um processador continua competindo na eleio) e eleito (caso i seja o
lder no final do algoritmo).
nvel: Inicia com zero e posteriormente indica quantos processadores i desativou na pri-

meira fase.
passo: Inicialmente possui o valor zero. Indica em que passo da segunda fase i est.

3.1. Eleio em Rede Completa

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.

f as e: Indica a fase do algoritmo em que o processador est.


Na primeira fase a eleio ocorre separadamente em cada sub-anel. Ao acordar um processador passa seu estado para ativo e tenta desativar seqencialmente os demais processadores de seu
sub-anel. Para desativar um processador, i deve enviar uma mensagem ELEIO(fase,nivel,i)
ao processador j = i[k*nve~ e esperar o recebimento de uma mensagem ACEITO(fase,nve~.
Um processador usa seu nvel e sua identificao para competir com outros processadores. Um
processador j desativado caso receba uma mensagem ELEIO(fas~,nveli, i) de um processador i e (nvel;,j) < (nveli, i). Se um processador ativo ao receber uma mensagem ELEIO
no satisfizer a condio anterior este deve ignorar a mensagem e o processador que a enviou
ficar bloqueado. Caso um processador j, executando a primeira fase do protocolo, receba uma
mensagem ELEIO de outro que j esteja na segunda fase, ento j passar seu estado para
passivo e enviar a mensagem ACEITO. Um processador i, na primeira fase, ao desativar j
deve verificar qual o valor de nvel; para que o prximo processador que i tente desativar seja
i[(nve~+nvel; + 1) * k), pois os processadores em i[k * (nvelt + 1), ... , k * (nvelt+nvel;)] no
esto mais ativos (foram desativados por j). Se nve4 ~ n/k (i desativou todos os processadores de seu sub-anel) ento i deve enviar a mensagem LDER..ANEL(i) aos processadores de Ai
informando que foi eleito na primeira fase. O processador i fica aguardando at que todos os
processadores de A; respondam com uma mensagem CIENTE indicando o recebimento de sua
mensagem, para ento passar segunda fase.
Na segunda fase temos k sub-anis com no mximo um processador ativo por sub-anel. Esta
fase possui log n passos. No primeiro passo um processador i envia uma mensagem para desativar
um processador. No l-simo passo, i envia mensagens para desativar 2t-l processadores. Quando
dois processadores competem nesta fase ganha quem tem maior par (passo, identificao). Ao
iniciar a segunda fase (fase = 2) o processador i executa a atribuio passo= 1 e envia uma
mensagem ELEIO(fase,passo, i) ao processador j = i[k/2]. Caso j no seja o processador
ativo de A;, este deve enviar a mensagem INFORMA {lder) a i para que i tente desativar o
lder de Aj Caso i obtenha sucesso ao tentar desativar o processador de ~[k/ 21 , este incrementa
a varivel passo e tenta desativar os lideres de ~[k/ 41 e ~[3k/ 4] Generalizando, no passo= f,
i tenta desativar os processadores ativos dos sub-anis {At[k/:z.!J~[akj:z.!J ... ,~[(:zt-l)k/:zt]} Se i
conseguir desativar todos os processadores para os quais enviou mensagens no passo i., ento ele
incremente a varivel passo. Caso passo > log k ento i pode declarar-se eleito enviando wna
mensagem ELEITO( i) a todos os processadores da rede. As figuras 3.5, 3.6 e 3.7 apresentam
o algoritmo com mais detalhes.
interessante notar que quando passo = 1 o processador i tenta desativar o lder de ~[k/ 21
(suponha que seja j). O processador j por sua. vez, ao entrar na segunda fase, tenta desativar
o processador ativo de A;[k/ 21, que corresponde a i. Portanto, quando i tenta desativar j, j
tambm tenta desativar i. Assim apenas wn dos dois ir continuar tentando se eleger. Ou
seja quando todos os processadores executarem o primeiro passo da segunda fase restaro no

3.1. Eleio em Rede Completa

Algoritmo de Singh para o Processador i


Variveis:
estado = ativo;
nvel= O;
fase= 1;
lder= O;

while estado = ativo and fase = 1 do begin


if nvel> nfk then begin
send LDER...ANEL{i) to alijE A;;
respostas = O;
end else send ELEI0(1, nvel, i) to i[(nvel+1) * k];
recebido = FALSE;
whlle estado = ativo and fase = 1 and not recebido do begin
receive M from i[d];
caseM of

ELEI0(1, n,j): if (nrel, i) < (n,j) then begin


send ACEIT0(1,nvel) to i[d];
estado = passivo;
end

ACEIT0(1,n): nvel= nvel +n + 1;


recebido = TRUE;
CIENTE(i): respostas= respostas+ 1;
if respostas= n/k- 1 then fase= 2;
ELEI0{2,n,j): estado= passivo;
fase= 2;
send ACEIT0(2,nvel) to i[d];
ELEITO(j): e6tado = passivo;
lder= j;
end

end

Figura 3.5: Algoritmo de Singh para redes completas com senso de direo (parte 1).

26

3.1. Eleio em Rede Completa.

if estado = ativo and faBe = 2 then begin


passo= O;
while eBtado = ativo do begin
for (m = 1; m ~ 2~"' 880 -1; m = m + 2)
send ELEI0(2,passo, i) to i[m * kf2P"m];
recebido = FALSE;
respostas = O;
while estado = ativo and not recebido do begin
receive M from i[d];
caseM of
ELEIO(l, n,j): skip;
ELEI0(2,n,j): if(passo,i) < (n,j) then begin
send ACEIT0(2,passo) to i[d];
estado = passivo;
end
INFORME(z): send ELEI0(2,passo,i) to i[d+ z];
ACEIT0(2,n): respoBtas =respostas+ 1;
ir respostas= 2~"'uo-I then begin
pasBo = pasBO + 1;
if passo = log k + 1 then begin
estado = eleito;
for (m= 1;m <n;m = m+l) send ELEITO(i) tom;
end else recebido = TRUE;
end
end

end
end

Figura 3.6: Algoritmo de Singh para redes completas com senso de direo (parte 2).

27

3.1. Eleio em Rede Completa

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

3.2. Eleio em Hipercubos

29

de mensagens igual a O(n). Se assumirmos que a identificao de 1llll processador possua


O(logn) bits, a complexidade de mensagens em bits do algoritmo O(nlogn) bits.
No caso de n no ser potncia de dois so necessrias algumas modificaes no algoritmo.
Sejam o menor nmero maior que n, tal quem potncia de dois. Seja k = mj2floglognl. O
sub-anelA; definido como sendo {i,i[k], i[2k], ... , i[(fn/kl-l)k]}. Com n no sendo potncia de
2 pode ocorrer de i pertencer a A;, mas j no pertencer a A&. Por exemplo, seja n = 13, m = 16
e k = 4. Suponha que os processadores possuam identificadores 1, 2, ... ,13 e estejam colocados
nesta ordem no anel. Ento teremos A1 = {1,5,9,13} e Ag = {9, 13, 4, 8}. As modificaes no
algoritmo iniciam ao final da primeira fase, aps i desativar todos os processadores em ~. quando
i dever enviar mensagens ELEIO simultaneamente a todo processador j tal que i E Ai (o
que pode ser calculado j que i conhece n). Somente ao desativar todos estes processadores i
pode passar para a segunda fase. Na segunda fase, no passo 1!., i envia mensagem a todos os
processadores com distncia mltipla de k/2!., menos para aqueles que j foram desativados por
i. Alm disso i envia mensagem tambm a todo processador j tal que i est a distncia mltipla
de k/2'- de j. Assim pode-se assegurar que apenas um processador ir declarar-se lder. Com
estas modificaes, a complexidade de mensagens e de tempo do algoritmo alllllentam de um
fator constante.

3.2

Eleio em Hipercubos

Uma rede em hipercubo de dimenso d representada por um grafo com n = 2d ns rotulados


de Oa 2d -1, tal que existe uma aresta entre quaisquer dois ns se e somente se a representao
binria de seus rtulos diferem em um e apenas um bit, sendo que esta aresta normahnente
rotulada com o nmero do bit que diferencia os ns unidos por ela. Um hipercubo com dimenso
d possui ~dn, ou seja ~n log n, arestas, tendo cada n grau d.
Se temos disponvel os rtulos das arestas para uma rede em hipercubo, podemos dizer
que esta rede possui senso de direo. Este tipo de senso de direo ser chamado de modelo
baseado na dimenso, como o exemplo da figura 3.8 (a). Outro tipo de senso de direo,
anlogo ao descrito para redes completas, baseado em distncia relativa ao ciclo Hamiltoniano,
pode ser definido para o hipercubo. Como citado em [FM93], um dos mtodos para se construir
um ciclo Hamiltoniano em um hipercubo atravs do cdigo de Gray. Este cdigo binrio
refletido formado por uma seqncia de coordenadas usadas para a determinao do ciclo
Hamiltoniano no hipercubo. Por exemplo, para d = 3 o cdigo seria (01020102). Iniciando em
qualquer n e seguindo as arestas com rtulos na seqncia do cdigo, um ciclo Hamiltoniano
formado para o hipercubo. Para construirmos um hipercubo com senso de direo baseado nas
distncias relativas a partir de um hipercubo com senso de direo baseado na dimenso, basta
determinarmos o cdigo de Gray e rotularmos as arestas baseando-se na distncia entre os ns
atravs do ciclo formado usando o cdigo. A figura 3.8(b) mostra um exemplo de hipercubo de
dimenso 3 com senso de direo baseado em distncia.
O artigo [FM93] apresenta dois algoritmos para eleio em hipercubos com senso de direo
e outros dois algoritmos que possibilitam a transio de uma orientao para outra. O algoritmo

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

Algoritmo de Flocchini e Mans

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

3.2. Eleio em Hipercubos

31

desativar o processador ativo de outro sub-hipercubo (agora de dimenso 1). O processador


passivo juntamente com o processador que o desativou formam um hipercubo de dimenso 1.
Em seguida os n/2 processadores ativos dos hipercubos de dimenso 1 disputam dois a dois e
formaram n/4 hipercubos de dimenso 2. Este procedimento repetido sucessivamente at que
reste um hipercubo de dimenso d e com um nico processador ativo.
fnndamental que um processador ao ser desativado mantenha o conhecimento do caminho
at o processador que o desativou para que ao receber alguma mensagem de ELEIO no futuro
esta mensagem seja retransmitida. Para a construo desse caminho basta ir acrescentando o
rtulo dos canais de comunicao que a mensagem ELEIO for percorrendo. De acordo com a
formao do hipercubo sabemos que para partir de um processador com rtulo binrio aaa2a1ao
e chegar ao processador a3 a 2 a1 a0 devemos passar 1 + 2k vezes (sendo k um nmero natural)
pelos canais com rtulos O, 1 e 3 no importando a ordem, pois sabemos que ao percorrer um
canal com rtulo r chegaremos a um processador com rtulo que difere no bit r em relao ao
processador na outra extremidade do canal. Ou seja, se temos conhecimento de um caminho
entre os processadores i e j dado por <1,2,3>, sabemos que, por exemplo, os caminhos <3,2,1>,
<1,2,1,3,1> e <2,1,3> tambm levam de i a j e de j a i. Na figura 3.9 temos um exemplo
de diferentes caminhos entre dois processadores. Em um hipercubo sabemos que a distncia
mxima entre dois processadores d, portanto uma forma de representar um caminho entre dois
processadores atravs de uma seqncia de d bits, sendo que o bit da posio r um, caso
r seja o rtulo de um canal de comunicao que faz parte do caminho entre os processadores.
Exemplificando, um caminho <0,2,3> em um hipercubo de dimenso 5 dado pela seqncia
(01101).

Figura 3.9: Exemplos de caminhos entre os processadores i e j ( <1,2,0>, <2,0,1> e <0,1,0,2,0> ).


Para o algoritmo, um processador pode ter trs valores para seu estado: ativo, passivo e
eleito. As mensagens do algoritmo so apenas ELEIO e ELEITO. Cada processador i
inicia a execuo do algoritmo, com estado = ativo e passo = O, enviando uma mensagem

32

3.2. Eleio em Hipercubos

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)

~ 1+ td(k-1,k) ~ 1 + tk~ 1+p.(p2+ 1).


k=l

k=l

Assim, o nmero total de mensagens enviadas pelo algoritmo no mximo:

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

3.2. Eleio em HipercubOB

33

Algoritmo de Flocchini e Mans para o Processador i


Variveis:
estado = ativo;
passo= O;
lder= O;
fim= FALSE;
send ELEIO(i,passo,O, O) to O;
while not fim do begjn
if estado = ativo then begin
receive ELEIO(j,p,origem,destino) from c;
if p =passo then begin
ifi > j and p = d-1 then begin
f* d a dimenso do hipercubo*/
estado = eleito;
for (l = O; l < d; l + +) send ELEITO( i) to l;
fim= TRUE;

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;

truta as mensagem pendentes;

end
end else if p >passo then begin

coloca a menaagem em uma fila de mensagem pendentes;

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

for (l =O;l < c;l++) sendELEITO(j) to I;


fim =TRUE;

end
end
end

Figura 3.10: Algoritmo de Flocchini e Mans para hipercubos com senso de direo baseado na
dimenso.

3.2. Eleio em Hipercubos

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

Figura 3.11: Exemplo de funcionamento do algoritmo de Flocchini e Mans.

=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

6n- 4logn- (lognj2- 6


n
f!_= 2n-logn-2
2P
n
logn

1
1
L:-="p=12P
n

3.2. Eleio em Hipercubos

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

3.2. Eleio em Hipercubos

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

2P:' (2l(p+l)/2J -1) + n.

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

Substituindo o log n por co temos:

logn-1 ( 1

L
p=O

)p

p=O

1 logn-1 ([)P)

2vz + 2

p=O

3.2. Eleio em Hipercubos

37

Algoritmo de Tel para o Processador i


Variveis:
estado = ativo;
passo= O;
lfder = -1;

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

> j andp< d-1 then begin


for (l = L(passo+ 1)/2J -1; l;;::: O;l- -) send ANNCIO(passo) to l;
passo= passo+ 1;
send ELEIO(i,passo) to passo;

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.

3.2. Eleio em Hipercubos

.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

Figura 3.13: Exemplo de funcionamento do algoritmo de Tel.


Logo a complexidade de mensagens O(n). Considerando que sejam necessrios logm bits
para se representar os identificadores dos processadores, o tamanho da maior mensagem igual
a logm + logn bits, usados para representar o identificador e a varivel passo respectivamente.
Como o algoritmo executa em passos, sua complexidade de tempo dada pelo somatrio dos
tempos de execuo de cada passo. Por fazer a difuso da mensagem ELEIO e ANNCIO em
paralelo e no seqencialmente com em [FM93], cada passo do algoritmo necessita de O(Iog n)
unidades de tempo para terminar. Assim a complexidade de tempo do algoritmo igual a
O(log2 n)

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:

estado: refere-se ao prprio estado do n;


estado_viz: refere-se ao estado de seu vizinhoj
n: o nmero total de processadores no anel.
Baseado no seu prprio estado e no estado de seu vizinho1 um processador pode ou no
possuir o direito de utilizar o recurso compartilhado. Portanto, um estado legtimo do sistema
consiste em apenas um processador fazer uso do recurso por vez.

39

4.2. Eleio em Anel Uniforme

40

Cada processador deve seguir o seguinte algoritmo:


para o processador base:
if (estado = estado_viz) begin

estado = (estado+ 1) mod n;


"processador usa recurso"
end
para os outros processadores:
if (estado

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

Eleio em Anel Uniforme

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

4.2. Eleio em Anel Uniforme

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~

4.2. Eleio em Anel Uniforme

42

(R1): when ({x = y) and {y = n)) begin

b=(b+l)modn
''mudana de estado"
end

(R2): when {x < y) begin


b= (b+ 1) modn
"mudana de estado"

end

Figura 4.2: Regras do algoritmo de Huang.


(R1): when (( x

= 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

Figura 4.3: Outra forma de escrever as regras do algoritmo de Huang.


=

(b- a) mod n, caso contrrio.

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

4.2. Eleio em Anel Uniforme

43

intervalo {0, 1, ... , n - 1}.

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

Figura 4.4: Exemplo de funcionamento do algoritmo de Huang.


A correo deste protocolo baseia-se na prova de que o algoritmo termina e quando isso
ocorre todos os processadores possuem rtulos distintos. Para a demonstrao da terminao
do algoritmo, deve-se provar que em algum momento todos os gaps possuiro o mesmo valor
pois, enquanto houver gaps com valores diferentes um dos processadores poder mudar seu
estado. Para isto so definidas trs funes: F, G e B. G Eul, onde portanto n :$ G :$ n 3
pois 1 :$ g :$ n. B definida como sendo o nmero de pares de gaps (u, v) tais que u = v - 1
e Vw: (... u ... w ... v... ): (w = u) V (w =v). A notao ( ...u ...w ... v ... ) significa que w um valor
de gap entre u e v. Como h n(n- 1) pares ordenados de gaps, temos O ~ B ~ n(n- 1).
F
(G,B), como G e B so funes limitadas, F tambm limitada. demonstrado em
[Hua93] que a cada aplicao de uma das regras R1 ou R2 (mudana de estado do processador)
uma das funes G ou B decresce. Com isso, F tambm decresce e sendo F finita, em algum
instante, as regras no podero mais serem aplicadas. Com a estabilizao teremos todos os
gap8 com mesmo valor.
Agora vamos mostrar a demonstrao de que todos os r6tulos so distintos quando todos os
gap:J possuem o mt>llmo valor m, O < m < n. Por contradio, suponha que os rtulos no so
distintos; portanto dois processadores possuem o mesmo r6tulo a e distncia k com O < k < n.
No teorema 1 do artigo [Hua93] demonstrado que para quaisquer dois rtulos a e b do anel
com distncia k entre eles e valores de gaps intermedirios go,91,9k-1 a relao a seguir
assegurada:

k-1
(

~9i

modn=(b-a)modn.

4.2. Eleio em Anel Uniforme

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

Algoritmo de Itkis et ai.

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

Figura 4.5: Exemplo de anel subdividido em segmentos.


Dois segmentos vizinhos, atravs de suas bordas (fim do segmento da esquerda e incio
do segmento da direita), decidem medir seus comprimentos. O protocolo de medida funciona
como segue: as duas bordas se marcam como MAIS DISTANTE. O segmento da direita inicia

4.2. Eleio em Anel Unifonne

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.

proc_med_dir (estado processador na medio da direita):

proc_med_esq, agora para o caso de medio da direita;

semelhante varivel

4.2. Eleio em Anel Uniforme

46

Algoritmo de Itkis et ai. para o Processador i


Variveis:

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

est..med.ir; =limpeza; // estado da medio da direita


l{der; =O;

while TRUE do begin


REGRA!;
REGRA2;
REGRAS;
REGRA4;
REGRA5;
REGRA O;
REGRA 7;
REGRA 8;
REGRA 9;
end

Figura 4.6: Algoritmo auto-estabilizante de Itkis et ai. para anel uniforme.


8. est_mecLdir (estado da medio da direita): semelhante varivel esLmed_esq, agora
para o caso de medio da clireita;
9. lder: indica se o processador ou no o lder (valor binrio 0,1).
A descrio do algoritmo, apresentada na figura 4.6, composta de vrias regras que so
descritas em outras figuras posteriores. As letras sub-escritas e {vizinho esquerdo), d {vizinho
direito) e i (processador i) so usadas para indicar a que processador uma varivel pertence. A
regra 1, apresentada na figura 4. 7, usada apenas para eliminar segmentos de tamanho unitrio.
Caso haja trs processadores consecutivos no anel com mesmo rtulo o do meio deve mudar seu
rtulo.
A regra 2, apresentada nas figuras 4.8 e 4.9, refere-se passagem da ficha de mudana de
rtulo e a segunda a ser executada pois a ficha de mudana o de maior prioridade e deve ser
passado ao prximo vizinho. A ficha de mudana passado adiante at que seja encontrado um
processador com a varivel mud_dir ou mud_esq, dependendo da direo, igual a no, indicando
que no deve mudar seu rtulo, ou quando o rtulo do processador for diferente. As regras 2A
e 2B so anlogas, cada uma referente a uma direo de passagem de ficha (para a esquerda ou
direita respectivamente). A nica diferena que em 2B quando a ficha de mudana eliminado
a varivel vez tambm atualizada, para forar o vizinho direito a limpar suas variveis quando
for selecionado para executar a medio da direita como processador in(cio.
Na figura 4.10 apresentada a regra 3 que consiste na passagem da ficha de limpeza. A ficha

4.2. Eleio em Anel Uniforme

47

Algoritmo de Itlds et ai. para o Processador i

REGRA 1: elimina segmentos de tamanho 1.


if rtv.loe = rtula. and r6tulod
rtulo; = not rtulo;;
end

= r6tulo; then

Figura 4.7o Regra 1.


de limpeza possui a segunda maior prioridade e sua passagem muito simples. O processador
vizinho apenas limpa a varivel que indica se ele o processador mais distante e copia a ficha
sem que seja necessrio pedir para que a ficha seja passado. As partes A e B da regra 3 so
simtricas.
Caso um processador Pi esteja esperando para receber uma ficha, mas quem deveria envilo no o fez nem possui mais a ficha, algo de errado aconteceu. O erro corrigido com Pi
inicializando seu estado. Isso ocorre com a espera pelas fichas de mudana e de volta. Na figura
4.11 apresentada a regra 4, dividida em 4A para a medio da esquerda e 4B para medio da
direita.
A regra 5 (figura 4.12) aplicada quando um processador borda recebe UIDa ficha de meWo.
Para um processador incio~. se ele o mais distante em uma medio da esquerda, ele conclui
que seu segmento menor que o segmento da direita, ento muda seu rtulo e passa a ficha
de mudana para a direita. Caso contrrio, ~ envia a ficha de volta de medio. Para um
processador fima tarefa simtrica. A parte A da regra 5 corresponde ao processador incio e a
parte B ao processador fim.
Dois processadores borda vizinhos usam a varivel vez para determinar de quem a vez de
realizar a medio. Considerando um processador borda~ e seus vizinhos Pe (vizinho esquerdo)
e Pd (vizinho direito), se vezi +veze for mpar e est_med_diri =volta ento vez de Pe realizar a
medio. Caso contrrio a vez de Pi. A varivel vez atualizada quando o processador borda
recebe a ficha de volta. Um processador incio em sua vez sempre tentar executar um novo
protocolo de medio (para caso alguma ficha se perca) e sempre envia uma ficha de limpeza.
Na figura 4.13 apresentada a regra 6 que realiza a criao das fichas de medio e limpeza,
descrita acima. A primeira parte da regra (6A) executada pelo processador incio e a segunda
parte (6B) pelo processador fim. As duas partes no so simtricas, pois o processador incio
sempre comea o protocolo de medida.
A figura 4.14 apresenta a regra 7 que controla a passagem da ficha de volta da medio
que ir eliminar qualquer ficha de medio encontrado. Antes de passar a ficha de volta de
medio, o processador copia o valor do estado do processador vizinho na medio ( mais_distante
ou norman. Isso far com que a marca de mais distante seja passada adiante. Quando um
processador recebe a ficha de volta da medio, ele troca o valor de sua varivel vez para que a
vez de medir seja passada ao outro segmento. As duas partes da regra 7 so simtricas.

4.2. Eleio em Anel Uniforme

48

Algoritmo de Itlds et ai. para o Processador i


REGRA 2A: passagem da ficha mudana.
if (est.me..dird =mudana) and (est..me..dir; =F mudana) and (mu..esq; =sim}
and (rtulot = rtulod} then begin
proc_med..dir; = normal;
est_me..dir = recebe...mudana; I I pede para receber a ficha de mudana
end
if ((est_med..ir; = recebe...mudana) and (est..me..dird =normal)) and (mu..esqo =sim)
and (rtulot = rtulo.t) then begin
I I recebe a ficha de mudana e troca seu rtulo
rtulo; = not rtuloo;

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;

# rtulot) then begin

end
end

Figura 4.8: Regra 2A.

4.2. Eleio em Anel Uniforme

49

Algoritmo de Itkis et ai. para o Processador i


REGRA 2B: passagem da ficha mudana.
if (est..med..esq., = mudana) and (est..med..esq; i: mudana) and (mud.dir, =sim)
and (rtulo., =rtulo.,;) then begin
proc..med..esq,: = normal;
est..med..esq; = recebe..mudana; // pede para receber a ficha de mudana
end
if ((est.med..esq; = recebe..mudana) and (est_med..esqe = normal)) and (mtul..dir; =sim)
and (rtulo; = rtuloe) then begin

f/ recebe a ficha de mudana e troca. seu rtulo


rtulo; = not rtulo;:;
vez; = O;
mud..dir; = no;
proc.me..esq; = normal;
estJned..eBqo = mudana;
mud..esq; = no;
proc...med..dir; = normal;
est..med.dir, = limpeza;

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

f/ atualiza. a varivel vez


mtul..dir; = no;
proc..med..esq; = normal;
est..me..esq; = limpeza;
ve.z; = not veZdi

end
end
end

Figura 4.9: Regra 2B.

4.2. Eleio em Anel Uniforme

50

Algoritmo de Itkis et ai. para o Processador i


REGRA 3: passagem da ficha limpeza.
REGRASA:
if (rtulo. '# rtuloe) and (est_med.dire = limpeza) then begin
est-med.dir; =limpeza;
proc.med.dir, = normal;
end

REGRA3B:
if (rtulo; '# rt'Uloa) and (est.med.esqa =limpeza) then begin
est.med..esq; = limpeza;
proc.nted.esq;. = normal;
end

Figura 4.10: Regra 3.

Algoritmo de Itkis et ai. para o Processador i


REGRA 4: correo de erro.
REGRA4A:
if (est.med.dir;. = recebe..mudana) and
then begin
mu.esq;. = no;
proc.nted.dir, = normal;
est.me.dir; =limpeza;

((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

and (est.nted..esqe =F normal))

= recebe_volta) and ((est.med..esqe =F volta) and (est.med..esqe =F normal))


then begin
mu.diro = no;
proc..med.esq; = normal;
est.med.esq; = limpeza;

end

Figura 4.11: Regra 4.

51

4.2. Eleio em Anel Unifonne

Algoritmo de Itkis et al. para o Processador i


REGRA 5: criao das :fichaB mudana e volta.

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

Figura 4.12: Regra 5.

_,<;\u:. :~

n;:-.t. te'!. i<:

'~~.

i.-~-----~--_,-'

4.2. Eleio em Anel Uniforme

52

Algoritmo de Itkis et ai. para o Processador i


REGRA 8: criao das fichas medio e limpeza..
REGRA 6A:
if (rtuloe = rtulo;) and (rtulo, i= rtulod) then begin
if (est..med..din =volta) and (veze + vez; = 1) then begin
exit; I f vez do vizinho esquerdo
end
if ( veze + vez; = 1) then begin
// envia ficha de limpeza para reinicia o protocolo de medio
est.med..dir; =limpeza;
vez,: = rtuloe ; I I mudar vez; tal que (vez;+ veze) seja par
end
if ((est..med..din = limpeza.) and (est..med..dird =limpeza) and (est.med..esqe =limpeza.)) or
((est.med..esqe =volta) and (est..med..dir; =volta)) then begin
I/ inicia protocolo de medio
mud..esq; = sim;
proc..med..dir; = mais..distante;
est..med..din = medio;
end
else if (est..med..dir =f. medio) then begin
// aconteceu algum erro, necessrio limpar
mud..esq, = no;
proc..med..dir; =normal;
est..med..dir, =limpeza;
end
end
REGRA 8B:
if (rtuloc~ = rtulo,) and (rtulo, =f. rtuloe) then begin
if not ((est..med...dird =volta) and (veze + vezd = 1)) then begin
if (est..med...dird =limpeza) then
est..med..esq; = limpeza; // faz limpeza
end
exit; // a vez do outro processador
end
if((est..med_esqe =limpeza) and (esLmed..esq, =limpeza)) or (est_med_esq; =volta) then begin
// inicia protocolo de medio
mud..dir, = sim;
proc_med_esq; = mais_distante;
est..med..esq; = medio;
end
else if (est..med...esq; i= medio) then begin
/I aconteceu algum erro, necessrio limpar
mud..dir; = no;
proc..med....esq, = nonnal;
est_med...esq; = limpeza;
end
end

Figura 4.13: Regra 6.

4.2. Eleio em Anel Uniforme

53

Algoritmo de Itkis et ai. pBra o Processador i


REGRA 7: passagem da ficha volta.
REGRA7A:
if (rtulo;: #= rtuloa) then begin
if (est..med..dira = volta) then
est..med..dir; =recebe_volta; I I pede para receber a ficha de volta de medio
end
if (est..med..dir; = recebe_volta) and (est..med..dira =normal) then begin
I I recebe a ficha de volta de medio e troca o valor da varivel vez
vez,; = not vez;:;
est_med..dir;: =volta;
end
if (est..med..esq, =volta) and (est..med..esqa = recebe_volta) then begin
I I copia o estado do processador vizinho e passa a ficha de volta de medio
proc..med..esq;: = proc..med..esqa;
est..med..esq; =normal;
end
end
REGRA'TB:
if (rtulo; #= rtuloe) then begin
if (est..med..esqe =volta) then
est..med..esq; = recebe_volta; I I pede para receber a ficha de volta de medio
end
if (esi..med..esq;: =recebe_volta) and (est..med..esqe =normal) then begin
I I recebe a ficha de volta de medio e troca o valor da varivel vez
vez,; = not vez;:;
est..med..esq; = volta;

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

Figura 4.14: Regra 7.

4.2. Eleio em Anel Uniforme

54

Algoritmo de Itlds et ai. para o Processador i


REGRA 8: passagem da ficha medio.

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

Figura 4.15: Regra 8.


Algoritmo de ltlds et ai. para o Processador i
REGRA 9: eleio do lder.
if (est.med..dir;. = medio) then begin
if (rtulo; = rtuloe) and (rtulo;'#; rtuloct) then begin
l{der; = 1;
else
l{der,: =O;
end
end

Figura 4.16' Regra 9.

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.

4.2. Eleio em Anel Uniforme

55

Figura 4.17: Exemplo de funcionamento do algoritmo de Itkis et al.


Este algoritmo est livre de deadlock visto que a cada configurao do sistema algum dos
processadores estar apto a mudar seu estado, pois o processador incio sempre tentar iniciar
uma nova medio e com a mudana de estado de um processador, um de seus vizinhos estar
apto a tambm mudar seu estado. Com a execuo do algoritmo, o nmero de segmentos sempre
diminuir, visto que com a medio o processador de tamanho menor ir juntar-se ao maior.
Devemos lembrar que o nmero de processadores no anel primo, portanto haver sempre segmentos de tamanhos diferentes. Assim, o protocolo se auto-estabilizar quando possuir apenas
um segmento e o processador incio ser o lder.
Em (ILS95] demonstrado que o protocolo estabiliza em tempo finito, utilizando O(n2 )
passos. Considere dois segmentos adjacentes A e B com comprimentos x e y respectivamente,
onde x < y. Para o segmento A se llllir a B necessrio que cada processador de A e B sejam

4.8. Eleio em Redes Genricas

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

Eleio em Redes Genricas

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

4.3. Eleio em Redes Genricas

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

4.3. Eleio em Redes Genricas

58

processador Pi retoma verdadeiro se Pj filho de Pt, baseada no valor de paii[j]. A funo


Escolhe_cor escolhe aleatoriamente uma cor dentre um conjunto de seis valores (O a 7 menos a
cor atual da rvore e a cor anterior).
Considere dois valores aidt e aid2 para a varivel aid. A relao aid1 > aid2 verdadeira
quando aid2 prefixo de aid1 ou se o primeiro bit de aidi 1, sendo aidi e ait; derivados de
aid1 e aich. removendo o prefixo maximal comum. A relao ( (aid~, disl) ?- ( aid2, dis2)) vlida
se aidt > aich ou se aidt = aid2 e dis1 < dis2.
Na figura 4.19 pode ser visto um exemplo do funcionamento do algoritmo de Dolev et al.. No
estgio A da figura podemos ver as ligaes entre os processadores. As variveis aid, dis, cm",
ciente e na de cada processador esto apresentadas entre parnteses nessa ordem. A varivel
pai representada pela seta entre os processadores. A cada estgio escolhido um processador,
apresentado de forma destacada, para executar o algoritmo. Os processadores iniciam com
valores quaisquer para as variveis aid, dis, pai e cor. O processador com maior aid em sua
vizinhana toma-se raiz. Nos estgios E e F os processadores escolhidos para executar tm
duas opes para seus pais (dois processadores com mesmo aid mximo e dis mnimo) e podem
escolher qualquer um dos dois. No estgio G temos duas rvores com mesmo aid e em H o
processador raiz de uma das rvores estende seu aid para que seja iniciada a fuso das rvores.
Ao final do estgio N temos uma nica rvore.
Como o protocolo faz uso da abstrao de variveis compartilhadas, ele utiliza dois protocolos
para sincronizao um local e outro global. O protocolo de sincronizao local projetado para
um sistema com dois processadores. O protocolo de sincronizao global uma extenso do
protocolo local para um sistema com estrutura de rvore. A fase de fuso de ciclos utiliza o
protocolo de sincronizao global.
Aps um certo tempo de execuo, o algoritmo de eleio leva configurao de uma floresta,
sendo que a configurao do sistema permanece uma floresta pelo resto da execuo. Esta floresta
convertida em uma nica rvore que no mais alterada; o processador raiz declarado lder.
O tempo gasto para a eleio O(... D logn) rounds, onde n o nmero de processadores na
rede, ... o nmero mximo de vizinhos de um processador, D o dimetro da rede, ou seja,
a distncia mxima entre dois processadores. O algoritmo possui uma complexidade de espao
igual a O(logn) para armazenar o estado de cada processador.

4.3. Eleio em Redes Genricas

59

Algoritmo de Dolev et a1.


while (TRUE) do
begin
for (j = 1) to 8 do

(aid;[j], dis;[i],pai;fJ1,cor;fJ1, ciente;fJl, na;f.11) = read{rj);


max..aid= max{aid;[j]};
min.is = min{aid;[j] I aid;fJ1 = maa:..aid}+1;
if (aid;[pai;],dis,[pai,]) = (max..aid,min.is -1) then
(F,COR,CI,NA) =(pai;, cor;, ciente;, na;);
else begin

F= {primeiro j I aid,[j] max..aid and dis.:[j]


(COR, OI, NA)= (cor,:[F],false,false);

= min.is -1};

end

if (aid1, dis,:) ~ (max..aid,min.is) then


write (dis;,pai,:) = (0, nil);
el~

write (aid;,dis;,pai;,cor~,ciente;,na,) = (maz..aid, min.is,F, COR, GI,NA);


if (Vil (aid.:[j] = aid.:) and {ldis,- dis;[j]l ::;; 1) then
FUso _de _rvores{);
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~

write na; = false;


write (cor,, ciente;)= (cor;:[pai;],false);
end
else

'*

ifnot ciente,; and {Vilfilho(j)


((cor.:[j] =cor,) and ciente,[.11)} then
begin
if{ 3jl filho(j) and na;fj] =TRUE} then

na, =TRUE;
write ciente,= TRUE;

end
end

Figura 4.18: Algoritmo auto-estabilizante para redes genricas.

4.3. Eleio em Redes Genricas

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)

Figura 4.19: Exemplo de funcionamento do algoritmo auto-estabilizante para eleio em redes


genricas de Dolev et ai.

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

Algoritmos probabilsticos em redes annimas

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. Algoritmos probabilsticos em redes annimas

5.1.1

62

Com conhecimento do nmero de n6s da rede

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;

5.1. Algoritmos probabilfsticos em redes annimas

Algoritmo deItai e Rodeh (A)


Variveis:
t =O;
ativo = TRUE;
candidato = TRUE;

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

Figura 5.1: Algoritmo sncrono para redes annimas com n conhecido.

63

5.1. Algoritmos probabilsticos em redes annimas

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.

a-c a probabilidade de se ter c candidatos;


( 1 - ~)a-c a probabilidade de ser ter a - c no candidatos.
Conforme demonstrado em [IR90], o nmero de fases do algoritmo L ~ 2, 44 e o nmero
mdio de candidatos por fase 1. Portanto, podemos concluir que a complexidade de tempo
para eleger um lder em um anel sncrono com n processadores igual a Ln. A complexidade de
mensagens necessrias para a eleio de Ln bits, pois cada fase possui n intervalos de tempo e
na mdia um candidato, o qual envia uma mensagem que deve percorrer todos os n processadores
do anel. Para este algoritmo so necessrios log n bits de memria para armazenar o nmero de
candidatos a lder em uma fase.
Uma modificao ao algoritmo anterior proposta no artigo com a finalidade de diminuir
o tempo de eleio. Essa alterao no algoritmo aumenta a complexidade de mensagens e
a memria utilizada, adicionando um parmetro q conhecido por todos os processadores. O
algoritmo modificado tambm dividido em fases e como anteriormente todos os processadores
iniciam ativos. No incio da fase, um processador envia uma mensagem com probabilidade
qfn. Todo processador p possui um vetor W(p) onde Wi(p) = 1 caso uma mensagem tenha
passado por p no _simo intervalo de tempo da fase. Os W (p) 's dos diferentes processadores
so deslocamentos circulares uns dos outros, e a partir do seu W (p) cada processador pode
calcular os W(p)'s dos demais. Se todos os W{p)'s so distintos ento o lder escolhido como
sendo o processador com W (p) de menor valor lexicogrfico. Caso contrrio, o algoritmo deve ser
executado novamente. Para esse melhoramento do algoritmo demonstrado, no artigo original,
que o nmero esperado de fases converge para {1- e-q)- 1 e a complexidade de mensagens em
bits por processador converge para q{1- e-q)- 1 .

5.1. Algoritmos probabilsticos em redes annimas

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

5.1. Algoritmos probabilsticos em redes annimas

Algoritmo deItai e Rodeh (B)


Variveis:
ativo = TRUE;
iniciou = FALSE;
meucont = O;
lfder = FALSE;

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

INiCIO DA FASE DE VERIFICAO


cont = 1;
send CONTADOR(cont) to Pi+ti
meucont = O;
end
else if M = CONTADOR(cont) then
if ativo then begin
meucont = meucont +1;
if cont = n then
if meucont = 1 then begin
lfder = TRUE;
send ELEITO to Pi+t;
end else

I I REINICIA FASE DE SELEO


Inicia{);
else begin
cont = cont + 1;
send (cont) to PHti
end
else begin
cont = cont +1;
send (cont) to PHti
end
else if M = ELEITO then begin
if not lfder then
send ELEITO to .Pi+t;
fim= TRUE;
end

end

Figura 5.3: Algoritmo assncrono para redes annimas com n conhecido.

5.1. Algoritmos probabilsticos em redes annimas

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

I!Wpetir Fases de Seleo e Verificao ~


Figura 5.4: Exemplo de uma iterao do algoritmo assncrono de Itai e Rodeh com conhecimento
den.

5.1. Algoritmos proba.bilJsticos em redes annimas

5.1.2

68

Sem conhecimento sobre o tamanho da rede

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

5.1. Algoritmos proba.bilisticos em redes annimas

Algoritmo de Itai e Rodeh (C)


Variveis:
t =O;
fase= 1;

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

Figura 5.5: Algoritmo sncrono para redes annimas com N

n < 2N.

5.1. Algoritmos probabilstiCOB em redes annimas

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.

5.1. Algoritmos probabilsticos em redes annimas

71

ou no mximo n bits caso contrrio. Na segunda sub-fase da fase de verificao so gastos n


bis se houver mais de wn candidato e nenhwn bit caso contrrio. Portanto a cada invocao
do algoritmo so gastos n + N - 1 bits se wn nico candidato for selecionado, caso contrrio
so necessrios :::; 3n bits. A complexidade de tempo de cada invocao do algoritmo de
ksel(2N -1) + 3N- 2, sendo ksel o nmero de repeties da fase de seleo at que pelo menos
wn candidato seja escolhido. O nmero ksel e a probabilidade de que o algoritmo seja invocado
mais de wna vez (mais de um.candidato na fase de seleo) dependem de q, N e n. De acordo
com demonstraes encontradas em [IR90] o nmero esperado de iteraes do algoritmo todo
kalg ~ 4, 27 e ksel ~ 2, 54. Portanto a complexidade de tempo total do algoritmo :
T = k. 1,(3N- 2 + k,,z(2N- 1))

< 34, 52N- 19, 39.

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

5.1. Algoritmos probabilsticos em redes andnimas

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

Figura 5. 7: Algoritmo de Matias e Afek para redes annimas sem conhecimento de n.


Para este algoritmo no h deteco de terminao, pois nada se conhece sobre o tamanho
da rede. No entanto, garantido que em algum momento todos os processadores da rede tero
o mesmo mximo, o sistema estar estvel e o lder ser o processador com pai= O.
A figura 5.8 podemos ver wn exemplo de funcionamento do algoritmo de Matia.5 e Afek.
No exemplo a identificao mxima que cada processador conhece representada por apenas
um nmero e apresentada dentro do crculo que representa o processador. Sempre que um
processador inicia a execuo, que acontece espontaneamente ou ao receber uma mensagem, ele
escolhe um valor para sua identificao e a envia a todos os seus vizinhos. Inicialmente (estgio
A) somente dois processadores iniciam a eleio. Ao final (estgio E) a maior identificao a
circular pela rede a igual a 7 e uma rvore geradora do grafo que representa a topologia da
rede formada.

5.1.

Algoritm~

probabilsticos em redes annimas

Grafo indicando a Rede

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

5.1. Algoritmos probabilsticos em redes annimas

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

5.2. Algoritmos probabilsticos em redes no annimas

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

Algoritmos probabilsticos em redes no annimas

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,

5.2. Algoritmos probabilsticos em redes no annimas

76

Algoritmo de Itoi para o Processador p;

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

send COMPARA(a) to Pi+ti


end

investiga = TRUE;
end else if not ganhou begin
send INVESTIGA(mem,:) to P>+ti
mem; =a;
end
end

Figura 5.9: Algoritmo deItai para anel annimo.

5.2. Algoritmos probabilsticos em redes no annimas

77

aplica uma funo sobre os n valores (o seu e os n- 1 recebidos) e o nmero k resultante da


funo indica o processador Pk escolhido.
Seja B o conjunto {0, ... , n - 1} do qual os processadores escolhem seus valores para a
competio e bi o valor selecionado pelo processador .f'i. A funo definida por f(bo, ... , bn-d =
k = :E~l bi mod n.
A terminao do algoritmo ocorre aps todos receberem as mensagens dos demais processadores e assim encontrarem a identificao do vencedor. Para esta soluo, independente da
identificao do processador e dos valores escolliidos para a competio, cada processador possui
uma probabilidade igual a 1/n de vencer. O cardinalidade de B usada nesta soluo mnima,
pois para garantir a mesma probabilidade a todos devemos ter IBI 2:: n. Portanto o tamanho da
mensagem Iog lEI bits, pois cada uma contm apenas o valor escolhido por um processador.
Este algoritmo descrito na figura 5.10. Uma pequena ilustrao do funcionamento do algoritmo
bsico apresentado na figura 5.11.
Algoritmo de Chang ou Vernadat et ai.
for (c=O;

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;

Figura 5.10: Algoritmo bsico de Chang ou Vernadat et ai.


Algumas modificaes ao algoritmo bsico so apresentadas tanto em [Cha90] como em
[VAD94]. Em [Cha90] apresentada uma modificao para que alguns processadores tenham
probabilidade maior de vencer que outros. Para isso so acrescentados pseudo-processadores,
Pn a Pm-ll ao conjunto S. Caso ~ deva ter k vezes a probabilidade de vencer, associamos
k -1 pseudo-processadores ao processador Pi- Portanto, m- n corresponde ao nmero total de
pseudo-processadores necessrios para que as probabilidades de vitria dos processadores sejam
ampliadas.
Cada processador real deve escollier um valor do conjunto B = {0, ... , m -1 }, e cada pseudoprocessador vai usar o mesmo valor escolhido por seu processador real correspondente. A nova
funo definida por f(bo, ... , bm-d = k = ~~0 1 bi mod m. Se Pk for um pseudo-processador o
vencedor o processador real associado a ele. Na figura 5.12 temos um exemplo para o caso de
alguns processadores possurem mais chances, onde os pseudo-processadores so apresentados

5.2. Algoritmos probabilisticos em redes no annimas

Os processadores escolhem
seus valores e enviam aos outros.

78

O processador 2 eleito.

Figura 5.11: Exemplo de funcionamento do algoritmo bsico de Chang ou Vernadat et ai.


na mesma cor de seu processador real associado, sendo n = 5 em= 7.

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

5.2. Algoritmos probabilsticos em redes no annimas

79

clculo do restante dos vencedores.


No caso em que o nmero n total de potenciais competidores conhecido, porm nem
todos realmente participaro da eleio, o procedimento apresentado em [Cha90) o seguinte.
Cada processador Pi participante da competio escolhe n -1 valores, by, ... ,bf- 2 , onde
para O ::; k _::; n - 2, selecionado do conjunto {0, ... , n - k - 1}. Em seguida Pi envia os
n - 1 valores aos outros processadores. Passado um intervalo de tempo determinado para
que os valores escolhidos por todos os processadores participantes sejam recebidos, Pi deve
contar quantos participantes da competio existem. Seja m o nmero de real competidores,
cada processador deve ento renumerar os processadores de Q0 a Qm-1, sendo Q; o j_simo
processador com menor identificao dentre os m participantes. Ento aplicada a funo
J(b~-m, ... , b~-=._'l_l) = k = E~0 1 b'f-m mod (m). O processador correspondente a Qk o vencedor.
Em [VAD94] a soluo para o caso de m competidores dentre n processadores diferente. A
proposta consiste em mudar o intervalo de escolha dos valores para [1, ... , n!]. Cada processador
que deseja participar da competio escolhe um valor do intervalo e envia a todos os outros. Aps
esperar as mensagens de todos os competidores, cada processador deve reordenar os competidores
como no algoritmo de Chang do pargrafo anterior. Ento aplicada a funo (mod m) sobre a
soma dos m valores conhecidos pelos competidores e o processador que corresponde ao resultado
o vencedor. Com o intervalo de (1, ... , n!] garantido que todos os processadores possuiro a
mesma probabilidade de se tornar lder.

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

em [FM96], e [Tel93]). Os dois algoritmos executam a eleio atravs de passos de disputas


entre os sub-hipercubos, diferenciando-se na forma de obter a informao sobre os processadores
que venceram nos passos anteriores. O custo total de mensagens dos dois algoritmos o mesmo,
O( n log n) bits, considerando que a identificao dos processadores tenha tamanho mximo igual
a logn.
A auto-estabilizao urna abordagem ainda muito estudada na rea de algoritmos distribudos. O desenvolvimento de um algoritmo auto-estabilizante complexo, devido difcil
tarefa de demonstrar sua correo. Todos os algoritmos auto-estabilizantes descritos no presente
trabalho [Hua93, ILS95, DIM97] utilizam a abstrao de memria compartilhada e no fazem
estudo de complexidade de mensagens, que na maioria dos casos seria muito alta. A grande
preocupao em relao ao tempo de estabilizao do algoritmo. Os algoritmos de Huang e
de Itkis et al utilizam anel uniforme unidirecional de tamanho primo. O fato do tamanho no
ser um nmero composto essencial para que a auto-estabilizao ocorra. Em Huang assegurado que o algoritmo estabiliza aps cada processador passar por no mximo O(n) estados. O
algoritmo de Itkis et al possui uma outra caracterstica importante alm da auto-estabilizao,
sua memria utilizada por processador de tamanho constante, sendo necessrias O(n2 ) trocas
de estados dos processadores para que o sistema estabilize. Dolev et al propuseram um algoritmo para eleio auto-estabilizante em redes genricas, cuja idia bsica fonnar uma rvore
geradora da rede e eleger a raiz da rvore. Usando a definio de round da seo 4.3, o tempo
para estabilizao do algoritmo igual a O(...Dlogn) rounds, onde .6.. o grau mximo de um
n da rede e D o dimetro da rede. Outros artigos interessantes que tratam do problema de
auto-estabilizao so [BP89, Her90, AS96, GG96].
No captulo 5 so apresentados algoritmos que utilizam probabilidades, seja para conseguir
quebrar a simetria em redes annimas e realizar uma eleio com possibilidade de erro, seja para
proporcionar probabilidades iguais de vitria a todos os participantes da eleio, independente
de seu valor de identificao. Dentre os algoritmos para redes annimas descritos neste captulo
existem os que utilizam ou no o conhecimento do tamanho da rede e os sncronos ou assincronos.
Os algoritmos probabilsticos para redes no annimas apresentados possuem o interesse de
garantir a todos os competidores a mesma probabilidade de vitria. So apresentadas algumas
variaes do algoritmo bsico para o caso de alguns processadores possurem probabilidades
maiores de vencer, ou ser necessria a seleo de mais de um processador, ou ainda quando
apenas parte dos processadores desejar eleger-se.
Na tabela 6.1 temos uma viso dos algoritmos apresentados neste trabalho, onde so mostrados a referncia de cada algoritmo, o modelo de sistema utilizado e as complexidades de
mensagens, tempo e espao. Fica difcil fazer uma comparao visto que os algoritmos utilizam
modeloo diferentes.
O aspecto de tolerncia a falhas, no abordado neste trabalho, um problema que pode ser

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]

H. H. Abu-Amara. Fa.ult-tolerant distributed algorithm for election in complete


networks. Lecture Notes in Computer Scence, 312:355-373, 1987. Proceedings of
2nd International Workshop on Diatributed Algorithms.

[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)

D. Angluin. Local and global properties in networks of processes. In 12th Annual


ACM Sumposium on Theory of Computing, pages 82-93, 1980.

[AS96J

G. Antoniou and P. K. Srimani. A seH-stabilizing lea.der election algorithm for tree


protocol. Joumal of Parallel and Distributed Computing, 34(2),227-232, 1996.

[Bar96)

V. Barbosa. An Introduction to Distributed Algorithms, chapter 7, pages 183-200.


The MIT Press, 1 edition, 1996.

[BP89J

J. E. Burns and J. Pachl. Uniform self-stabilizing rings. ACM 7ransactions on


Progromming Languages and Systems, 11(2):330-344, Apri11989.

[CDK94J G. Coulouris, J. Dollimore, and T. Kindberg. Distributed Systems Concepts and


Design, chapter 10, pages 305-308. Addison-Wesley, 2 edition, 1994.
[Cha90J

C. Chang. Bidding against competitors. IEEE Transactions on Software Engineering,


16(1):10o-104, January 1990.

[CR79]

E. Chang and R. Roberts. A:n improved algorithm for decentrali.zed extrema-finding


in circular configurations of process. Communications of the ACM, 22{5):281-283,
May 1979.

[Dij74]

E. W. Dijkstra. Self-stabilizing systems in spite of distributed contrai. Communication


of the ACM, 17(11):643-644, November 1974.

[DIM97]

S. Dolev, A. Israeli, and S. Moran. Uniform dynamic self-stabilizing leader election.


IEEE 1hmsactions on Parallel and Distributed Systems, 8(4):424-439, Apri11997.
84

BlliLIOGRAFIA

85

[FM93]

P. Flocchini and B. Mans. Optimal elections in labeled hypercubes. Technical Report


TR-93-231, School of Computer Science, Carleton Univeraity, Ottawa, Canada, 1993.

[FM96]

P. Flocchini and B. Mans. Optimal elections in labeled hypercubes. Journal of Parollel


and Distributed Computing, 33:76-83, 1996.

[FMS]

P. Flocchini, B. Mans, and N. Santoro. Sense of direction: Definitions, properties and


classes. Networks, accepted October 1997.

[FMS96]

P. Flocchini, B. Mans, and N. Santoro. On the impact of sense of direction on


communication complexity. Technical Reporl TR-96-25, School of Computer Science,
Carleton University, Ottawa, Canada, 1996.

[GG96]

S. Ghosh and A. Gupta. An exercise in fault-conta.inment: Self-stabilizing leader


election. Information Processing Letters, 59(5):281-288, 1996.

[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]

H. Garcia-Molina. Elections in distributed computing systems. IEEE Transaction on


Gomputers, C-31(1),46-59, January 1982.

[Her90]

T. Herman. Probabilistic self-stabilization. Information Processing Letters, 35:63-67,


June 1990.

[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

S. Huang. Leader election in uniform rings. ACM Transactions on Programming


Languages and Systems, 15(3):563-573, July 1993.

[ll.S95]

G. Itkis, C. Lin, and J. Simon. Deterministic, constant space, self-stabilizing leader


election on uniform rings. Lectu.re Notes in Computer Science, 972:288-302, 1995.
Proceedings of 9th International Workshop on Distributed Algorithms.

[IR90]

A. ltai and M. Rodeh. Symmetry breaking in distributed networks. Information and


Gomputation, 88(1),6()-87, 1990.

{Ita90J

A. Itai. On the computational power needed to elect a leader. Lectu.re Notes in


Computer Science, 486:29-40, 1990. Proceedings of 4th International Workshop on
Distributed Algorithms.

[KB96J

J. L. Kim and G. G. Belford. A distributed election protocol for unreliable networks.


Journal of Parallel and Distributed Gomputing, 35(1),35-42, 1996.

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]

C. Lavault. Evaluation des algorthmes distribus. HERMES, 1995.

[LeL77]

G. LeLann. Distributed systems- toward a formal approach. Proceedings of the IFIP


Congress, pages 155-160, 1977.

[LMW86] M. C. Loui, T. A. Matsushita, and D. B. West. Election in a complete network


with sense of direction. Information Processing Letters, 22:185--187, 1986. Correo:
Information Processing Letters, 28:327,1988.
[LR86]

I. Lavalee and G. Roucariol. A fully distributed (minimal) spanning tree algorithm.


Injormation Processing Letters, 23:55-62, 1986.

[Lyn96]

N. Lynch. Distributed Algorithms, chapter 3,15. Morgan Kaufmann, 1 edition, 1996.

[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]

G. L. Peterson. An o(n log n) unidirectional algorithm for the circular extrema


problem. ACM 1hmsactions on Programming Languages and Systems, 4(4):758-762,
October 1982.

[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]

A. Silberachatz and P. B. Galvin. Operating Systems Concepts, chapter 18, pages


595-600. Addison-Wesley, 4 edition, 1994.

[Sin96]

G. Singh. Leader election in presence of link failures. IEEE Transactions on Parallel


and Distributed Systems, 7(3),231-236, March 1996.

[Sin97]

G. Singh. Efficient leader election using sense of direction. Distributed Computing,


10(3p59-165, 1997.

[Tan92]

A. S. Tanenbaum. Modem Operating Systerns, chapter 11, pages 483-485. Prentice


Hall, 1992.

[Tau89]

G. Taubenfeld. Leader election in the presence of n-1 initial failures. Information


Processing Letters, 33(1),25-28, October 1989.

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]

G. Tel. Introduction to Distributed Algorithms, chapter 2,7. Cambridge University


Press, 1 edition, 1994.

[Tel95]

G. Tel. Sense of direction in processar networks. SOFSEM'95, Lecture Notes on


Computer Science, 1012, 1995.

[Tsi93]

Y. H. Tsin. Incrementai distributed asynchronous algorithm for minimum spanning


trees. Gomputer Networks and ISDN Systems, 26:227-232, 1993.

[VAD94]

F. Vernadat, P. Azema, and K. Drira. Distributed coin tossing, June 1994.

Potrebbero piacerti anche