基礎理論

ポーランド記法と逆ポーランド記法の使い方を解説!

「ポーランド記法?ポーランド国と関係あるの?」と思いますよね。

はい。ポーランド国と関係があるのです。この記法を編み出した人がポーランド出身です!

ということで、今回は「ポーランド記法」、「逆ポーランド記法」に関してメリット含めて解説します。

ポーランド記法とは?

「Yは1と2を足したものと、3と4を足したものを最後にかけた結果」といった問題があった場合、私達が通常使う四則演算の表し方は以下のようになります。

Y = (1+2)×(3+4) ※中置記法

この式のあらわしかたは「中置記法(ちゅうちきほう)」と言います。

演算子(+、-、×、÷)を操作対象(数字)の中間に記述することから、このように呼ばれています。

これは、我々人間が計算する時は非常に分かり易いのですが、コンピュータから見ると「加算(+)、減算(-)」より「乗算(×)、除算(÷)」を優先的に計算する、カッコ内を先に計算するなどの、演算の優先順位などをコンピュータが解析しないといけないので、コンピュータにとってはちょっと難しくなります。

そこで、コンピュータが分かり易く、処理し易い式の表し方が無いか、ということで、ポーランド人の論理学者ヤン・ウカシェヴィチ (Jan Łukasiewicz)さん が考案した記述方法が「ポーランド記法」となります。

記法のルールを一言で表現すると、

ポーランド記法のポイント

  • 演算子を操作対象(数字)の前(左側)に記述する
  • 中置記法に比べ、コンピュータ側での処理がし易くなる
  • 前に演算子を記述するので、前置記法(ぜんちきほう)とも呼ぶ

中置記法で表された「Y = (1+2)×(3+4)」はポーランド記法によって、以下のようになります。

= Y × + 1 2 + 3 4 ※ポーランド記法

この式にするためのルールは先ほども記載しましたが、「演算子(記号)を操作対象(数字)の前(左側)に記述する」、これを繰り返していくだけです。

でも、言葉だと分かり難いと思いますので、図で表現してみました。

ポーランド記法の手順

慣れてしまえばそれほど難しくは無く、パズルを解いていく感じですね。

ポーランド記法を使えば、式の先頭から順番に処理をしていけば良く、コンピュータにとっては分かり易いのですが、演算子が先に出てきて、それに対して、被演算子(数字)が出てくるまで演算子を保留する必要があるので、保留にしている時間やメモリ領域がもったいないのです。

そこで、より短時間で計算できるようにするために、「逆ポーランド記法」が生み出されたのです。

逆ポーランド記法とは?

ポーランド記法の逆なので、前では無く、後ろに演算子をもっていく記法です。

逆ポーランド記法のポイント

  • 演算子を操作対象(数字)の後(右側)に記述する
  • 中置記法、更に前置記法(ポーランド記法)に比べ、コンピュータ側での処理がし易くなる
  • 前に演算子を記述するので、後置記法(こうちきほう)とも呼ぶ

中置記法で表された「Y = (1+2)×(3+4)」は逆ポーランド記法によって、以下のようになります。

Y 1 2 + 3 4 + × = ※逆ポーランド記法

この式もポーランド記法と同様の考え方で、「演算子(記号)を操作対象(数字)の前(左側)に記述する」、これを繰り返していくだけです。

言葉だと分かり難いと思いますので、こちらも図で表現してみました。

逆ポーランド記法の手順

逆ポーランド記法も記号を後ろにもっていくだけなので、慣れればパズルのように変形できますね。

逆ポーランド記法の処理とメリット

では、ポーランド記法に比べて逆ポーランド記法が優れている点を逆ポーランド記法の手順を見ながら解説します。

コンピュータにおいてプログラム言語を機械語に変換する処理はコンパイラと呼びますが、このコンパイラはプログラムの構文解説において、数式を逆ポーランド記法などに変換してコンピュータ自身が処理し易くしてます。

逆ポーランド記法の場合は、コンピュータがタックを用いることで以下の図のように後ろから順番に処理を行うことができます。

逆ポーランド記法によるコンピュータの計算の流れ

ポイントはポーランド記法に比べて、ステップ数が少なくできるので、結果的に「メモリも計算時間も節約できる」と言う点が大きく、膨大な計算になればなるほど効果は出てきます。

まとめ

今回はポーランド記法と逆ポーランド記法の使い方を解説しました。

ポーランド記法と逆ポーランド記法のまとめ

  • ポーランド記法はコンピュータでの計算をシンプルにするための表し方
  • 演算子(記号)の位置と被演算子(数字)の位置を前や後ろに持っていき計算式を表していく
  • 逆ポーランド記法を使うと、コンピュータのスタックを用いて、メモリや処理のステップ数を少なく計算ができるメリットがある

ポーランド記法や逆ポーランド記法は普段我々が意識して使うことは無いですが、コンピュータの内部処理の中で使われて、計算式が変形されていることを覚えておくと良いですね。

また、情報処理の試験、特に基本情報技術者や応用情報技術者の午前の問題で出題されることがありますね。

以上です!

コンパイラに関しては以下の「プログラムが実行されるまでの流れを学ぼう!」の記事にも詳しく解説していますので、併せて読んでみてください。

-基礎理論