Dado que el gráfico es cíclico (es decir, puede contener ciclos), primero lo dividiría en componentes fuertemente conectados. Un strongly connected component de un grafo dirigido es un subgrafo donde cada nodo es alcanzable desde cualquier otro nodo en el mismo subgrafo. Esto arrojaría un conjunto de subgrafos. Observe que un componente fuertemente conectado de más de un nodo es efectivamente un ciclo.
Ahora, en cada componente, cualquier información en un nodo eventualmente terminará en cada otro nodo del gráfico (ya que todos son accesibles). Por lo tanto, para cada subgráfico podemos simplemente tomar todos los datos de todos los nodos y hacer que cada nodo tenga el mismo conjunto de datos. No es necesario seguir los ciclos. Además, al final de este paso, todos los nodos en el mismo componente contienen exactamente los mismos datos.
El siguiente paso sería colapsar cada componente fuertemente conectado en un solo nodo. Como los nodos dentro del mismo componente tienen todos los mismos datos, y por lo tanto son básicamente los mismos, esta operación realmente no cambia el gráfico. El "super nodo" recién creado heredará todos los bordes que salen o que entran en los nodos del componente desde nodos fuera del componente.
Puesto que hemos colapsado todos los componentes fuertemente conectados, no habrá ciclos en la gráfica resultante (¿Por qué? Porque si hubiera habido un ciclo formado por los nodos resultantes, todos ellos se han colocado en el mismo componente en primer lugar). El gráfico resultante ahora es Directed Acyclic Graph. No hay ciclos, y un primer recorrido de profundidad simple desde todos los nodos con indegree = 0 (es decir, nodos que no tienen bordes entrantes), propagando datos de cada nodo a sus nodos adyacentes (es decir, sus "hijos"), debe hacer el trabajo .
Esto es probablemente algún tipo de problema de comunicación de difusión general (o de dispersión total). Podría ayudar si busca con estas palabras clave. – PeterK
Quizás estas cosas estén claras para todos los demás, pero ¿qué quiere decir con comenzar en las hojas y propagar los datos en sentido descendente? ¿No sería una hoja un nodo sin nodos aguas abajo? Además, ¿qué significa para un ciclo estabilizarse? – ESRogs
Creo que lo que llamo 'hojas' posiblemente se describiría más claramente como 'raíces', aunque dado que es un término gráfico cíclico, es particularmente intuitivo, me refiero a un nodo sin padres. Downstream está en la dirección de los niños. Debido a que el recorrido de un ciclo puede revelar más información que puede necesitar ser propagada a nodos ya visitados, es posible que algunos nodos deban ser visitados más de una vez, lo que significa que decidir cuándo terminar puede ser complicado; por lo tanto estabilización. De hecho, resulta que hay una manera mucho más fácil de hacer esto --- ver respuesta. –