Допустим, у меня есть язык программирования, на котором я могу написать: x = f(g(1), h(1)) в этом случае ориентированный ациклический граф покажет зависимости вычислений, как в электронной таблице (предполагая нерекурсивные выражения):
1
| \
g h
\ /
f
Это простой пример, но становится интересно попытаться «сжать» более сложные выражения в DAG. Целью здесь является оптимизация количества перерасчетов на основе зависимостей.
Какие алгоритмы и документы доступны для решения этой проблемы?