用于将有序树转换为有向无环图的算法

时间:2011-11-14 03:36:19

标签: algorithm parsing tree directed-acyclic-graphs

假设我有一种编程语言,我可以写: x = f(g(1),h(1))在这种情况下,有向无环图将显示计算的依赖关系,如电子表格(假设非递归表达式):

 1
| \
g  h
 \ /
  f

这是一个简单的例子,但尝试在DAG中“压缩”更复杂的表达式会变得很有趣。这里的目标是根据依赖关系优化重新计算的次数。

有哪些算法和论文可以解决这个问题?

2 个答案:

答案 0 :(得分:4)

更具体一点,它是Local Common Subexpression Elimination。 Dragon Book中给出了一种算法,“6.1.2构造DAG的值数法”

答案 1 :(得分:3)

编译器编写者调用此问题common subexpression elimination。每本编制者的教科书都值得讨论这个主题。

如果没有控制流程,您应该可以执行类似于hash consing的简单操作。