Day36【AI思考】-表达式知识体系总览
文章目录
- **表达式知识体系总览**
- 回答1:
- **表达式知识体系**
- **一、三种表达式形式对比**
- **二、表达式转换核心方法**
- **1. 中缀转后缀(重点)**
- **2. 中缀转前缀**
- **三、表达式计算方法**
- **1. 后缀表达式计算(栈实现)**
- **2. 中缀表达式计算(双栈法)**
- 回答2:
- **终极生活类比(3秒懂核心)**
- **灵魂三问(人类本能验证法)**
- **手动转换术(不背算法,用自然思维)**
- **脑内成像训练(闭眼想象)**
- **暴击式总结**
- 回答3:
- **三大表达式核心对比表**
- **顶级理解三连击**
- **深度认知突破**
- **终极验证方法**
表达式知识体系总览
让思想碎片重焕生机的灵魂:
这两个文档中,所有关于表达式的内容(比如中缀表达式,前缀表达式,后缀表达式),总之所有关于文档中提到的关于表达式的内容,做一个汇总以及梳理,让我清晰,全面,直观,深刻地理解相关内容
回答1:
以下是两个文档中关于表达式核心内容的系统化梳理,采用结构化方式呈现:
表达式知识体系
一、三种表达式形式对比
| 类型 | 结构 | 示例 | 特点 | 计算顺序 |
|---|---|---|---|---|
| 中缀表达式 | 运算符在操作数中间 | a + b * (c - d) | 需要括号和优先级规则 | 依赖运算符优先级和结合性 |
| 前缀表达式 | 运算符在操作数前 | + a * b - c d | 无需括号,适合递归处理 | 从右向左扫描,运算符优先执行 |
| 后缀表达式 | 运算符在操作数后 | a b c d - * + | 无需括号,适合栈计算 | 从左向右扫描,遇运算符立即计算 |
二、表达式转换核心方法
1. 中缀转后缀(重点)
转换步骤:
- 加完全括号:明确运算优先级
a + b * c → (a + (b * c)) - 移动运算符:将运算符移到对应括号后
(a (b c *) +) → abc*+ - 去除括号:得到后缀表达式
abc*+
栈算法流程:
优先级规则表:
| 运算符 | 栈内优先级 | 栈外优先级 | 说明 |
|---|---|---|---|
( | 1 | 8 | 强制入栈 |
) | - | 1 | 强制出栈 |
* / % | 5 | 4 | 高优先级 |
+ - | 3 | 2 | 低优先级 |
# | 0 | - | 栈底标记 |
示例:1 + 2 * 3 → 1 2 3 * +
2. 中缀转前缀
转换步骤:
- 加完全括号:
a + b * c → (a + (b * c)) - 移动运算符:将运算符移到对应括号前
+ a * b c - 去除括号:得到前缀表达式
+ a * b c
三、表达式计算方法
1. 后缀表达式计算(栈实现)
算法步骤:
- 初始化空栈
- 从左到右扫描后缀表达式:
- 操作数:入栈
- 运算符:弹出栈顶两个操作数计算,结果入栈
- 最终栈顶为计算结果
示例:3 4 2 * 1 5 - / +
计算过程:
3 → 栈 [3]
4 → 栈 [3,4]
2 → 栈 [3,4,2]
* → 4*2=8 → 栈 [3,8]
1 → 栈 [3,8,1]
5 → 栈 [3,8,1,5]
- → 1-5=-4 → 栈 [3,8,-4]
/ → 8/-4=-2 → 栈 [3,-2]
+ → 3+(-2)=1 → 结果 1
2. 中缀表达式计算(双栈法)
- 操作数栈:存储数值
- 运算符栈:存储运算符
- 当遇到运算符时,与栈顶比较优先级,按需弹出计算
回答2:
这次我们抛开所有数学符号和理论,用最直观的认知映射和人类本能直觉来彻底打通这三大表达式。准备好迎接「啊哈时刻」!
终极生活类比(3秒懂核心)
-
中缀表达式:做菜步骤说明书
- “先炒鸡蛋(等油热),然后加西红柿(但要先切块)”
- 需要不断看优先级(先切菜还是先热油?)
-
前缀表达式:军事指令
- “全体注意!现在执行:开火→瞄准→目标A”
- 必须倒着执行:先找到目标A,再瞄准,最后开火
-
后缀表达式:快递分拣流水线
- “包裹北京→包裹上海→合并发华北区”
- 看到什么就立刻处理什么,绝不回头
灵魂三问(人类本能验证法)
Q1:为什么计算机讨厌中缀表达式?
→ 就像让外国人看中文菜谱:
3 + 5 × 2
人类秒懂先乘后加,但计算机需要反复扫描确认优先级(像查字典)
Q2:后缀表达式为何高效?
→ 如同工厂流水线:
3 5 2 × +
工人(CPU)只需低头处理眼前物品:
- 拿3 → 放桌上
- 拿5 → 放桌上
- 拿2 → 放桌上
- 看到× → 把最后两个相乘 → 得到10放桌上
- 看到+ → 把最后两个相加 → 结束
全程不用抬头看优先级!
Q3:前缀表达式存在的意义?
→ 像组装宜家家具的步骤:
× + 3 5 2
必须从右往左读:
- 先找到2
- 再找到5
- 执行+ → 3+5=8
- 最后执行× → 8×2=16
适合递归处理(函数式编程的DNA)
手动转换术(不背算法,用自然思维)
目标:把中缀表达式 (3+5)×2 转为后缀
-
画出计算顺序:
×/ \+ 2/ \3 5 -
(树根是×,左子树是+,右子树是2)
-
后序遍历这棵树:
- 先访问左子树(+):3 → 5 → +
- 再访问右子树(2)
- 最后访问根节点(×)
→ 3 5 + 2 ×
-
终极验证:
想象你是计算机,按顺序处理:
3入栈 →5入栈 →弹出5+3=8入栈 →2入栈 →弹出2×8=16
脑内成像训练(闭眼想象)
-
中缀:迷宫路线图(需要自己找出口)
A + B × C - D
→ 你要自己决定先走×通道还是+通道 -
后缀:直梯楼层按钮
A B C × + D -
→ 严格从下往上点亮按钮,绝不跳层 -
前缀:俄罗斯套娃
- + A × B C D
→ 必须从最外层娃娃开始拆解
暴击式总结
-
后缀表达式 = 即时满足模式
(看到运算符就立刻结算,绝不拖延) -
前缀表达式 = 战略规划模式
(先部署所有操作指令,再反向执行) -
中缀表达式 = 人类谈判现场
(需要不断协调优先级和括号)
现在试着重写这个式子:(6-3)/(2+4×5)
用「快递流水线思维」转换为后缀表达式,感受那种「不用动脑,直接流水线操作」的快感!
(答案:6 3 - 2 4 5 × + / → 像传送带上的包裹一样逐个处理)
回答3:
我用最简洁、高密度的方式将前缀、中缀、后缀表达式的核心逻辑提炼给你:
三大表达式核心对比表
| 中缀 | 前缀(波兰) | 后缀(逆波兰) | |
|---|---|---|---|
| 结构 | 操作符在操作数中间 | 操作符在操作数前 | 操作符在操作数后 |
| 示例 | (A+B)*C | *+ABC | AB+C* |
| 括号 | 必须 | 完全不需要 | 完全不需要 |
| 计算 | 需优先级判断 | 严格从左到右解析 | 严格从左到右计算 |
| 用途 | 人类阅读 | Lisp类语法/编译器 | 计算机高效计算 |
顶级理解三连击
-
本质差异
- 中缀表达式是人类视角,用括号和优先级模拟计算顺序
- 前缀/后缀是机器视角,通过操作符位置隐式表达计算顺序
-
转换核心算法
-
中缀→后缀:用栈缓存操作符(遇高优先级弹出低优先级)
# 例:A+B*C → ABC*+ # 栈操作流程:+遇到*时因优先级低被压栈,*运算完弹出+ -
中缀→前缀:反转表达式→处理后缀→再反转
(需处理操作数顺序,复杂度更高)
-
-
求值终极方案
-
后缀计算:遇到操作数压栈,遇到操作符弹出栈顶两元素计算
# 计算 AB+C* (即 (A+B)*C ) # 栈演变:A → A,B → (A+B) → (A+B),C → (A+B)*C -
前缀计算:从右向左扫描,其他逻辑与后缀类似
-
深度认知突破
-
为什么栈是关键?
表达式本质是操作符优先级嵌套结构,栈完美匹配这种"后进先出"的嵌套关系 -
逆波兰为何高效?
消除了括号和优先级判断,计算时只需单次线性扫描(时间复杂度O(n)) -
现实应用场景:
- 编译器语法解析(Abstract Syntax Tree构建)
- 金融交易系统的实时报价计算
- 老式HP计算器的工作原理
终极验证方法
用这个表达式检验是否真正理解:
中缀:3*(4^2+10/5)-6
→ 前缀:- * 3 + ^ 4 2 / 10 5 6
→ 后缀:3 4 2 ^ 10 5 / + * 6 -
(计算顺序:4²=16 → 10/5=2 → 16+2=18 → 3×18=54 → 54-6=48)
AI模型版本:
中国的深度求索(DeepSeek)公司开发的智能助手DeepSeek-V3
采用深度思考模式,深度思考模型版本为R1
没有打开联网搜索
对话编号:2
相关文章:
Day36【AI思考】-表达式知识体系总览
文章目录 **表达式知识体系总览**回答1:**表达式知识体系****一、三种表达式形式对比****二、表达式转换核心方法****1. 中缀转后缀(重点)****2. 中缀转前缀** **三、表达式计算方法****1. 后缀表达式计算(栈实现)****…...
Tailwind CSS v4.0 升级与 Astro 5.2 项目迁移记录
本文博客链接 https://ysx.cosine.ren/tailwind-update-v4-migrate 自用小记。 Tailwind CSS v4.0 - Tailwind CSS 新的高性能引擎 - 完整构建的速度速度快 5 倍,增量构建的速度快于 100 倍以上 —— 以微秒为单位进行测量。为现代 Web 设计 - 建立在前沿的 CSS 特…...
K8S ReplicaSet 控制器
一、理论介绍 今天我们来实验 ReplicaSet 控制器(也叫工作负载)。官网描述如下: 1、是什么? ReplicaSet 副本集, 维护一组稳定的副本 Pod 集合。 2、为什么需要? 解决 pod 被删除了,不能自我恢…...
基于springboot校园点歌系统
基于Spring Boot的校园点歌系统是一种专为校园场景设计的音乐点播平台,它能够丰富学生的校园生活,提升学生的娱乐体验。以下是对该系统的详细介绍: 一、系统背景与意义 在校园环境中,学生们对于音乐有着浓厚的兴趣,传…...
【R语言】数据操作
一、查看和编辑数据 1、查看数据 直接打印到控制台 x <- data.frame(a1:20, b21:30) x View()函数 此函数可以将数据以电子表格的形式进行展示。 用reshape2包中的tips进行举例: library("reshape2") View(tips) head()函数 查看前几行数据&…...
【C++】2.高并发内存池 -- 如何设计一个定长内存池
博客主题:如何设计一个定长内存池 个人主页:https://blog.csdn.net/sobercq CSDN专栏:https://blog.csdn.net/sobercq/category_12884309.html Gitee链接:https://gitee.com/yunshan-ruo/high-concurrency-memory-pool 文章目录 前…...
Redis --- 使用Feed流实现社交平台的新闻流
要实现一个 Feed 流(类似于社交媒体中的新闻流),通常涉及以下几个要素: 内容发布:用户发布内容(例如文章、状态更新、图片等)。内容订阅:用户可以订阅其他用户的内容,获…...
React中key值的正确使用指南:为什么需要它以及如何选择
React中key值的正确使用指南:为什么需要它以及如何选择 一、key值的基本概念二、如何选择合适的key值1. 数据来源决定key策略2. key值的三大核心要求 三、React为何需要key值?1. 虚拟DOM优化机制2. 状态维护机制 四、常见误区及解决方案1. 索引作为key的…...
在Debian 12上安装VNC服务器
不知道什么标题 可以看到这个文章是通过豆包从国外网站copy的,先这样写着好了,具体的我有时间再补充,基本内容都在这里了。 在Debian 12上安装VNC服务器 简介 VNC(Virtual Network Computing,虚拟网络计算…...
游戏引擎学习第88天
仓库:https://gitee.com/mrxiao_com/2d_game_2 调查碰撞检测器中的可能错误 在今天的目标是解决一个可能存在的碰撞检测器中的错误。之前有人提到在检测器中可能有一个拼写错误,具体来说是在测试某个变量时,由于引入了一个新的变量而没有正确地使用它&…...
c++中priority_queue的应用及模拟实现
1.介绍 priority_queue 是一种数据结构,它允许你以特定的顺序存储和访问元素。在 C 标准模板库(STL)中,priority_queue 是一个基于容器适配器的类模板,它默认使用 std::vector 作为底层容器,并且默认使用最…...
深度学习篇---计算机视觉任务模型的剪裁、量化、蒸馏
文章目录 前言第一部分:计算机视觉任务图像分类特点 图像识别特点 目标检测特点 图像分割子任务特点 第二部分:模型剪裁、量化、蒸馏模型剪裁1.权重剪裁2.结构剪裁3.迭代剪裁 模型量化1.对称量化2.非对称量化3.动态量化4.静态量化 知识蒸馏1.训练教师网络…...
java-关键字(final,static)
关键字 final 和 static 是两个常用的关键字,它们分别用于不同的场景,具有不同的作用。 final final 关键字用于表示某个实体是不可变的。它可以应用于变量、方法和类。 final 变量 当 final 用于变量时,表示该变量一旦被初始化后&#…...
游戏引擎 Unity - Unity 设置为简体中文、Unity 创建项目
Unity Unity 首次发布于 2005 年,属于 Unity Technologies Unity 使用的开发技术有:C# Unity 的适用平台:PC、主机、移动设备、VR / AR、Web 等 Unity 的适用领域:开发中等画质中小型项目 Unity 适合初学者或需要快速上手的开…...
JDK17主要特性
JDK 17,也被称为Java 17或Java Platform, Standard Edition 17,是Java编程语言的第十七个主要版本,由Oracle公司在2021年9月发布。Java 17是一个长期支持(LTS,Long-Term Support)版本,这意味着它…...
将OneDrive上的文件定期备份到移动硬盘
背景: 我在oneDrive上存了很多文件,分布在多个文件夹中,也有套了好几层文件夹的情况。我希望每隔一段时间,将oneDrive上的所有文件向移动硬盘上拷贝一份,但是我只想将距离上一次向移动硬盘拷贝的文件相比,发…...
【Elasticsearch】geohex grid聚合
在 Elasticsearch 中,地理边界过滤是一种用于筛选地理数据的技术,它可以根据指定的地理边界形状(如矩形、多边形等)来过滤符合条件的文档。这种方法在地理空间数据分析中非常有用,尤其是在需要将数据限制在特定地理区域…...
crewai框架第三方API使用官方RAG工具(pdf,csv,json)
最近在研究调用官方的工具,但官方文档的说明是在是太少了,后来在一个视频里看到了如何配置,记录一下 以PDF RAG Search工具举例,官方文档对于自定义模型的说明如下: 默认情况下,该工具使用 OpenAI 进行嵌…...
算法 哈夫曼树和哈夫曼编码
目录 前言 一,二进制转码 二,哈夫曼编码和哈夫曼树 三,蓝桥杯 16 哈夫曼树 总结 前言 这个文章需要有一定的树的基础,没学过树的伙伴可以去看我博客树的文章 当我们要编码一个字符串转成二进制的时候,我们要怎么…...
TCP 丢包恢复策略:代价权衡与优化迷局
网络物理层丢包是一种需要偿还的债务,可以容忍低劣的传输质量,这为 UDP 类服务提供了空间,而对于 TCP 类服务,可以用另外两类代价来支付: 主机端采用轻率的 GBN 策略恢复丢包,节省 CPU 资源,但…...
Sumatra PDF:小巧免费,满足多样阅读需求
Sumatra PDF是一款完全免费的本地阅读器软件,以小巧的体积和全面的功能受到用户青睐。如今,它已经更新到3.3版本,带来了更多实用功能,尤其是新增的注释功能,值得我们再次关注。 软件特色 轻量级体积:压缩…...
vue2-给data动态添加属性
vue2-给data动态添加属性 1. 问题的来源 在VUe2中(VUE3中使用了proxy,及时动态添加也能实现响应式),如果我们动态给data添加一个属性,会发现视图没有同步更新举个例子我们通过v-for遍历data中的一个属性list…...
TiDB 分布式数据库多业务资源隔离应用实践
导读 随着 TiDB 在各行业客户中的广泛应用 ,特别是在多个业务融合到一套 TiDB 集群中的场景,各企业对集群内多业务隔离的需求日益增加。与此同时,TiDB 在多业务融合场景下的资源隔离方案日趋完善,详情可参考文章 《你需要什么样的…...
105,【5】buuctf web [BJDCTF2020]Easy MD5
进入靶场 先输入试试回显 输入的值成了password的内容 查看源码,尝试得到信息 什么也没得到 抓包,看看请求与响应里有什么信息 响应里得到信息 hint: select * from admin where passwordmd5($pass,true) 此时需要绕过MD5()函…...
BFS(广度优先搜索)——搜索算法
BFS,也就是广度(宽度)优先搜索,二叉树的层序遍历就是一个BFS的过程。而前、中、后序遍历则是DFS(深度优先搜索)。从字面意思也很好理解,DFS就是一条路走到黑,BFS则是一层一层地展开。…...
33.Word:国家中长期人才发展规划纲要【33】
目录 NO1.2样式 NO3 图表 NO4.5.6 开始→段落标记视图→导航窗格→检查有无遗漏 NO1.2样式 F12/另存为:Word.docx:考生文件夹样式的复制样式的修改 样式的应用(没有相似/超级多的情况下)——替换 [ ]通配符&#x…...
gym-anytrading
参考:https://github.com/upb-lea/gym-electric-motor AnyTrading 是一组基于 reinforcement learning (RL) 的 trading algorithms(交易算法)的 OpenAI Gym 环境集合。 该项目主要用于foreign exchange (FOREX) 和 stock markets (股票市场)…...
如何自定义软件安装路径及Scoop包管理器使用全攻略
如何自定义软件安装路径及Scoop包管理器使用全攻略 一、为什么无法通过WingetUI自定义安装路径? 问题背景: WingetUI是Windows包管理器Winget的图形化工具,但无法直接修改软件的默认安装路径。原因如下: Winget设计限制…...
私有化部署 DeepSeek + Dify,构建你的专属私人 AI 助手
私有化部署 DeepSeek Dify,构建你的专属私人 AI 助手 概述 DeepSeek 是一款开创性的开源大语言模型,凭借其先进的算法架构和反思链能力,为 AI 对话交互带来了革新性的体验。通过私有化部署,你可以充分掌控数据安全和使用安全。…...
Java 进阶 01 —— 5 分钟回顾一下 Java 基础知识
Java 进阶 01 —— 5 分钟回顾一下 Java 基础知识 Java 生态圈Java 跨平台的语言 Java 虚拟机规范JVM 跨语言的平台多语言混合编程两种架构 举例 JVM 的生命周期 虚拟机的启动虚拟机的执行虚拟机的退出 JVM 发展历程 Sun Classic VMExact VMHotSpotBEA 的 JRockitIBM 的 J9 …...
