文章目录
定义
有向无环图:若有一个有向图 中不存在环 ,则称为有向无环图,简称为DAG图 。

DAG描述表达式
核心思想:合并相同 的子表达式【即顶点中不出现重复的操作数】。在 DAG 中,(a+b) 只存一份,让两个 * 操作都指向同一个 + 节点。一个结点可以拥有多个父结点。

构造DAG
- 把各个操作数不重复的排成一排
- 标出各个运算符的生效顺序(先后顺序不唯一)
- 按顺序加入运算符,注意 " 分层 "
- 从底向上 逐层检查同层的运算符是否可以合并
【注意顺序】:合并时要确保左右操作数的顺序
对于不可交换运算符 (减法 -、除法 /),必须严格区分左右孩子顺序;
对于可交换运算符(加法 +、乘法 *),为了便于查找,通常将左右操作数按某种规则排序(如字典序),确保 (a+b) 和 (b+a) 被识别为同一个子表达式。


