
【电】 reverse pollish notation; suffix notation
反向波兰表示法(Reverse Polish Notation, RPN),又称逆波兰表达式,是一种数学表达式的书写方式,其核心特征是将运算符置于所有操作数之后。这种表示法消除了对括号的需求,并严格遵循从左到右的运算顺序,其计算过程天然适合栈(Stack)数据结构实现。
术语定义
本质:一种无括号、无歧义的后缀表达式(运算符后置),例如表达式 $(3+4)times5$ 的 RPN 形式为 $3:4:+:5:times$。
运算规则
计算时从左向右扫描表达式:
例如 $3:4:+:5:times$ 的计算步骤:
$$ begin{align} &text{步骤1: 压入 3} quad text{栈: } &text{步骤2: 压入 4} quad text{栈: } &text{步骤3: 执行 +} quad 3+4=7 quad text{栈: } &text{步骤4: 压入 5} quad text{栈: } &text{步骤5: 执行 ×} quad 7times5=35 quad text{栈: } end{align} $$
特性 | 中缀表示法 | 反向波兰表示法 |
---|---|---|
运算符位置 | 操作数之间(如 $A+B$) | 操作数之后(如 $A:B:+$) |
括号需求 | 依赖括号消除歧义 | 无需括号 |
计算顺序 | 依赖优先级和结合性 | 严格从左到右 |
栈兼容性 | 需复杂解析 | 直接适配栈操作 |
早期语言如 Forth 和 PostScript 直接采用 RPN 作为执行模型,现代编译器常将中缀表达式转换为 RPN 以简化中间代码生成。
HP 等厂商的工程计算器采用 RPN 输入逻辑,减少按键次数并避免括号嵌套问题。
因无需括号解析和优先级判断,RPN 在表达式求值算法中时间复杂度稳定为 $O(n)$,优于中缀表达式的 $O(n)$ 解析复杂度。
该表示法源于波兰逻辑学家扬·武卡谢维奇(Jan Łukasiewicz) 于 1920 年提出的波兰表示法(前缀表达式)。计算机科学家查尔斯·汉布林(Charles Hamblin) 在 1950 年代将其发展为后缀形式,后由弗里德里希·鲍尔(Friedrich L. Bauer) 和艾兹赫尔·戴克斯特拉(Edsger Dijkstra) 应用于栈计算机理论。
参考资料
反向波兰表示法(Reverse Polish Notation,RPN)是一种数学表达式的书写方式,其核心特点是运算符置于操作数之后,无需括号即可明确运算顺序。以下是详细解释:
中缀表达式:
[ (10 - 4) div (2 + 1) ]
转换为RPN:
[ 10 4 - 2 1 + div ]
求值步骤:
RPN通过操作符后置和栈结构简化了表达式处理,尤其适合计算机高效运算,但对人类需一定适应。其设计思想至今影响计算器、编程语言及编译器领域。
闭合线路不间断工作侧疝超短波收发机担保充分碘化亚铁糖浆多栏式工作底稿分支系统浮点溢出故障复合唇裂父权制辅助装置胍那克林光视盘检疫证明书监狱管理学家解相关经法律许可极值绝对的指令拦腰流行性脑脊膜炎脑室液频率稳定度前蛋白胨尿乳酸乳杆菌山金车填空性水肿啼叫图案颜色