(Java)数据结构——图(第八节)有向无环图(DAG图)以及DAG描述表达式

前言

本博客是博主用于复习数据结构以及算法的博客,如果疏忽出现错误,还望各位指正。

有向无环图的概念

昨天复习了拓扑排序,打算写个博客,一翻数据结构的书到那,发现连着概念还有DAG图以及AOV网,于是看了看,这篇博客先来介绍有向无环图DAG。

下图一个无环的有向图乘坐有向无环图,也就是DAG图。

然后发现看书看不下去,有点复杂,这书上的表达式是怎么变过去的呢?又去看了看王道的视频,发现之前好像刷王道的视频没刷到过这个DAG描述表达式

我们学过数据结构的都知道,一个表达式可以用树来表示。

就比如说这个,然而我们观察右边那两堆子树,发现它们一模一样,于是我们就可以对它们进行一个“合并”操作。

“合并”之后,变成这样,然后虽然进行了一次合并,但是还存在着很多类似的冗余子树,比如圈出来的,再比如左边那个圈旁边的俩b,也是冗余的,再化简化简化简……就变成了书上最终的样子,amazing!

得到最终的DAG图,就是这样。

这好像也是一类题,正好可以水一篇博客。

DAG描述表达式

具体的解题步骤,就是先按照运算顺序对表达式进行分割,先后顺序有些许出入无伤大雅。就比如我写的是王道的化简步骤。

按照我自己的习惯来,就是先算最里面的括号,然后平级括号消消消。

最后应该也是可以建好的,所以先后顺序有点出入无所谓,重要的是做对题。

然后把每个结点写到最底下,这个表达式就出现过abcde,先写上。

然后按照刚才的顺序建好树,不过注意要分层!看图理解分层的意思吧,我也说不清……

然后就从最底下一层找,发现3个+指着C和D,直接合并

再看这一层没有了往上,右边那俩*,一个+,一个E,合并!(看左右是一样就合并)。

这就是最终的了,因为再往上一层,左边+右边*,再往右没了,再往上也是,这就是分层的好处。

这种方法,王道说,应该可以解决99%的,如果发现解决不了的,请去评论区留言。

好了,做道题,应该看得懂吧,选A,秒了。

  • 6
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值