В моем webapp мы имеем много полей, которые суммируют другие поля, и эти поля суммируют больше полей. Я знаю, что это ориентированный ациклический граф.
Когда страница загружается, я вычисляю значения для всех полей. То, что я действительно пытаюсь сделать, - это преобразовать мою DAG в одномерный список, который будет содержать эффективный порядок расчета полей.
Например: A = B + D, D = B + C, B = C + E Эффективный расчетный порядок: E → C → B → D → A
Сейчас мой алгоритм просто делает простые вставки в список итеративно, но я столкнулся с некоторыми ситуациями, когда это начинает прерываться. Я думаю, что понадобится вместо этого, чтобы выработать все зависимости в древовидной структуре и оттуда преобразовать это в одномерную форму? Существует ли простой алгоритм преобразования такого дерева в эффективный порядок?