還元 (計算複雑性理論)
From Wikipedia, the free encyclopedia
過去に解いたことのある問題によく似た問題に出会うことは珍しくない。そのような場合、その新しい問題を素早く解くには、新しい問題を過去の問題に変換して既知の解法で解くのがよいだろう。そして、逆変換することで最終的な答えが得られる。これは還元の最も分かり易い例である。
また、やや複雑な使用法だが、解くのが難しいことが分かっている問題があり、それとよく似た問題を与えられたとする。その新たな問題も同様に難しいのではないかと考えることだろう。ここで逆説的にその新しい問題は簡単に解けると仮定する。その上で過去の問題を新たな問題に簡単に変換(還元)することができたとすると矛盾が生じる。つまり、新たな問題も難しいということが分かるのである。
還元の非常に簡単な例を示す。それは「乗算」から「平方(二乗)」への還元である。我々が加算、減算、平方、2での除算しか知らないとする。その知識だけから、以下の方程式を使うと、任意の2つの数の積を得ることができる:
- a × b = ((a + b)2 - a2 - b2)/2.
逆方向の還元も可能である。乗算を知っているなら平方を計算するのはたやすい。つまり、この2つの問題の複雑性は等しいことがわかる。このような還元はチューリング還元に関係する。
しかし、例えば平方は最後に1回しかできないといった制限を加えられると還元が難しくなる。この場合たとえ乗算を含めた基本的演算を全て使用できたとしても(最後に二乗するなら)還元は不可能である。というのも有理数からのような無理数を求めることはできないからである。逆方向では、最後に必ず乗算を行うという制限があっても全く問題なく平方を求めることができる。このような制限された還元を考えることで、乗算のほうが平方よりも複雑であるという(自明な)事実が明らかとなる。これは多対一還元に関係する。
定義
例
- ある決定問題が決定不可能であることを示すために、計算可能関数を使ってそれを既に決定不可能と分かっている決定問題に変換する。特に、ある問題が決定不能であることを示すために、チューリングマシンの停止問題がその問題に還元可能であることを示すという手法がよく使われる。
- 複雑性クラス P、NP、PSPACE は多項式時間還元において閉じている。
- 複雑性クラス L、NL、P、NP、PSPACE は対数空間還元において閉じている。
具体例
ある言語が決定不可能であることを停止問題からの還元で示す例を以下で示す。チューリングマシン M が(受容するしないに関わらず)入力文字列wについて停止するかどうかという問題を H(M, w) と表記する。この言語は決定不可能であることが知られている。チューリングマシンMの受容する文字列がないかどうかという決定問題を E(M) と表記する。E が決定不可能であることを H からの還元によって示す。
矛盾を導くため、E の判定器Rを想定する。これを使って(存在しないと分かっている)Hの判定器Sを作る。Mとw(チューリングマシンと入力文字列)を入力したときのS(M, w)の動作を以下のように定義する。S は、Mがwを入力したときに停止する場合だけ、wのみを受容するチューリングマシンNを生成するものとする(停止しない場合、空の言語を受容するNを作る)。すると、判定器 S は R(N) を評価してNの受容する言語が空であるかどうかを判定できる。RがNを受容するなら、Nの受容する言語は空であり、Mが入力wで停止しないから、Sはそのように判定できる。RがNを受容しないならNの受容する言語は空ではなく、Mは入力wで停止するので、Sはそのように判定する。従って、Eの判定器Rがあれば、任意のマシンMと入力wに関する停止問題H(M, w) の判定器Sを作ることができる。そのようなSは存在しないことが既知であるため、言語Eも決定不可能であることが導かれる。