Los algoritmos distribuidos que son resistentes a las fallas pueden ser deterministas o probabilísticos. Tomemos, por ejemplo, el problema del consenso.
Paxos es determinista en el sentido de que, dada la suposición que hace, siempre funciona.
En contraste, el consenso aleatorio funciona con una probabilidad dada.
¿Cuál es la ventaja de diseñar y usar un algoritmo determinista?
Los supuestos en los que se basan los algoritmos deterministas también tienen una probabilidad de mantenerse en la realidad (lo que se denomina cobertura de supuestos ). Por lo tanto, siempre existe la probabilidad de que un algoritmo determinista no funcione en la realidad.
Respuestas:
Contestaré esto desde la perspectiva de los algoritmos de gráficos distribuidos ( algoritmos distribuidos que resuelven un problema de gráficos relacionado con la estructura de la red de comunicación).
Aquí hay algunas razones no obvias para diseñar algoritmos distribuidos deterministas en esta configuración:
Subrutinas en algoritmos aleatorios . En P. 12 a 13 de estas diapositivas , Elkin describe una técnica de diseño de algoritmos en la que puede utilizar algoritmos distribuidos deterministas rápidos como subrutina para construir un algoritmo distribuido aleatorio rápido . Curiosamente, es no posible utilizar un algoritmo típico aleatorio como una subrutina en el mismo contexto (la probabilidad de error sería demasiado alto).
Tolerancia a fallas . Existe una traducción mecánica que le permite convertir un algoritmo distribuido determinista rápido en un algoritmo distribuido autoestabilizador rápido (consulte, por ejemplo, la Sección 2.4 de esta encuesta ). No se conoce una conversión similar para los algoritmos aleatorios (y creo que es poco probable que exista en el caso general).
fuente