我正在阅读有关统一算法的信息,高效的算法似乎输入了DAG,我的理解是表达式中共享的术语不是重复的节点(如AST)。
我肯定有众所周知的算法,可以将表达式从“字符串表示形式”或AST转换为DAG。 是否存在这样的算法?我只是想避免重新发明轮子。
答案 0 :(得分:3)
在构造AST时可以通过记忆轻松实现。
由于AST是后置内置的,因此在创建每个节点时,请检查备注缓存以查看是否已经存在等效节点。如果是这样,请使用预先存在的节点。否则,请使用新节点并将其添加到缓存中。
在检查缓存中是否存在一个先前存在的节点时,该节点的子节点将已经被存储,因此您可以通过标识比较它们,而不必重新检查其子图。