6.4.3_有向无环图描述表达式
有向无环图:
有向图中不存在环即为有向无环图DAG图,即如下V0->V4->v3->V0或者V4->V1->v4就存在环不是有向无环图,即在一个路径中一个顶点不能出现2次?
DAG描述表达式:
算术表达式用树来表示,咋表示????
在如下算术表达式中(c+d)*e部分重复,则可以在树中去掉*号重复指向的一部分,然后*号指向+号指向的,根据下边的图c+d也可合并即第三张图,然后把b合并即第4张图
2019年统考真题
把如下x+y合并即第二张图,再把x合并变成第三张图
解题方法-合并重复的式子不漏项方法:
合并时不需要合并操作数(因为各个操作数顶点在树中就一个,没有重复的)只需合并操作符
重点:分层、分层合并操作符(同层中的同一个类型的几个操作符并且指向的操作数都相同,则这几个操作符在该层可合并成1个,看第3、4张图)
过程:
1.各个操作数不重复地排成一排。a、b、c、d、e
2.标出各个运算符的执行顺序(根据加减乘除运算顺序标明)
3.按2标出的顺序开始分层给1列出的操作数加入操作符,如(1)为a+b则给a、b在第一层加+号,(2)为c+d的值在第一层给c、d加+号,(3)为b*(c+d)即需要用到第一层(2)+号的值,则在第2层加入*号指向b和第一层指向c、d的+号,(4)为需要用到第一层a+b的值*第2层b*(c+d)的值,则比最高层第二层再高一层添加*号指向第一层的+(指向a、b)和第二层的*(指向b和第一层的+号)依次类推即需要用到某层的值都需要在该层的基础上再加一层得到操作数不重复的数
4.合并各层操作符(只合并同层的重复的操作符)。第一层有几个都指向了c+d的+号操作符可合并,第二层的*号都指向e和+号可合并
练习:
第三张图为更改操作符顺序进行合并
知识回顾: