El algoritmo de Chang y Roberts [1] es un algoritmo de elección de coordinador basado en anillos , empleado en informática distribuida .
El algoritmo supone que cada proceso tiene una Identificación Única (UID) y que los procesos pueden organizarse en un anillo unidireccional con un canal de comunicación que va desde cada proceso al vecino en el sentido de las agujas del reloj. El algoritmo de dos partes se puede describir de la siguiente manera:
Cuando un proceso comienza a actuar como líder, comienza la segunda etapa del algoritmo.
Suponiendo que no haya fallas, este algoritmo finalizará. El algoritmo funciona para cualquier número de procesos N y no requiere que ningún proceso sepa cuántos procesos hay en el anillo.
El algoritmo respeta la seguridad : un proceso recibirá un mensaje elegido con su propio UID sólo si su UID es mayor que el de los demás, y sólo cuando todos los procesos estén de acuerdo en el mismo UID. El algoritmo también respeta la vivacidad . Los estados "participante" y "no participante" se utilizan para que cuando varios procesos inicien una elección aproximadamente al mismo tiempo, solo se anuncie un ganador.
Cuando hay un único proceso que inicia la elección, el algoritmo requiere mensajes secuenciales 3N-1, en el peor de los casos. El peor de los casos es cuando el proceso que inicia la elección es el siguiente inmediatamente al que tiene el mayor UID: se necesitan N-1 mensajes para que el mensaje de la elección llegue, luego N mensajes para que recupere su propio UID, luego otros N mensajes. para enviar a todos en el ring el mensaje elegido.
Este algoritmo no es muy tolerante a fallos. La tolerancia a fallos se puede aumentar si cada proceso conoce la topología completa, introduciendo mensajes ACK y omitiendo nodos defectuosos al enviar mensajes.
{{citation}}
: Mantenimiento CS1: varios nombres: lista de autores ( enlace )