Title: Cap
 1Capítulo 5 Terminação e algoritmos básicos
- Ajay Kshemkalyani e Mukesh Singhel 
 - Distributed Computing Principles, Algorithms, 
and Systems  - Cambridge University Press
 
  2Topologias e abstrações
- Sistema Grafo não direcionado com pesos nas 
arestas G(N,L), onde n  N, l  L  - Topologia física 
 - Nós (Vértices) Nós da rede, todos os hosts 
(participando ou não)  - Arestas toda a Lan, Links da WAN, ligação direta 
entre hosts  - Ex. Figura 5.1(a) topologia  todos os links da 
WAN  -  Topologia lógica 
 - Nós (Vértices) Hosts onde a aplicação é 
executada  - Arestas Canal lógico entre estes nós 
 -  Totalmente conectado (Ex. Figura 5.1(b)) 
 -  Topologia sobreposta (overlay) 
 - Superposição na topologia lógica 
 - Meta Coleta eficiente de informação, 
distribuição ou procura  - Ex. anel, árvore, malha, hipercubo
 
  3Abstrações de Topologia 
- Figura 5.1 Topologia vista sob diferentes níveis 
de abstração 
  4Classificação e conceitos básicos
- Execução do aplicativo vs. Execução do algoritmo 
de controle  - Algoritmo de controle 
 - Para monitorar e prover funções auxiliares. Ex. 
ST, MIS, CDS, eleição de líder, gravação de 
estado global (deadlock terminação), check point  - Sobreposto ao aplicativo, mas sem interferir 
 - Envia e recebe eventos internos, sendo 
transparente a aplicação  - Ex. protocolo 
 - Algoritmos centralizados e distribuídos 
 - Centralizado Assimétrico configuração 
cliente-servidor gargalos são processamento e 
banda há pontos de falha  - Distribuídos Mais balanceados dificuldade de 
criar algoritmos perfeitamente distribuídos (Ex. 
Algoritmos de snapshot, baseados em árvores, 
etc...)  - Algoritmos simétricos e assimétricos
 
  5Classificação e conceitos básicos
- Algoritmos anônimos id dos processos não são 
utilizados na tomada de nenhuma decisão (em tempo 
de execução run-time)  - Estruturalmente elegantes, mas difíceis ou 
impossíveis de implementar. Ex. Eleição de líder  - Algortimos uniformes O número de processadores 
n, não pode ser um parâmetro do código  - Permite escalabilidade, entrada e saída de 
processos da computação é simples e apenas os 
vizinhos tem noção da mudança de topologia  - Algoritmos adaptativos Seja K (  n) o número de 
processadores participando no contexto do 
problema X quando este é executado. A 
complexidade deve ser expressa como função de K e 
não n.  - Ex. Exclusão mutua O overhead de acesso à seção 
crítica é expresso em termos de K  
  6Classificação e conceitos básicos
- Determinístico vs. Não determinístico 
 - Execução não determinística contém ao menos 1 
recebimento não determinístico, enquanto o 
determinístico contém nenhum  - Não determinístico Pode receber a mensagem de 
qualquer fonte.  - Determinístico A fonte é especificada. 
 - Dificuldades 
 - Sistemas assíncronos 
 - Deterministico todas as execuções produzem a 
mesma ordem parcial de eventos (utilizado em 
debugging, detecção de predicados instáveis, 
etc...)  - Não deterministico as execuções podem produzir a 
ordem parcial de eventos diferentes (tempo de 
envio e possível congestionamento imprevisível, 
atraso local variável) 
  7Classificação e conceitos básicos
- Sistema Assíncrono vs. síncrono 
 - Síncrono 
 - Limitado pelo delay de mensagens 
 - Escorregamento de relógios conhecidos. 
 - Limite superior de execução de um passo lógico 
conhecido  - Assíncrono Nenhum dos critérios anteriores é 
valido  - Algoritmos para solução de problemas dependem 
muito de modelos de sistema inteiramente 
assíncronos  - Controle on-line vs. Controle off-line 
 - On-line Executa enquanto o dado está sendo 
gerado. Vantagem clara para debugging, 
scheduling, etc...  - Off-line Requer que todo o dado seja analisado 
antes da execução. 
  8Classificação e conceitos básicos
- Algoritmos Wait-Free 
 - Resistentes a n - 1 falhas de processos. 
Operações em qualquer processo deve ser 
completada em um número certo de passos  - Robusto, mas caro 
 - Possível para exclusão mútua 
 - Pode nem sempre ser possível de se fazer. Ex. 
Problema do produtor-consumidor  - Canais de comunicação 
 - Ponto-aponto FIFO, Não FIFO, Na camada de 
aplicação.  - Normalmente provida pelo protocolo de comunicação.
 
  9Medições e métricas de complexidade
- Cada métrica é especificada utilizando-se o 
limite inferior (?), o limite superior (O) e 
complexidade justa (?)  - Métricas 
 - Complexidade de espaço por nó 
 - Complexidade de espaço do sistema (? n da 
complexidade por nó). Ex. Pior caso de todos os 
nós pode nunca ocorrer simultaneamente  - Complexidade de tempo por nó 
 - Complexidade de tempo do sistema. Os nós executam 
totalmente concorrentemente?  - Complexidade de mensagens 
 - Número de mensagens 
 - Tamanho das mensagens 
 - Complexidade de tempo das mensagens depende do 
número de mensagens , tamanho das mensagens, 
concorrência de envio e referencia de mensagens.  - Outras métricas Send e Receive, multicast. Como 
implementar?  - Memória compartilhada Tamanho da memória 
compartilhada Operações de sincronização 
  10Lista de Algoritmos Distribuídos 
 11Sync 1-initiator ST (enchente) 
 121-init Spanning Tree Síncrono Exemplo
- Figura 5.2 árvore em negrito
 
- Raiz designada. Nó A no exemplo 
 - Cada nó identifica seu pai 
 - Como identificar nós filhos
 
  131-init Spanning Tree Síncrono Complexidade
- Terminação Depois do diâmetro ser encontrado 
 - Como um processo pode terminar depois de setar 
seu pai?  -  Complexidade 
 - Espaço Local O(Grau) 
 - Espaço Global O(SEspaço Local) 
 - Tempo local O(Grau  Diâmetro) 
 - Complexidade de tempo de mensagem d pulos de 
mensagens  - Complexidade de mensagem Maior que 1, menor que 
2 mensagens / arestas, então l, 2l  - Spanning Tree análogo a breadth-first search
 
  141-init Spanning Tree Assíncrono 
 151-init Spanning Tree Assíncrono Operação
- Root inicia a enchente de QUERY para identificar 
os vértices da árvore  - Pai 1 nó pelo qual se recebe um QUERY 
 - ACCEPT (resp ) enviado como resposta QUERY 
enviado para os vizinhos  - Terminação quando ACCEPT ou REJECT (resp -) 
recebido de um vizinho não pai. Porque?  - QUERY de um não pai respondido com um REJECT 
 - É necessário rastrear os vizinhos? Determinar os 
filhos e quando terminar?  - Porque o tipo de mensagem REJECT é necessário? 
 - A mensagem de REJECT pode ser eliminada? Como? 
Qual o impacto? 
  161-init Spanning Tree Assíncrono Complexidade
- Terminação Depois de receber um REJECT ou ACCEPT 
de um vizinho não Pai  -  Complexidade 
 - Espaço Local O(Grau) 
 - Espaço Global O(SEspaço Local) 
 - Tempo local O(Grau) 
 - Complexidade de tempo de mensagem d  1 pulos de 
mensagens  - Complexidade de mensagem Maior que 2, menor que 
4 mensagens / arestas, então 2l, 4l  - Spanning Tree Pior caso altura igual a n - 1
 
  171-init Spanning Tree Assíncrono Exemplo
- Figura 5.3 árvore em negrito
 
- Raiz designada. Nó A no exemplo 
 - Vértices da árvore QUERY  ACCEPT msg 
 - Cross-edges e back-edges 2(QUERY  REJECT) msg
 
  18Spanning Tree Assíncrono Iniciação concorrente
- Algoritmo 
 - Um nó pode espontaneamente iniciar o algoritmo 
tornando-se Raiz  - Cada Raiz inicia variações do algoritmo 1-init. 
  - Terminação apenas a Raiz detecta a terminação. 
Precisa de uma mensagem extra para informar aos 
outros.  - Complexidade de tempo O(l) 
 - Complexidade de mensagens O(nl)
 
- Figura 5.4 Inicio concorrente 
 -  em A, G e J
 
- Opção1  Unir Sts parciais. Dificuldade baseado 
em conhecimento local. Pode levar a ciclos.  - Opção 2 Permitir apenas 1 instancia do ST e 
descartar as outras. Seleciona Raiz com maior id. 
  19Spanning Tree Assíncrono (1/2) 
 20Spanning Tree Assíncrono (2/2) 
 21DFS Spanning Tree Assíncrono
- Lida com inicialização concorrente como o 
algoritmo não DFS.  - Quando QUERY, ACCEPT ou REJECT chegam a ação 
depende se  -  myroot lt  newroot 
 - Terminação apenas a Raiz que terminou com 
sucesso detecta e informa via arestas da ST.  - Complexidade de tempo O(l) 
 - Complexidade de mensagens O(nl)
 
  22DFS Spanning Tree Assíncrono 
 23Broadcast e convergecast em uma árvore
- Figura 5.5 Estrutura de árvore para broadcast e 
convergecast 
- Como fazer BC e CC em um anel? E em uma malha? 
 - Custo?
 
  24Broadcast e convergecast em uma árvore
- Broadcast em um sistema distribuído 
 - BC1. Raiz envia informação de broadcast para seus 
filhos e termina  - BC2. Quando um não Raiz recebe a informação de 
seu pai. Copia a informação e repassa para seus 
filhos e termina  - Convergecast Coleta informação no Raiz para 
computar uma função global  - CVC1. Nó folha envia seu relatório para seu pai e 
termina  - CVC2. Um nó interno da árvore recebe o relatório 
de todos os seus filhos realiza uma operação e 
repassa para seu pai e termina  - CVC3. Nó Raiz. Recebe o relatório de todos os 
seus filhos. Calcula a função e termina.  - Usos Calcular máximos e mínimos, Eleição de 
líder, computar funções de estado global. 
Complexidade de tempo O(h) Complexidade de 
Mensagens n - 1 
  25Menor caminho com fonte única Bellman-Ford 
Síncrono
- Grafo com pesos, sem ciclos com pesos negativos. 
 - Nenhum nó tem visão global, apenas topologia 
local.  - Assume-se cada nó conhece outros n necessário 
para a terminação  - Depois de K rodadas tamanho até qualquer nó é 
minimo com K pulos  - Depois de K rodadas O tamanho até todos os nós 
com até k pulos de distancia da MST final 
estabilizou  - Terminação n  1 rodadas 
 - Complexidade de tempo n  1 rodadas 
 - Complexidade de mensagen (n  1) / mensagens
 
  26Bellman-Ford Síncrono Código 
 27Distance Vector Routing
- Utilizado no roteamento de internet (popular no 
meio dos anos 80), muda dinamicamente os grafos, 
onde os pesos das arestas representam o delay ou 
a carga nos canais.  - Variação do algoritmo síncrono de Bellman-Ford O 
loop externo é infinito.  - Procura o menor caminho para cada destino. 
 - Tamanho substituído por LENGTH1..n pai 
substituído por PARENT1..n  - K-ésimo componente representa o melhor caminho 
até LENGTHk  - Em cada iteração 
 - Aprica-se a inequação de triangulação para cada 
destino independentemente  - Inequação de triangulação (LENGTHk gt 
(LENGTHjK  weightj,k))  - Nó i tem peso weightij estimado utilizando RTT ou 
avaliando o delay até o vizinho j 
  28Menor caminho com fonte única Bellman-Ford 
Assíncrono
- Grafo com pesos, sem ciclos com pesos negativos. 
 - Nenhum nó tem visão global, apenas topologia 
local.  - Número de mensagens O( cn ) exponencial e 
complexidade de tempo O( cn .d ) exponencial no 
pior caso, onde c é uma constante.  - Se todos os links tiverem o mesmo peso, o 
algoritmo computa o caminho mínimo de saltos a 
tabela de caminho mínimo de saltos para todos os 
destinos é computada utilizando-se O(cn.l) 
mensagens 
  29Bellman-Ford Assíncrono Código 
 30All-All shortest Path (Menor caminho) 
Floyd-Warshall
- Figura 5.6 (a) Inequação triangular para o 
algoritmo de Floyd-Warshall. (b) Relação VIA por 
um ramo da árvore para um dado par (s,t) 
  31All-All shortest Path (Menor caminho) 
Floyd-Warshall
- Depois das iternções do pivo do loop externo 
 - Invariante 
 - LENGTHi,j é o menor caminho passando por nós 
intermediários do conjunto i,...,pivo. VIAi,j 
é o primeiro salto correspondente 
- Complexidade (centralizado) O(n3)
 
  32Floyd-Warshall Distribuido
- Linha i de LENGTH1..n,1..n, VIA1..n,1..n 
armazenado em i, que é responsável por atualizar 
a linha. (logo, i atua como fonte)  - Correspondência com o algoritmo centralizado, 
linh(4)  - Como o nó i acessa o dado remoto LENGTHpivot,t 
em cada iteração do pivo?  - Sink tree Distribuída (dinâmica) em cada 
iteração de pivo, todos os nós s  LENGTHs,t ? 
8 estão na sink tree, com sink em t  - Como sincronizar as execuções da iteração do loop 
externo em nós diferentes?  - Simular sincronizador Ex. Utilizar mensagem de 
recebimento para pegar os dados LENGTHpivo, de 
seu pai na sink tree. 
  33Floyd-Warshall Distribuídos Estruturas de dados 
 34Floyd-Warshall Distribuídos Código 
 35Flyd-Warshall Distribuido sink tree dinâmica
- Renomear LENGTHi.j e VIAi,j como LENj e 
PARENTj  - Em cada nó i, na iteração do pivo 
 - Se LENpivo ? 8 no nó i, então o pivo distribui 
LEN para todos os nós (incluindo i) na sink 
tree do pivo.  - Arestas Pai-Filho na sink tree devem possuir ID, 
como?  - Um nó envia IN_TREE para PARENTpivo 
NOT_IN_TREE para os outros vizinhos  - Recebendo um IN_TREE de k, k é um filho na sink 
tree do pivo  - Esperar IN_TREE ou NOT_IN_TREE de todos os 
vizinhos. Essas mensagens são uma sincronização  - Pivo broadcast LEN para toda sua sink tree. 
Essas mensagens são uma sincronização.  - Agora todos os Nós executam a inequação de 
triangulação em passos pseudo-exclusivos  - Complexidade de tempo O(n2) Execução / nós. Mais 
o tempo para n broadcasts  - Complexidade de mensagens n iterações 
 - 2 IN_TREE ou NOT_IN_TREE msg de tamanho O(1) 
 -  n  1 PIV_LEN msg de tamanho O(n) O(n) msg 
 - Total O(n(ln)) Mensagens Total (nl  n3) espaço 
de mensagens. 
  36Floyd-Warshall Distribuído Sink Tree
- Figura 5.7 Identificando os nós Pai-Filho da 
árvore 
  37Enchente Controlada (sem ST)
- Canais FIFO 
 - Enchente assíncrona 
 - Utilizado para Verificar o estado de links de 
roteamento no IPV4  - Complexidade 2l mensagens no pior caso Tempo d 
seqüências de saltos  - Enchente Síncrona(para adquirir um dado de cada 
processo)  - STATEVEk é o dado do processo k 
 - Complexidade de mensagens 2dl mensagens, cada 
uma com tamanho n  - Complexidade de tempo d turnos
 
  38Enchente controlada Assíncrona 
 39Enchente controlada Síncrona 
 40Minimum Spanning Tree (MST)
- Assumindo um grafo não direcionado com pesos. Se 
os pesos não são únicos assume-se algum critério 
de desempate como ID dos nós para ordenação total 
dos pesos dos vértices  - Revisão de definições Floresta, Spanning forest, 
Spanning tree, MST  - Kruskal's MST 
 - Assumindo uma floresta de componentes de grafos 
 - Manter uma lista ordenada de vértices 
 - Em cada n  1 iterações, identificar o vértice de 
peso minimo que conecta dois componentes 
diferentes  - Incluir este nó na MST 
 - O(l log(l) ) 
 - Prim MST 
 - Começar com apenas um único nó 
 - Em cada n  1 iteração, selecionar o vértice de 
peso mínimo incidente neste nó. Continua-se 
utilizando este novo nó  - O(n2) (ou O(n log(n)) utilizando pilhas Fibonacci 
em grafos densos) 
  41GHS algoritmo de MST síncrono
- Gallagher-Humblet-Spira MST distribuído utiliza 
estratégia de Kruskal. Começa com uma floresta de 
componentes do grafo.  - MWOE (Aresta de peso mínimo de saída) Saída é 
saída lógica, ex. Indica a direção da expansão do 
componente.  - Spanning tree de componentes conectados combinado 
com os MWOES mantem as propriedades das Spanning 
trees.  - Combinação concorrente de MWOEs 
 - Depois da k-ésima iteração,  n / 2k componentes. 
Até o máximo de log n iterações  - Cada componente possui um nó líder na iteração 
 - Cada iteração em um componente possui 5 passos 
iniciados pelo líder  - Fase de broadcast-convergecast líder identifica 
as MWOE  - Fase de broadcast líder (potencial) para a 
próxima iteração é identificado  - Ase de broadcast entre as componentes agrupadas, 
1 lider é selecionado Ele se identifica para 
todos os novos componentes 
  42Aresta de saída de peso mínimo exemplo
Figura 5.8 Agrupando os MWOE dos componentes. 
(a) Ciclo len  2 é possível. (b) Ciclo len gt 2 
não é possível
- Observação 5.1 
 - Para qualquer Spanning forest (Ni, Li)  i  
1..k  do grafo G, considerando qualquer 
componente (Nj, Lj). Denotamos por ?j, o nó com o 
menor peso entre todos os incidentes apenas no no 
Nj. Então qualquer sub-grafo G da MST que inclui 
todos os nós em cada Li da spanning forest deve 
incluir ?j.  
  43MST exemplo
- Figura 5.9 Fases da iteração de um componente. 
 - (a) Root broadcast SEARCH_MWOE (b) Ocorre um 
convergecast REPLY_MWOE (C) Root broadcast 
ADD_MWOE (d) se a MWOE também é escolhido como 
MWOE pelo componente no outro lado do MWOE, O 
processo incidente com maior ID é o líder na 
proxima iteração Broadcast NEW_LEADER 
  44GHS Síncrono Tipos de mensagens 
 45GHS Síncrono Código 
 46GHS Complexidade
- Log n rodadas (Síncrono). 
 - Complexidade de tempo O(n log n) 
 - Complexidade de mensagens 
 - Em cada iteração, O(n) mensagens pelas arestas da 
árvore (passos 1,3,4,5)  - Em cada iteração, L mensagens de EXAMINE para 
determinar as MWOEs  - Corretude requerida pelas operações síncronas 
 - No passo (2), EXAMINE é utilizado para determinar 
se um vizinho não marcado pertence a mesma 
componente. Se o nó de uma aresta não marcada 
estiverem em níveis diferentes há problemas.  - Considerando EXAMINE enviado na aresta (j,k) 
pertencente a mesma componente. Mas k pode não 
saber que esta pertence a nova componente e ao 
novo líder ID responde com ve  - Pode levar a ciclos.
 
  47MST Assíncrono
- GHS síncrono é simulado utilizando-se mensagens / 
passos extras  - Novo Líder faz BC / CC nas arestas marcadas da 
nova componente  - No passo (2), destinatário de um EXAMINE pode 
atrasar a resposta se estiver em um turno 
anterior.  - N log n mensagens extras 
 - No novo turno, informar cada vizinho 
 - Enviar EXAMINE quando todos os vizinhos nas 
arestas não marcadas estiverem no mesmo nível  - L log n mensagens extras 
 - Engenharia de GHS Assíncrono 
 - Mensagens O( n log n  l) tempo O(n log n(l  
d))  - Desafios 
 - Determinar o nível de nós adjacentes 
 - Se as componentes estão em níveis diferentes, 
busca coordenada pelas novas MWOEs