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.
- ¿Por qué el ensacado funciona tan bien para los árboles de decisión, pero no para los clasificadores lineales?
- ¿Es posible implementar algoritmos de aprendizaje automático en lenguaje ensamblador?
- ¿Qué estoy haciendo mal al determinar el big-O de estas funciones Java?
- ¿Por qué debería vivir si mis problemas nunca se resuelven?
- He tenido algunos problemas con la recursividad desde hace un tiempo, desde que comencé a estudiar algoritmos. ¿Hay algún recurso / método en particular que te haya ayudado a entenderlo completamente y que puedas recomendar?