На графике, как вычислить сумму всех узлов, которые узел может достичь эффективно?

Дан ориентированный граф с весом, назначенным каждому узлу.
Начиная с любого узла A, будет набор узлов, к которым можно будет добраться из A.
Определите СУММ как общий вес этого набора.

Вопрос: Как эффективно вычислить СУММ для каждого узла в этом графе?
Граф может содержать миллионы узлов.

Обновление 1:
Структура данных графа состоит из набора начальных узлов, и каждый узел имеет набор узлов «точка-точка».

Что я пробовал:
Рекурсивно вычислить потомков каждого узла и вычислить СУММ в соответствии с набором потомков. Эта рекурсия очень неэффективна, так как мне приходится выполнять операцию объединения и изменения много раз. Далее я попытался кэшировать набор потомков на каждом узле. Однако ему легко не хватает памяти.
Итак, есть ли другое решение?

Обновление 2:
Пример графа, все ребра направлены, верхние узлы указывают на нижние узлы
Sample Graph
Результат должен быть
СУММ (1) = 55 СУММ (2) = 35 СУММ (3) = 41 СУММ (4) = 19 СУММ (5) = 22 СУММ (6) = 25 ...

7
задан Yan Li 22 July 2011 в 18:26
поделиться