
【電】 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通過操作符後置和棧結構簡化了表達式處理,尤其適合計算機高效運算,但對人類需一定適應。其設計思想至今影響計算機、編程語言及編譯器領域。
【别人正在浏覽】