¿Cuál es la forma más eficiente de encontrar el número total de nodos en un sistema distribuido?

Existen dos categorías amplias de algoritmos para tales problemas informáticos distribuidos:
1. Algoritmo de sonda y eco: esto finalmente puede resolverse como un gráfico y ambas respuestas BFS y DFS pueden ser aplicables.
2. Algoritmo de latido – más de una solución descentralizada donde los nodos envían mensajes solo a sus vecinos – después de un cierto número de intercambios, se puede llegar a la terminación. Consulte el documento de Andrews (sección que trata el cálculo de la topología de red, que es un problema más complejo que el problema del número de nodos).
Gregory R. Andrews. 1991. Paradigmas para la interacción de procesos en programas distribuidos. ACM Comput. Surv. 23, 1 (marzo de 1991), 49-90.

Puede haber enfoques más simples para este problema específico: elija un líder, deje que todos los nodos envíen un mensaje al líder, quien calcula el número en función de los mensajes que recibe. Sin embargo, este algoritmo es simplista y puede no tolerar fallas de red o fallas de nodo. Pero podríamos seguir y usar 2PC o incluso 3PC (confirmación de 3 fases) para tolerar ciertas condiciones de falla. Pero depende de lo que estamos tratando de resolver en general. Si la eficiencia es el criterio principal, entonces este puede ser un enfoque.

La primera búsqueda de amplitud parecería la solución obvia. Debería ejecutarse en tiempo O (E).

Profundidad primera búsqueda. dice Partha Bijoy Baruah