---Wiki
複雑性クラス(
英:
Complexity class)は、
計算複雑性理論において関連する
複雑性の問題の
集合を指す。典型的な複雑性クラスは以下のように定義される。
- 抽象機械 M によりO(f(n))の計算資源 R を使って解く事が出来る問題の集合(nは入力長)
複雑性クラス間の関係 [編集]
以下の表はいくつかの問題(または文法、言語)
のクラスを計算複雑性理論の中で捉えて図示したものである。
クラス
X が
Y の
真部分集合である場合、
X を
Y の下に置き、実線でそれらを接続している。
X が部分集合であっても上位と等しい可能性もある場合、
破線で接続している。決定可能か決定不能かは、どちらかと言えば
計算可能性理論の範疇であるが、
ここでは複雑性クラスの関係を示すために入れてある。
複雑性クラス一覧 [編集]
以下の一覧の各複雑性クラスには
補問題の集合である 'Co' の付くクラスが存在する。例えば、問題 L が NP に含まれるなら、その補問題は Co-NP に属する。
- #P - NP問題の解を数える問題
- #P完全 - #P の中で最も難しい問題群
- AH - The arithmetic hierarchy
- AP - 交替性チューリングマシンで多項式時間で解ける問題のクラス
- BPP - 乱択アルゴリズムで多項式時間で解ける問題のクラス(解はおそらく正しい)
- BQP - 量子コンピュータで多項式時間で解ける問題のクラス(解はおそらく正しい)
- Co-NP - 非決定性機械で "NO" であることが多項式時間で決定可能な問題のクラス
- Co-NP完全 - Co-NP の中で最も難しい問題群
- DSPACE(f(n)) - 決定性機械で空間計算量 O(f(n)) で解ける問題のクラス
- DTIME(f(n)) - 決定性機械で時間計算量 O(f(n)) で解ける問題のクラス
- E - 線形な指数の指数関数時間で解ける問題のクラス
- ESPACE - 線形な指数の指数関数領域で解ける問題のクラス
- EXPSPACE - 指数関数領域で解ける問題のクラス
- EXPTIME - 指数関数時間で解ける問題のクラス
- IP - 対話型証明系で多項式時間で解ける問題のクラス
- L - 対数領域で解ける問題のクラス
- LOGCFL - 文脈自由言語に還元可能な対数領域で解ける問題のクラス
- NC - 並列コンピュータ上で効率的に解ける問題のクラス(O((log n)c)
- NEXPTIME - 非決定性機械で指数関数時間で解ける問題のクラス
- NL - 非決定性チューリングマシンで対数領域で解ける問題のクラス
- NP - 非決定性チューリングマシンで多項式時間で解ける問題のクラス(P≠NP予想も参照)
- NP完全 - NP の中で最も難しい問題のクラス
- NP困難 - NP完全かそれより難しい問題のクラス
- NSPACE(f(n)) - 非決定性機械で空間計算量 O(f(n)) で解ける問題のクラス
- NTIME(f(n)) - 非決定性機械で時間計算量 O(f(n)) で解ける問題のクラス
- P - 多項式時間で解ける問題のクラス
- P完全 - P の中で最も難しい問題のクラスであり、並列コンピュータで解ける
- PH - 多項式階層にあるクラス群の和集合
- PP - 確率的に多項式時間で解ける問題のクラス(解が正しい可能性は2分の1より若干大きい)
- PR - 原始再帰関数で解ける問題のクラス
- PSPACE - 多項式領域で解ける問題のクラス
- PSPACE完全 - PSPACE の中で最も難しい問題群
- R - 有限時間で解ける問題のクラス。つまり、チューリングマシンで解ける全問題の集合であり、帰納言語に相当
- RE - "YES" という解は有限時間で解けるが、"NO"という解の場合には機械が停止しない可能性のある問題のクラス。すなわち、帰納的可算言語に相当
- RP - 乱択アルゴリズムで多項式時間で解ける問題のクラス(解がNOの場合は正しくない可能性があるが、YESなら正しい)
- UP - 非決定性チューリングマシンで多項式時間で解ける決定問題のクラス(PとNPの中間)
- ZPP - 乱択アルゴリズムで解ける問題のクラス(解は常に正しいが、平均で多項式時間かかる)
---Wiki
計算複雑性理論(けいさんふくざつせいりろん、computational complexity theory)とは、計算機科学における計算理論の一分野であり、アルゴリズムのスケーラビリティや、特定の計算問題の解法の複雑性(計算問題の困難さ)などを数学的に扱う。計算量理論、計算の複雑さの理論、計算複雑度の理論ともいう[1]。
概要 [編集]
計算複雑性理論は
計算可能関数の計算の複雑さを扱う。計算理論のもう一つの重要な分野である
計算可能性理論では問題の解法があるかどうかだけを扱い、その複雑さや必要とする計算資源量は問わない点が異なる。
具体的には、計算複雑性理論は「あるアルゴリズムへの入力データの長さを増やしたとき、実行時間や必要な記憶量はどのように増えるか?」という問いに答える。これは、
計算機の実際的な限界を与えるものであり、この理論は産業や社会にとって重要な意味を持つ。なぜならば、計算機の性能は向上しているが、解析すべき情報も増加しているため、アルゴリズムが入力データ長の増大にうまく対応できるか否かで、計算機が現実的な問題を解決するのに役に立つか否かが決まるからである。
計算複雑性理論では、計算問題やそれを解くアルゴリズムを、NPやPといった複雑性クラスに分類する。個々の計算問題を少ない計算資源で解くアルゴリズムを発見することはもちろん計算機科学の重要な課題だが、複雑性理論ではこれにとどまらず、計算問題が何らかの複雑性クラスに属すること、あるいは属しないことを証明したり、クラス間の階層構造を解明することも目標とする。
ある計算問題 X が、ある複雑性クラス C に属するとは、あるアルゴリズム A が存在して、問題 X をクラス C を定義する計算量 t
C 以下で解決できることを意味し、問題 X の複雑性の上界を与える。そして、よりよい上界を求めることは、問題 X をより少ない計算資源で解くアルゴリズムを発見する(あるいはその存在を示す)ことに他ならず、産業界において有意義である。また、ある計算問題 X が、ある複雑性クラス C に属しないとは、問題 X は、いかなるアルゴリズムをもってしても、計算量 t
C 以下では解決できないことを意味し、問題 X の複雑性の下界を与える。計算問題の下界を示すことは、理論的意義を有するだけではなくて、
暗号理論においては、ある暗号方式が計算量的に解読不能であることを示すことを意味し、実際的な価値がある。
現在の計算複雑性理論の最も重要な課題は、
P≠NP予想の証明である。この予想は提起された当初それほど重要とは見なされなかったが、産業において重要な
オペレーションズリサーチの問題の多くが
NPの部分クラスに属する
NP完全問題であることが明らかになるにつれて重要性を増してきた。NP完全問題は、解法が正しいかどうかは簡単に確かめられるが、正確な解を探す方法はスケーラブルではない問題である。
NPクラスが
Pクラスより範囲が広いことが確定すると、それらの問題にはスケーラブルな解が存在しないことが確定する。このため、P≠NP予想の証明は重要とされているのである。
計算問題と計算量・複雑性 [編集]
計算複雑性理論で扱う
問題とは、ある一連の問いの集合があり、各問いは有限長の
文字列で表され、与えられた問いに対して解を求めて出力する計算問題である。例えば、
FACTORIZE問題とは「
二進数で書かれた1つの整数について、その
素因数を全部求めて返す」という問題である。問題に属する個別の問いを
インスタンスと呼ぶ。例えば、「15 の素因数を求めよ」は
FACTORIZE 問題のインスタンスである。
アルゴリズムの
計算量(けいさんりょう)とは、
計算機がそのアルゴリズムの実行に要する計算資源の量をいい、アルゴリズムの
スケーラビリティを示す。形式的には計算機を
チューリング機械や
即時呼出機械(
random access machine)などの
計算モデルとして定式化したうえで、アルゴリズムの使用する資源の量を入力データ長などに対する
関数として表す。計算モデルの瑣末な詳細に影響を受けないよう、計算量はその漸近的な挙動のみに注目し、定数倍を無視する
O記法で書き表すことが多い。計算モデルとしては、
チューリング機械や
論理回路などがある。計算資源の量としては、チューリング機械における
時間計算量(動作ステップ数)や
空間計算量(テープ長)、また論理回路における素子数や深さなどがある。
- 時間計算量は、あるアルゴリズムを使ったときに問題のインスタンスを解くのに要するステップ数を意味し、入力データの長さ(ビット数などで表現できる)の関数として表される。シンプルな例として、ある問題に対する解法が nビットの入力に対して、ある計算モデルで n2 ステップで動作する場合、時間計算量は n2 であるが、他のほとんどの計算モデルでも、時間計算量は漸近的には定数倍の違いしかなく、O記法を使えば計算モデルによらず問題の時間計算量をO(n2) と表せる。計算を芝生を刈る作業にたとえれば、その時間計算量は線型であり、芝生の面積が2倍になれば時間も2倍かかる。この面積が2倍になれば時間も2倍になるという関係は、芝刈機の速度には関係しない。しかし、辞書を二分探索する場合の時間計算量は対数時間であり、辞書の厚さが2倍になっても、二分探索のステップが1増加するだけである。
- 空間計算量は、同様の概念であり、アルゴリズムが必要とする記憶容量を意味する。例えば、紙とペンを使って計算を行う際に要する紙の枚数に相当する。空間計算量にもO記法が使われる。
計算モデルによっては、これらとは異なる計算量が使われることもあり、例えば
回路計算量がある。これは問題の解法を
ブール論理による
論理回路ゲートに置き換え、その回路の規模で計算量を現すものである。これは
集積回路の設計などで利用される。
計算問題の複雑性(または計算量)とは、それがどの計算モデルにおいて、どれほどの計算量のアルゴリズムによって解けるかで測られる。直感的には、問題の計算量は、最も効率のよいアルゴリズムを使ったときに問題のインスタンスを解くのに要する計算量だと考えるのが自然である。しかし、最良のアルゴリズムであることを示すのは通常困難で、多くの場合、O記法を用いて「ある時間以下で計算できる」ことを示すことになる。そのため、複雑性クラスを導入し、クラス間の相互関係を示すことで、計算問題の複雑性を明らかにする。
決定問題 [編集]
計算複雑性理論で扱う計算問題の多くは
決定問題である。決定問題とは、答えが「はい」か「いいえ」になる問題を指す。
決定問題を主に扱うのは、任意の計算問題を何らかの決定問題に
還元することが常に可能だからである。例えば、
HAS-FACTOR を与えられた整数
n と
k(どちらも二進数で与えるとする)について、
n が
k より小さい素因数をもつかどうかに答える決定問題とする。すると、計算問題
FACTORIZE(素因数分解)の解法は、
HAS-FACTOR を使って実現でき、その際に追加の資源はそれほど要しない。具体的には
k について
二分探索を行い、
n の最小素因数を探索し、その値で
n を割る。そして、商について再び同じ作業を繰り返していけばよい。このことは、
HAS-FACTOR の解法をある計算資源量で実現できるか否かが分れば、
FACTORIZE の解法についても分るということを意味する。
計算複雑性理論では、答えが「はい」かどうかを確認する問題と、答えが「いいえ」かどうかを確認する問題を区別する。「はい」と「いいえ」を逆転させた問題は、元の問題の
補問題と呼ばれる。
例えば、決定問題
IS-PRIME(
素数判定問題)は、入力が
素数の場合に「はい」、そうでなければ「いいえ」を返す。一方、問題
IS-COMPOSITE は与えられた整数が素数で
ない(すなわち
合成数である)ことを決定する。
IS-PRIME が「はい」を返すなら、
IS-COMPOSITE は「いいえ」を返す。逆も成り立つ。したがって
IS-COMPOSITE は
IS-PRIME の補問題であり、同様に
IS-PRIME は
IS-COMPOSITE の補問題である。
ある問題の解を求める計算量とその補問題の解を求める計算量は同じであるが、問題のあるインスタンスについて「はい」となる証拠を与えられて、その証拠が正しいかを判定する計算量は同じとは限らない。例えば、
IS-COMPOSITE問題で、ある整数について、証拠として素因子を一つ与えられれば、除算を行うことで検算することができる。しかし、
IS-PRIME問題では、どのような証拠を与えればよいかは、しばらくの間、自明ではなかった。補問題を区別することは、後述する複雑性クラス
NPと
co-NPなどで重要となる。
計算複雑性理論の重要な成果の1つとして、ある難しい問題があったとき(それがいかに大量の時間資源や空間資源を要したとしても)、それよりさらに難しい問題が必ず存在するという事実がある。時間計算量については
時間階層定理によってこれが証明されている。同様に
領域階層定理も導かれる。
計算資源 [編集]
計算複雑性理論は計算問題の難しさを様々な
計算資源の観点で分析する。時間、空間、無作為性、反復性、その他のより直観的でない尺度などで必要とする計算資源量によって、同じ問題を説明する。
複雑性クラスはある特定の計算資源をある特定の量つかって解くことができる全計算問題の集合である。
最も研究が進んでいる計算資源は
決定性時間(DTIME) と
決定性空間(DSPACE) である。これらの資源はそれぞれ、決定性のある計算機(例えば実在する普通の計算機)で問題を解くのに必要な「計算時間(演算回数)」と「記憶装置」の量に対応している。これらの資源の使用量を求めることは実用的な意味もあり、研究が進んでいるのである。
いくつかの計算問題は非現実的な量の資源を想定すれば、より容易に解析可能である。例えば、
非決定性チューリング機械は、分岐して様々な可能性を同時にチェックできるという計算モデルである。したがって、非決定性チューリング機械はアルゴリズムを使って具体的に計算する作業とは全く関係ないが、その分岐によって分析したい計算モデルの大部分を捉える。このため
非決定性時間は計算問題を分析するにあたって非常に重要な資源である。
計算複雑性理論では他にもいろいろな計算資源を考慮する。技術的には、
複雑性尺度として計算資源量が扱われ、これに関しては
ブラムの公理で非常に一般的な定義が与えられている。
複雑性クラス [編集]
ある量の計算資源を使って解くことができるすべての計算問題の集合を
複雑性クラスという。
多くの複雑性クラスは、それを表現するのに必要となる
数理論理学によって特徴付けられる。これは、
記述計算量の概念と関係がある。
各クラスに対し、そのクラスの完全問題を考えることがある。 クラスCの完全問題とはCに属する問題のうちで最も計算するのが難しい問題のことである。 具体的な定義は以下のようになる。
- —困難 (—hard)
- クラスCに対して、問題PがC困難であるとは、Cに属する任意の問題をPに帰着(多くの場合多項式時間帰着を考えるが、そうでない場合もある)できるということである。すなわちPはCに属するいかなる問題よりも、同等かそれ以上に難しいということである。ただし、C完全と異なり、P自身はCに属するとは限らない。
- —完全 (—complete)
- クラスCに対して、問題PがC完全であるとは、PがCに属しかつC困難ということである。すなわちPはCに属する問題の中で、本質的に最も難しい問題であるということである。
主な複雑性クラス [編集]
未解決の問題 [編集]
P = NP 問題 [編集]
NPが
Pと同じかどうかという疑問(換言すれば、非決定的な多項式時間で解くことのできる問題は決定的な多項式時間でも解くことができるか)は、理論計算機科学における最重要問題の1つであり、その解決が様々な意味を持っている
[2]。同じであった場合に都合が悪い影響として、
暗号理論の多くが
NPの困難さに依存しているため、
Pと同じであることが判明すると使い物にならなくなるのである。しかし、よい影響も多々あり、様々な重要な問題に効率的な解法があることが明らかとなることが重要である。例えば、
オペレーションズリサーチにおける
整数計画問題、物流合理化、
生物学における
タンパク質構造予測、
純粋数学の定理を
計算機で効率的に形式的に証明する可能性などがある
[3][4]。
クレイ数学研究所は
2000年に、この問題を最初に解いた人に100万ドルを支払うと発表した
[5]。
この問題を考えるにあたって重要となるのは、
NP完全の概念である。
NP完全な問題は
NPの中では最も
Pから遠い問題ということになる。
P =
NPが証明されていないため、ある問題を
NP完全と判明している問題に
還元できるということは、その問題の多項式時間の解法が未知であることを示している。逆に、すべての
NP問題は
NP完全問題に還元できるため、
NP完全問題の多項式時間の解法を発見すれば、
P =
NPが証明される
[2]。(一方、例え
P =
NPが成立しても、
NP困難な問題は多項式時間で解けるとは限らない。理由はNP困難のページを参照のこと)
NPにおける不完全問題 [編集]
上の問題に関連して、
NPクラスに属する問題で
Pクラスには属しないが
NP完全でもない問題は存在するか、という問題もある。つまり、非決定的な多項式時間の解法はあるが、多項式時間に還元できない問題ということである。そのような問題で
NP完全かどうかが不明な問題として、
グラフ同型問題がある。
P ≠
NPであることが示されれば、そのような問題が存在することが確定する
[6]。
NP = co-NP [編集]
co-NPクラスは
NP問題の
補問題の集合である(すなわち、「はい」と「いいえ」が逆転している問題)。両者は等しくないと考えられているが証明されていない。2つの複雑性クラスが等しくないことが判明すると、
NP完全問題は co-
NP には含まれず、co-
NP完全問題は
NP には含まれないことが明らかになる
[6]。
Intractability [編集]
理論上計算可能な問題であっても、実際に解くことができない問題を
intractable(手に負えない、処理しにくい) であるという。「実際に」解けるとはどういうことかという問題もあるが、多項式時間の解法がある問題が一般に(小さな入力だけでなく)解けるとされている。intractable な問題として知られているものとしては、
EXPTIME完全な問題がある。
NP が
P と同じでなかった場合、
NP完全な問題も intractable だということになる。
指数関数時間の解法がなぜ実際には使えないかを考えるため、2
n 回の操作を必要とする問題を考える(n は入力のサイズである)。比較的小さな入力数 n = 100 のときについて、1秒間に 10
10 (10
ギガ)回命令を実行できる計算機を想定すると、その問題を解くには約 4*10
12 年かかる。これは現在の
宇宙の年齢よりも長い。
主な研究者 [編集]
--
Aoyagi YoSuKe - Art Harbour
Partnership: Google, Inc. AdSense program /
Amazon.co.jp Associate program
http://artharbour-gaia.blogspot.com
(The Gaia Art Harbour)
Mizuho Bank/Credit Master
0 件のコメント:
コメントを投稿