質問
逆ポーランド表記とは、あれはなんなんですか? 何に使うのですか? |
解答
逆ポーランド表記(ぎゃくポーランドひょうき、Reverse Polish Notation: RPN)とは、数式を括弧なし・演算子後置で表現する方法です。 計算機やコンパイラ、スタックベースの評価において非常に効率的な表記法として使われています。 ■ 通常の数式(中置記法) 私たちがふつう見る数式は「中置記法」です: ``` 3 + 4 × 2 ``` 演算子(+, ×)がオペランド(数値)の間に置かれる表記法です。 ただしこのままだと「どっちを先に計算するか?」があいまいなため、括弧や優先順位が必要です。 ■ 逆ポーランド表記(RPN) 逆ポーランド記法では、演算子をオペランドの後ろに書きます: ``` 3 4 2 × + ``` 意味は: ``` 3 + (4 × 2) ``` つまり、スタック(後入れ先出し)で簡単に評価できます。 ■ スタックによる処理の流れ 上記の「3 4 2 × +」を処理するとき、以下の手順になります: 1. スタックに「3」push 2. スタックに「4」push 3. スタックに「2」push 4. 演算子「×」が出たので、2つpop → 4と2 → かけ算 → 結果8をpush 5. 次に演算子「+」が出たので、2つpop → 3と8 → たし算 → 結果11が得られる ■ なぜ使うのか? ◎ 利点 * 括弧が不要 * 優先順位の処理がいらない * 機械的に簡単に処理できる(スタックマシンに適している) * 電卓やコンパイラに向いている ◎ 使用例 * HPのRPN電卓 * PostScript(プリンター言語) * Java VM、Forth、Lispの一部処理系 * コンパイラ設計・字句解析や構文解析 ■ 補足:ポーランド表記とは? もとの「ポーランド記法」は演算子を前に置く前置記法です: ``` + 3 × 4 2 ``` 逆にしたから「逆ポーランド(後置)」と呼ばれています。 まとめ
|
|
|
この記事へのコメント