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

文章目录

定义

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

DAG描述表达式

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

构造DAG

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

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

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

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

相关推荐
二本咕咕-机械转码2 小时前
FreeRTOS深入解析(八)IPC机制之FromISR详解
数据结构·单片机·链表
1-1=04 小时前
C# 数据结构和特殊类型
数据结构·c#·.net·.netcore
希和20274 小时前
C语言程序设计题|有序数组插入数字冒泡排序
c语言·数据结构·算法
布莱克60514 小时前
C++ 中 map 的 insert 与 emplace:key 已存在时会覆盖吗?
开发语言·数据结构·c++·算法·map
D e re k ZH17 小时前
C++ 系统学习手记:从语法细节到工程实践
开发语言·数据结构·c++·算法
zh_xuan1 天前
LeeCode 496. 下一个更大元素I
数据结构·算法·栈·单调栈
白杨尚青1 天前
C++进阶篇(五):红黑树——四条规则、三种插入情况与旋转变色
开发语言·数据结构·c++·stl·红黑树·平衡二叉树
likexuec2 天前
数据结构(2)
数据结构
D e re k ZH2 天前
C++ 标准库算法全景指南
数据结构·c++·算法
冻柠檬飞冰走茶2 天前
字母移动游戏题解:贪心求最长可保留连续子串(附 C 实现)
c语言·开发语言·数据结构·算法·动态规划