有向无环图 DAG(描述表达式)

文章目录

定义

有向无环图:若有一个有向图不存在环 ,则称为有向无环图,简称为DAG图

DAG描述表达式

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

构造DAG

  1. 把各个操作数不重复的排成一排
  2. 标出各个运算符的生效顺序(先后顺序不唯一)
  3. 按顺序加入运算符,注意 " 分层 "
  4. 从底向上 逐层检查同层的运算符是否可以合并

【注意顺序】:合并时要确保左右操作数的顺序

对于不可交换运算符 (减法 -、除法 /),必须严格区分左右孩子顺序;

对于可交换运算符(加法 +、乘法 *),为了便于查找,通常将左右操作数按某种规则排序(如字典序),确保 (a+b) 和 (b+a) 被识别为同一个子表达式。

相关推荐
郝学胜_神的一滴2 小时前
干货版《算法导论》18:遍历增删原理、时间复杂度与集合序列实现全解
数据结构·算法
_Narcissus_3 小时前
B树概念及操作笔记(含完整代码实现)
c语言·数据结构·数据库·c++·笔记·b树·算法
疯狂打码的少年3 小时前
【数据结构】图的应用:最短路径(Dijkstra / Floyd)
数据结构·笔记·算法
Fa_Mian_Tuan3 小时前
图论基础 | 邻接多重表原理剖析 + 完整可运行C语言代码(插边/删边/释放)
c语言·数据结构·笔记·算法·图论
学习星球3 小时前
【LeetCode算法题精讲】二分查找精讲
java·数据结构·算法·leetcode·职场和发展·图搜索
小僧景贤4 小时前
嵌入式之队列解析(裸机/RTOS通用原理+实战场景+源码解析)
数据结构·嵌入式·队列·裸机开发·rtos开发·固件架构
_Narcissus_4 小时前
B+树的概念和操作笔记(含完整代码实现)
c语言·数据结构·数据库·c++·笔记·b树·算法
octopus_c5 小时前
数据结构:二叉树
c语言·数据结构
2401_862880825 小时前
数据结构 --- 算法
数据结构·算法