順問題と逆問題

「順問題」と「逆問題」という新しいことばを知りました。英語でいうと direct problem, inverse problem です。例えば、入出力系を考えたときに、入力から出力を求めるのが順問題で、出力から入力を推定したり、入力に対して求められる出力を実現する系を考えたりするのを逆問題と呼ぶそうです。算数の問題だけでなくて、広く「問題解決 problem-solving」といわれる一般的な問題にあてはめると、こうやったらどうなるかを求めるのが順問題、こうなるためにはどうするかを求めるのが逆問題です。

例えば下のようなのが例としてあげられるでしょうか。

  • 順問題 - 演算、構造計算、実験、検査、推論
  • 逆問題 - 設計、プログラミング、計画、証明、詰将棋

厳密に区別できるものではないです。順問題で、こうやったらどうなるかを求めるには、実際にやってみるというのが一つの良いやりかたですが、どうやったらやってみることができるかを段取りするのは、上の定義だと逆問題です。あるいは、逆問題が解けたことを確かめるときには、やってみることになり、それは順問題ですね。順問題の解決は逆問題を内包していますし、一方で逆問題の解決は順問題を内包していますから、互いに入れ子になっていて、一般的な問題ははっきりとこの2つに分けれないかもしれません。

しかし、問題を順問題と捉える逆問題と捉えるか、見え方が変わってくるから便利だと思いました。例えばソフトウェアテストなんかは、仕様どおりに動くことを確かめるという問題なら順問題ですけど、仕様どおりにならない条件を探すという問題なら逆問題と言えるでしょう。

一般には、順問題より逆問題の方が難しいです。逆問題を解くには、解を順問題としてとき直さないとならないので、同じ系に対してなら、順問題が解けないければ逆問題は解けません。

解決の困難さだけで問題の価値をはかろうとすると、順問題は手続きが多くて手間ががかかる方が優れているとなりがちですかね。あるいは、最新で高価な計測装置で測ってみたとか、大きな計算機で重たい計算をやってみたとか、最新技術のデモストレーションに向かったりしますかね。こういう仕事をするには、解決の手続き自体に興味が必要です。

逆問題は手続き的には解が求まらないので、その解決は探索的になります。逆関数が分かっていて、探索が要らないなら、それはもう順問題なんですかね。ちゃんと定義できないことばなので、このへんがあいまいになってしまいますね。

さて、われわれが逆問題を解くプロセスを考えると面白いです。当然ながら設計や計画では、うまくいくのが見つかるまで実行するなんてのはやりません。何度もできないから設計や計画をわれわれはやっています。そのため、設計や計画をするときは、解かずに解を求める必要があります。このときどうやっているかというと、経験や知識から、解こうとしている問題と似たような問題を探してきて、近似解を推定しているのでしょう。やり直しが許される場合でも、経験則から近似解が見つかると、試行の回数が少なくなるので、素早く解にたどり着きます。

解かずに近似解を見つけるのを、わたしたちは想像力とも言ったりします。外からは、何もないところから、解が出てくるように見えますので、想像力をもって逆問題を解く能力を人はクリエイティビティと呼びます。