Os algoritmos distribuídos que são resistentes a falhas podem ser determinísticos ou probabilísticos. Tomemos, por exemplo, o problema de consenso.
Paxos é determinístico no sentido de que, dada a suposição que faz, sempre funciona.
Em contraste, o consenso randomizado trabalha com uma dada probabilidade.
Qual é a vantagem de projetar e usar um algoritmo determinístico?
As suposições nas quais os algoritmos determinísticos se baseiam também têm uma probabilidade de se manter na realidade (o que é chamado de cobertura de suposições ). Portanto, sempre há uma probabilidade de que um algoritmo determinístico não funcione na realidade.
Respostas:
Eu responderei isso da perspectiva dos algoritmos de gráfico distribuído ( algoritmos distribuídos que resolvem um problema gráfico relacionado à estrutura da rede de comunicação).
Aqui estão algumas razões não óbvias para o design de algoritmos distribuídos determinísticos nesta configuração:
Sub-rotinas em algoritmos aleatórios . Na p. 12–13 desses slides , Elkin descreve uma técnica de design de algoritmo na qual você pode usar algoritmos distribuídos determinísticos rápidos como uma sub-rotina para construir um algoritmo distribuído aleatório rápido . Curiosamente, é não possível utilizar um algoritmo típico randomizado como uma sub-rotina no mesmo contexto (a probabilidade de erro seria muito alto).
Tolerância a falhas . Existe uma tradução mecânica que permite converter um algoritmo distribuído determinístico rápido em um algoritmo distribuído auto-estabilizador rápido (consulte, por exemplo, a Seção 2.4 desta pesquisa ). Uma conversão semelhante não é conhecida para algoritmos aleatórios (e acho que é improvável que exista no caso geral).
fonte