逆ポーランド記法

読み:ぎゃくポーランドきほう
外語:RPN: reverse polish notation
品詞:名詞

日本語で後置表記法ともいう演算の表記法。演算式の記述方法の一つであり、演算子を演算対象の後ろに置くスタイル。その逆で、通常人が計算に用いるような記述方法を日本語では中置表記法と言う。

発案者はポーランド記法と同じく、ポーランドの数学者Lukasiewicz。

プログラマの中にはこの逆ポーランド方式を好み、逆ポーランド式の電卓などを愛用する者も少なからずいる。

通常の算術式からの変換方法は、次の基準に従う。

  1. 数値はそのまま出力
  2. 演算子はスタックが空か、直前にスタックにプッシュしたものの優先順位と比較し
    1. 同じか高い時にプッシュ
    2. それ以外の時はスタックからポップした演算子の優先順位が高い間出力し続け、現在の演算子をスタックにプッシュする。

一般的な例

表現方法は複数存在するが、例えば次のように書くことができる。

  • a+b → ab+
  • a+(b×c) → abc×+
  • (a+b)×c → ab+c×
  • (a+b)÷c−d → ab+c÷d−
  • a×b+c×d+e×f → ab×cd×ef×++
  • ((a+b)×(c+d)+e)×f → ab+cd+×e+f×

などとなる。

()などの冗長な表現が逆ポーランド記法では一切不要で、スマートに表現できる。

まず数字がきて、その後に演算子が来る。頭の中で実際にやっている動作と同じ書き方、それが逆ポーランド記法である。

Hewlett-Packardから、この記述法のRPN電卓が販売されていて高い人気を持つ。

演算子が必ず最後に来る記述法なので、"=" のキーは、この電卓には無い。

RPN電卓では(普通の電卓もそうだが)演算子キーを数値のセパレータとする。演算を行なわずに数値をスタックに積む(数値入力終了の通知)にはエンターキーを用いる。