detecção de terminação
DESCRIPTION
Detecção de Terminação. Algoritmos Distribuídos Professora: Lúcia Drummond. Detecção de Terminação. Os algoritmos síncronos terminam após um certo número de pulsos. - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: Detecção de Terminação](https://reader033.vdocuments.mx/reader033/viewer/2022061511/568149e9550346895db71459/html5/thumbnails/1.jpg)
Instituto de Computação - UFF
Detecção de Terminação
Algoritmos DistribuídosProfessora: Lúcia Drummond
![Page 2: Detecção de Terminação](https://reader033.vdocuments.mx/reader033/viewer/2022061511/568149e9550346895db71459/html5/thumbnails/2.jpg)
Instituto de Computação - UFF 2
Detecção de Terminação
Os algoritmos síncronos terminam após um certo número de pulsos.
Para alguns algoritmos assíncronos regulares e bem estruturados não há problema na detecção de que não existem mais mensagens esperadas.
Por exemplo, o Algoritmo de Propagação de Informação.
![Page 3: Detecção de Terminação](https://reader033.vdocuments.mx/reader033/viewer/2022061511/568149e9550346895db71459/html5/thumbnails/3.jpg)
Instituto de Computação - UFF 3
Detecção de Terminação
Os algoritmos assíncronos que não apresentam a regularidade que permite tal análise simples de terminação, utilizam a detecção de terminação global.
Um algoritmo assíncrono terminou globalmente quando todos os nós estão ociosos e todas as arestas estão vazias no estado global.
![Page 4: Detecção de Terminação](https://reader033.vdocuments.mx/reader033/viewer/2022061511/568149e9550346895db71459/html5/thumbnails/4.jpg)
Instituto de Computação - UFF 4
Algoritmo Detect_Termination
Variáveis
suspectsi;
edge_stateij:={} para todo nj;
recordedi:=false;
receivedij:=false para todo nj;
max_tagi:=0;
terminatedi:=false;
![Page 5: Detecção de Terminação](https://reader033.vdocuments.mx/reader033/viewer/2022061511/568149e9550346895db71459/html5/thumbnails/5.jpg)
Instituto de Computação - UFF 5
Algoritmo Detect_Termination
Algoritmo
Input:msgi=nil;
Ação se ni N0:
Execute alguma computação;Envie comp_msg em cada aresta de um
subconjunto de Outi;
![Page 6: Detecção de Terminação](https://reader033.vdocuments.mx/reader033/viewer/2022061511/568149e9550346895db71459/html5/thumbnails/6.jpg)
Instituto de Computação - UFF 6
Algoritmo Detect_Termination
Algoritmo
if suspectsi then
beginmax_tagi:=max_tagi+1;
recordedi:=true;
Envie marker(max_tagi) para todo nj;
end
![Page 7: Detecção de Terminação](https://reader033.vdocuments.mx/reader033/viewer/2022061511/568149e9550346895db71459/html5/thumbnails/7.jpg)
Instituto de Computação - UFF 7
Algoritmo Detect_Termination
Algoritmo
Input:msgi=comp_msg tal que origemi(msgi)=(njni);
Ação: Execute alguma computação;Envie comp_msg em cada aresta de um
subconjunto de Outi;
if recordedi then
if not receivedij then
edge_stateij := edge_statei
j {msgi};
![Page 8: Detecção de Terminação](https://reader033.vdocuments.mx/reader033/viewer/2022061511/568149e9550346895db71459/html5/thumbnails/8.jpg)
Instituto de Computação - UFF 8
Algoritmo Detect_Termination
Algoritmo
if suspectsi then
beginedge_statei
k :={} para todo nk;
receivedik := false para todo nk;
max_tagi:= max_tagi + 1;
recordedi:= true;
Envie marker(max_tagi) para todo nj;
end
![Page 9: Detecção de Terminação](https://reader033.vdocuments.mx/reader033/viewer/2022061511/568149e9550346895db71459/html5/thumbnails/9.jpg)
Instituto de Computação - UFF 9
Algoritmo Detect_Termination
Algoritmo
Input:msgi=marker(t) tal que origemi(msgi)=(njni);
Ação: if t=max_tagi then
receivedij := true;
if t>max_tagi then
beginmax_tagi:=t;
edge_stateik := {} para todo nk;
recordedi = false;
receivedik :=false para todo nk;
![Page 10: Detecção de Terminação](https://reader033.vdocuments.mx/reader033/viewer/2022061511/568149e9550346895db71459/html5/thumbnails/10.jpg)
Instituto de Computação - UFF 10
Algoritmo Detect_Termination
Algoritmo
if suspectsi then
begin receivedi
j := true;
recordedi:= true;
Envie marker(max_tagi) para todo nj;
endend
If receivedik para todo nk then
Envie edge_stateik para todo nk, juntamente com
max_tagi para n1;
![Page 11: Detecção de Terminação](https://reader033.vdocuments.mx/reader033/viewer/2022061511/568149e9550346895db71459/html5/thumbnails/11.jpg)
Instituto de Computação - UFF 11
Algoritmo Detect_Termination
Algoritmo
Input:msgi=terminate;
Ação se ni≠n1:
terminatedi:=true;
![Page 12: Detecção de Terminação](https://reader033.vdocuments.mx/reader033/viewer/2022061511/568149e9550346895db71459/html5/thumbnails/12.jpg)
Instituto de Computação - UFF 12
Algoritmo Detect_Termination_D
Terminação por Difusão
Variáveis
expectedi:=0;
parenti:=nil;
terminatedi:=false;
![Page 13: Detecção de Terminação](https://reader033.vdocuments.mx/reader033/viewer/2022061511/568149e9550346895db71459/html5/thumbnails/13.jpg)
Instituto de Computação - UFF 13
Algoritmo
Input:msgi=nil;
Ação se ni N0:
Execute alguma computação;Envie comp_msg em cada aresta de um
subconjunto de Inci;
Algoritmo Detect_Termination_D
![Page 14: Detecção de Terminação](https://reader033.vdocuments.mx/reader033/viewer/2022061511/568149e9550346895db71459/html5/thumbnails/14.jpg)
Instituto de Computação - UFF 14
Algoritmo
Input:msgi=comp_msg tal que origem(msgi)=nj;
Ação:if expectedi > 0 then
beginEnvie ack para nj;
Execute alguma computação;Envie comp_msg em cada aresta de um
subconjunto de Inci;
end
Algoritmo Detect_Termination_D
![Page 15: Detecção de Terminação](https://reader033.vdocuments.mx/reader033/viewer/2022061511/568149e9550346895db71459/html5/thumbnails/15.jpg)
Instituto de Computação - UFF 15
Algoritmo
elsebegin
Execute alguma computação;Envie comp_msg em cada aresta de um
subconjunto de Inci;
if expectedi > 0 then
parenti:=nj;
Else Envie ack para nj;
end
Algoritmo Detect_Termination_D
![Page 16: Detecção de Terminação](https://reader033.vdocuments.mx/reader033/viewer/2022061511/568149e9550346895db71459/html5/thumbnails/16.jpg)
Instituto de Computação - UFF 16
Algoritmo
Input:msgi=ack;
Ação:expectedi:= expectedi -1;
if expectedi = 0 then
if parenti ≠ nil then
Envie ack para parenti;
Algoritmo Detect_Termination_D
![Page 17: Detecção de Terminação](https://reader033.vdocuments.mx/reader033/viewer/2022061511/568149e9550346895db71459/html5/thumbnails/17.jpg)
Instituto de Computação - UFF 17
Algoritmo
Input:msgi=terminate;
Ação se ni ≠n1:
terminatedi:= true;
Algoritmo Detect_Termination_D
![Page 18: Detecção de Terminação](https://reader033.vdocuments.mx/reader033/viewer/2022061511/568149e9550346895db71459/html5/thumbnails/18.jpg)
Instituto de Computação - UFF 18
Teorema:Todo estado global no qual n1
tem terminado localmente, é um estado global no qual a terminação global ocorre.
Teorema
Prova:Se n1 terminou localmente, então todo nó deve
ter enviado um número finito de mensagens de computação.
Como estas mensagens de computação e os correspondentes acks foram recebidos, o valor de expectedi para o nó ni, inicialmente igual a zero, se tornou positivo e zero, diversas vezes.
![Page 19: Detecção de Terminação](https://reader033.vdocuments.mx/reader033/viewer/2022061511/568149e9550346895db71459/html5/thumbnails/19.jpg)
Instituto de Computação - UFF 19
Prova (cont):Sempre que uma transição ocorresse no valor de
expectedi de zero para uma valor positivo, parenti seria atualizado para apontar para o nó que enviou a mensagem de computação correspondente.
Teorema
Considere os estados do sistema nos quais todos os nós ni estão:
ou em um estado positivo de expectedi, seguindo a última transição de zero para este valor, se já enviou uma mensagem de computação durante a difusão,
ou em qualquer outro estado, caso contrário.
![Page 20: Detecção de Terminação](https://reader033.vdocuments.mx/reader033/viewer/2022061511/568149e9550346895db71459/html5/thumbnails/20.jpg)
Instituto de Computação - UFF 20
Prova (cont):Claramente, no mínimo um destes estados de
sistema é um estado global, como por exemplo, aquele no qual todo nó que já enviou mensagens de computação está no seu estado que imediatamente precede a recepção do último ack.
Teorema
Neste estado global, somente há acks sobres as arestas, nenhum deles enviado como consequência da recepção de um último ack.
Consideremos um destes estados globais.
![Page 21: Detecção de Terminação](https://reader033.vdocuments.mx/reader033/viewer/2022061511/568149e9550346895db71459/html5/thumbnails/21.jpg)
Instituto de Computação - UFF 21
Prova (cont):Neste estado global, as variáveis parenti para
ni≠n1 induzem uma árvore que se espalha por todos os nós em G correspondentes aos nós que enviaram no mínimo uma mensagens de computação durante a computação por difusão.
Teorema
Esta árvore muda dinamicamente com a execução do algoritmos, e parenti pode apontar para diversos vizinhos ni.
A raiz dessa árvore é n1 e suas folhas correspondem a aqueles nós dos quais nenhum outro nó ni recebeu a mensagem de computação que disparou a última transição de zero para um valor positivo de expectedi.
![Page 22: Detecção de Terminação](https://reader033.vdocuments.mx/reader033/viewer/2022061511/568149e9550346895db71459/html5/thumbnails/22.jpg)
Instituto de Computação - UFF 22
Prova (cont):A prova é por indução na árvore.
Teorema
Pela indução, a prova a ser feita é de que todo estado global no qual a raiz da sub-árvore tem terminado localmente é um estado global no qual todo outro nó na sub-árvore tem também terminado localmente.
A base da indução é dada pelas sub-árvores com raízes nas folhas.
Como nenhuma folha ni é tal que ni=parentj para algum nó nj, então a afirmação vale.
![Page 23: Detecção de Terminação](https://reader033.vdocuments.mx/reader033/viewer/2022061511/568149e9550346895db71459/html5/thumbnails/23.jpg)
Instituto de Computação - UFF 23
Prova (cont):Como hipótese de indução, assuma esta
afirmação para todas as sub-árvores com raízes em nj tal que parentj=n1.
Teorema
Então, n1 recebe expected1 acks, no momento em que terminou localmente, e pela hipótese de indução, também todos os outros nós.