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

文章目录

定义

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

DAG描述表达式

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

构造DAG

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

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

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

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

相关推荐
quaer13 小时前
弗洛伊德算法--判圈法寻找环的入口O(n) O(1)
数据结构·算法
xys_67817 小时前
深挖数据结构:树和二叉树(上)
数据结构·算法
BeiGuTing_code17 小时前
Java动态数组(一)
java·数据结构·windows
Code_Solitude20 小时前
传智杯备赛代码整理(前4题)
数据结构·算法
Jasmine_llq21 小时前
《P8816 [CSP-J 2022] 上升点列》
数据结构·算法·贪心·排序·二维动态规划 dp·类背包状态转移
辛苦才能21 小时前
C++ 哈希表深度解析:删除为什么必须打标记,负载因子为什么卡 0.7
开发语言·数据结构·c++·算法
JasmineX-11 天前
数据结构(笔记)——顺序栈
c语言·数据结构·笔记
凉茶钱1 天前
list:哨兵节点,const_iterator 和 const iterator的区别与迭代器失效
数据结构·c++·list
敲代码的苦131 天前
头歌数据结构-排序的实现及其应用
数据结构
有同事要进步1 天前
Leecode第68题:x的平方根
java·数据结构·算法