講義日程-2007年度冬学期
計算量理論(Computational Complexity) †
- 担当:今井 浩 教授
- 1.5単位
- 10:15~11:45 理学部7号館(化学教育東館)236号室
- 参考書
- Michael R. Garey and David S. Johnson
Computers and Intractability
A Guide to the Theory of NP-Completeness
W.H.Freeman and Co. NY. 1979
内容 †
- 計算量理論とは、計算の難しさの学問。
- 例)n都市TSP
n頂点の重み付き単純グラフ上の閉路で、各頂点をちょうど一度ずつ訪れる。
辺の重みの和を最小にする閉路を求める問題。
有限・離散なので解は有限時間内に計算可能。
しかしそのために必要な計算量は指数オーダー。
nが大きくなると実用時間内では実行不可能。
- 素朴な解法
(n-1)!通りの巡り方での距離を全て計算・比較。
路一つあたりの計算量が10^(-6)sでも、n=50くらいで計算量は10^50年。
- cf)ある頂点から他の全ての頂点への最短路を求める問題はO(|V|^2+|E|) Dijkstra's Algorithm
- TSPはどんなアルゴリズムでも、(最悪の場合)O(n^c)で解くことはできなさそう。NP問題
ミレニアム懸賞問題,P≠NP問題
- NP完全性の理論
- NP:Nondeterministic Polynomial,非決定性多項式時間
- n要素全順序集合のソーティング
- Insert Sort O(n^2)
- n個の整列されたリストにn+1個目の要素を適切な場所に挿入する。
- Bubble Sort O(n^2)
- Heap Sort O(n log n)
- Quick Sort 平均的にはO(n log n)、最悪ではO(n^2)
- 中間要素を選び、それより大きい部分リストと小さい部分リストを選び出し、連結する。
- Merge Sort O(n log n)
- 分割統治。リストを二つに分け、それぞれをソートし、順序の整合が取れるようにマージ。
- どんなアルゴリズムでもΩ(n log n)の時間がかかる。
(memo:データに制約をつければO(n)にもなりうる。Radix Sort)
- Linear Decision Tree
- プログラムの実行パスをツリーの形で全て書き表したもの。
葉の部分に実行結果が現れる。
Insent SortのLinear Decision Treeの高さは有限。
各比較について分岐が一つできる。
最も木の高さが高くなる最悪のパスでは、O(n^2)になる。
- 正しいソーティングアルゴリズムでは、出力になり得る組み合わせはn!通り。
木の高さをできるだけ低くして葉の数を増やすことを考えると、
(深さ)≧ceil(log[2](n!))=O(n log n)
二要素の比較だけを使ってソートするときの計算量の下限はO(n log s)
Linear Decision Treeで表したときにバランスの取れた二分木になるようなアルゴリズムが最良のソーティングアルゴリズム。
- 行列積
- A,B ∈ R^(n×n)
C = AB
c[i][j] = Σ[k=1,n]a[i][k]b[k][j]
式をそのまま計算すると、O(n^3)
これより計算量の少ない計算方法は存在するだろうか?
- 行列をうまく分割して計算するとO(n^log[2]7)≒O(n^2.807)で計算できる。Strassenのアルゴリズム
- 現在ではO(n^2.386)まで下げられている。下限はΩ(n^2)以上だとしかわかっていない。
- 漸近的性質
関数f,g:N⇒Nについて
- O
f(n) = O(g(n))⇔∃n,∃c,∀m≧n. f(m)≦c*g(m)
- Ω
f(n) = Ω(g(n))⇔∃n,∃c,∀m≧n. f(m)≧c*g(m)
- Θ
f(n) = Θ(g(n))⇔f(n)=O(g(n))∧f(n)=Ω(g(n))
- o
f(n)=o(g(n))⇔lim[n→∞]f(n)/g(n)=0
- 入力サイズnについて、アルゴリズムAの計算時間t(n)がどう増えてゆくか。
- P: t(n)がnの多項式のオーダーとなるアルゴリズムが存在する問題族
多項式オーダー:O(n^c),
n,n log(n),n^2,√n,…
- EXP:t(n)がnの指数関数のオーダーとなるアルゴリズムが存在する問題族
指数関数オーダー(singly exponential):O(2^p(n)),p(n)=O(n^c)
2^n,n!,n^n=2^(n log(n)),3^(n^2)
- P⊂EXP, nを十分に大きくすると常にEXPの問題の方が大きくなる。
EXPに属する問題は手におえないくらい計算時間が長くなる。
P:tractable 手に終える
Pより上:intractable 手に負えない
ではEXPとPの境界はどこにあるか。
それより難しい問題はどう解くか。
- 計算の難しさ。(上に行くほど難しい。)
- undecidable:計算不能、アルゴリズムが存在しない。
Turing Machineの停止問題
- decidable:計算可能、アルゴリズムが存在する。
- 多重指数オーダーで解ける。 Presburger Arithmetic
- intractable:実行不可能、多項式オーダーでは解けない。
- NP完全問題。非決定性チューリングマシンで多項式オーダーで計算できる。
境界はまだ曖昧。
TSP,SAT,coloring
- tractable:実行可能、多項式オーダーで解ける。
- アルゴリズムとは何か
- 計算とは、状態遷移だ。
- Turing Machine
有限長のプログラム(内部状態)と無限の長さの一次元記憶媒体(テープ)を持った仮想的な機械。
- TM=(Γ,Σ,Q,δ)
Γ=Σ∪{b} テープのセルに書く記号の集合。
- Σ 問題を記述する記号の集合。alphabet
- Q 機械の内部状態の集合。有限。
q[0]:初期状態
q[y]:停止状態、受理
q[n]:停止状態、非受理
- δ:Q×Γ→Q×Γ×{+1,-1} 遷移関数。現在の状態と現在地のテープの記号から、
次の時刻の状態とテープに上書きする値、テープ上の位置の変化を出す関数。
- 初期状態から、遷移関数に従ってテープ上に記録されたデータを書き換えながら
内部状態とテープ上の位置を変化させ、停止状態になるまで動き続ける。
停止状態になったらyes,noのいずれかを返す。
停止しないこともありうる。
テープ上に入力を与え、出力としてyes,noを返す計算のモデル。
- 現在のコンピュータで多項式時間で解ける問題はチューリングマシンでも多項式時間で解ける。逆も成立。
- δが一価の関数→決定性チューリングマシン
δが多価関数→非決定性チューリングマシン
- 決定性チューリングマシン(DTM,Deterministic Turing Machine)
- 通常のチューリングマシン。同じ入力に対して同じ出力を返す。遷移関数が一価関数。
- 計算資源、サイズnの入力に対して最悪の場合の量を指す。
time complexity:遷移関数を適用する回数。
space complexity:headが少なくとも一度見たセルの数。
- P:チューリングマシンでの時間計算量が、入力のサイズの多項式で押えられるアルゴリズムが存在する問題。
PSpace:空間計算量が、入力のサイズの多項式で押えられるアルゴリズムが存在する問題。
- PTime ⊂ PSpace ⊂ ExpTime
- 空間計算量がnの多項式で押えられる問題は、時間計算量はexp以下になる。
- 無限ループに陥らないアルゴリズムの実行中には、状態遷移の過程で、同じ状態になることはできない。
空間計算量が多項式で押えられると、状態遷移で通過できる状態数は指数オーダーで押えられる。
- 非決定性チューリングマシン(NTM,Nondeterministic Turing Machine)
- 同時に複数の状態をとりうる、遷移関数が多価関数になりうる拡張されたチューリングマシン。並列計算のモデル化?
- 計算資源
time complexity:NTMを次々に分岐させながらステップを進めて行き、最も早くyesを返して停止した分岐までのステップ数。
space complexity:最も早くyesを返して停止した分岐での、少なくとも一度見たセルの数。
- NP:非決定性チューリングマシンでの時間計算量が、入力サイズの多項式で押えられるアルゴリズムが存在する問題。
- PTime ⊂ NP ⊂ PSpace
- NTMをDTMでシミュレート。各ステップを幅優先探索。
バックトラックの状態復元に使うメモリは、深さが多項式オーダーなら、多項式オーダー。
- 並列計算をしたときや、計算機が速くなったときの、同一時間で解ける問題のサイズ。
- プロセッサ数がp倍になったときに、
O(n) p倍
O(n^2) √p倍
O(2^n) log p倍。
- 多項式時間変換(Polynomial-time Reducibility)
- ハミルトン閉路(HC,Hamilton Circuit)問題
入力:グラフ
出力:入力グラフがHCを持つか否か。
- 巡回セールスマン問題の判定
完全グラフ。距離関数。パラメタ一つ。
総長がパラメタの値以下のHCが存在するかどうか。
- ある問題クラスΠの、任意のインスタンスが、別のあるクラスΠ'のインスタンスに多項式時間で帰着できるなら、
ΠはΠ`に多項式時間変換可能だという。
f:Π→Π'. π:yes⇔f(π):yes
- ハミルトン閉路問題は、多項式時間で巡回セールスマン問題に多項式時間で変換可能。
完全グラフ化して、追加したグラフの重みを大きくしておく。
- NTM(Oracle版)
- Guessing Module付きのDTM
- 入力xがセル1からセル|x|まで与えられている。
「Advice」をGuessing Moduleがセル(-1)から左に書く。
Guessing Moduleを停止してDTMとして起動。処理。停止。
- NTMでどの分岐をすべきかをあらかじめ外部から与えたもの。
- NTMを使うと多項式時間で解ける問題は、DTMで多項式時間で正解を検証できる問題。
- 命題論理の充足可能性判定問題(SAT,Satisfiability)
- 入力:CNF命題論理式(CNF,Conjunctive Normal Form,∧標準形)
- 出力:入力の論理式を満たす真偽値の組み合わせがあればTrue,なければFalse
- 入力は論理変数をn個持った論理式で、論理変数と¬と∨からなる節(Clause)を∧で連ねた形に標準化されたもの。
うまく論理変数の値を選んだとき、論理式全体を真にできるとき、その論理式は充足可能。
どの組み合わせを選んでも真にできないとき、恒偽、充足不可能と呼ぶ。
- この充足可能性問題は
ここLostかも。後で補完。
- NPの中で多項式時間還元を考えることでNPを分類する。
多項式時間還元で擬順序を導き、擬順序から導かれる同値関係でNPを分割。
分割された塊の間には、多項式時間還元によって半順序が入っている。
この半順序には最小元と最大元が存在する。最小限はP、最大限はNP完全問題。
- NP完全
NP問題クラスのうちで、任意のNP問題クラスの問題を
多項式時間でに帰着できるなら、
はNP完全という。
NP完全な問題のどれか一つに多項式時間アルゴリズムが存在すれば、
任意のNP問題が多項式時間で解ける。
NP完全な問題には多項式時間アルゴリズムは存在せず、
だろうという考えが大勢になっている。
SAT,TSPなど、多くの問題がNP完全であることがわかっている。
- Karpのreduction
- 問題クラス&mimetx(\Pi);がNP完全であることを示したいときには、
がNP問題であることと、適当なNP完全問題を
に多項式時間還元ができることを示せばいい。
ではどのNP完全問題に帰着できることを示すのがよいか。
- SATはNP完全。SATを他の問題に連鎖的に帰着させてNP完全性を示す。
- 3SAT
入力:3-CNF論理式(各節が3つの命題からなる和積標準形の論理式)
和積標準形論理式の節は、論理積で連なっている論理和からなる塊。
出力:論理式を真にする命題の組み合わせが存在するか。
- 3SATはNP問題。SATはNP問題。3SATはSANの部分クラス。
- 任意のSATの問題を3SATに多項式時間還元できることを示せば、3SATがNP完全であることを証明できる。
任意のSATの問題の各節について、
節に含まれる論理変数の数が1,2,3のときには、新たに論理変数を追加して水増し。3変数にする。
論理変数の数が4以上。例えば5のときには、
と変形すれば3変数にできる。
ゆえに任意のSATの問題は多項式時間で3SAT問題に帰着可能。
- cf)2SAT
入力を2-CNF論理式に限った2SATは、P問題。
- VC(Vertex Cover)。無向グラフの被覆問題。
入力:無向グラフとパラメタK。
出力:サイズK以下のVertex Coverが存在するか否か。
- 3SAT問題をVCに帰着すれば、VCがNP完全であることを示せる。
VCはNP問題。解が与えられればそれがサイズK以下の被覆になっていることは
多項式時間で確かめられる。
3SATの論理式をグラフに変換し、充足可能性とVCの存在が同値になるようにKを選ぶ。
各論理変数とその否定を頂点とし、肯定形と否定形を頂点でつないで2点からなるグラフを作り、
各節に対応して、その論理変数に応じた三角形のグラフを作り、
節に対応するグラフの頂点と、それに対応する論理変数を繋ぐ。
Kとして、(論理変数の数)+2*(節の数)をとってVC問題とすると、
3SATをVCに帰着できる。
- Vertex Cover
任意の辺の少なくとも一方が含まれるように、グラフの頂点からいくつかを選び出す。
- cf)2部グラフについては、最小VC探索はP問題。最小VCは最大マッチングを与える。
- 先生会議中。代理の人が講義。
- PSPACE = NPSPACE
- PSPACE
決定性チューリングマシンで、入力サイズに対して領域計算量が多項式オーダーで計算可能。
- NPSPACE
非決定性チューリングマシンで、入力サイズに対して領域計算量が多項式オーダーで計算可能。
- 有向グラフの連結性判定
入力:有向グラフ。
出力:頂点s,tを結ぶ長さが以下の路があるか否か。
- STCONのアルゴリズム
長さが以下の有向路があるか否かを返す関数reachを使って、
を実行すればよい。
- 一回の再帰にはの計算領域、再帰の深さはなので、
計算領域はだけ必要、PSPACE。
- PSPACE = NPSPACEの証明
PSPACE NPSPACE は定義から自明。
NPSPACE PSPACE を証明するために、
チューリングマシンのスナップショットからなるグラフを考える、
各スナップショットをノードにし、遷移規則から枝を定める。
計算領域がNTMでであるとすると、
頂点数は、(状態数)*(使う領域幅)*(テープの内容)^(使う領域幅)で、
このグラフに対してTMでSTCONのアルゴリズムを走らせると、
領域計算量はなので、TMで多項式空間計算量でシミュレート可能。
- STCONはNLOG完全。NTMでO(log(n))で計算可能。
- LOGNLOG(LOG)^2
- STCONがSPACEで計算可能かどうかは未解決。
- Randomized AlgorithmならSPACEで計算可能。
- 無向グラフならSPACEで計算可能。
- NP-Completeの意義
- PNPPSPACE=NPSPACEEXPTIMENEXPTIME
- NP完全問題が一つでもPであることがわかれば、P=NP。
任意のNP問題がPであることがわかる。
- P問題はTractable、それ以外はIntractableだと考え。
P=NPではないことを想定して、NP完全であることを示すことで、問題がIntractableであることを示す。
NP完全であることを示すことがパラダイムになっている。
- Ristriction
- NP完全な部分問題を含むNP問題は、NP完全問題。
問題を限定した上でNP完全性を示し、全体の問題クラスもNP完全であることを得る。
- 部分グラフ同型判定問題
入力:無向グラフ2つ。
出力:がと同型な部分グラフを持つか否か。
- CLIQUE
入力:無向グラフ。
出力:がサイズk以上の完全グラフを部分グラフを持つか。
- 同型になる部分グラフと同型写像が与えられれば、確かめることは多項式時間で可能。NP問題。
- CLIQUEは部分グラフ同型判定問題の部分問題。
CLIQUEがNP完全ならば部分グラフ同型判定問題はNP完全。
- Local Transformation
- Component Design
- NP完全性を示す事で、問題が難しいことを示す。
問題の簡単さを示すには、多項式時間で解けるアルゴリズムを見つければよい。
- SATはNP完全問題。
3-SATもNP完全問題。
2-SATはP問題で、O(n)で解ける。
SATは節の中の論理変数の数で階層化できる。
k-SATは、k=2ではP問題。k≧3ではNP完全問題。
同様な階層化はk部グラフのマッチング問題でもできる。
- HORN
SATの部分問題。各節に正リテラルが高々1つ。P問題。O(n)で解ける。
- 難しさの異なる似た問題をNP完全か、Pかで類別する。
- 枝長非負なグラフの最短路問題はP問題。(Dijkstra法)
- 最長単純路問題はNP問題。
単純路:同じ頂点を2度は通らない路。
- 有向閉路のないグラフでの最長路問題はP問題。(DFS,topological sort)
- グラフの最小点被覆
点による枝の被覆。NP完全問題。
グラフからいくつか点を選び出し、各枝について
その枝の端点のどちらかは選ばれるようにする。
選ばれる点数はできるだけ少なくする。
2部グラフの点被覆を求めるのはP問題。
- グラフの最小枝被覆
枝による点の被覆。P問題。
グラフから枝をいくつか選び出し、全ての点について
その点につながる枝のどれかは選ばれているようにする。
選ばれる枝数はできるだけ少なくする。
- 最小切断
点集合を2つに分け、その間をまたぐ枝数をできるだけ少なくする。
P問題。
- 最大切断
点集合を2つに分け、その間をまたぐ枝数をできるだけ多くする。
NP完全問題。
平面グラフの限定すればP問題。
- グラフの次数に着目。
点について、は、に接続する枝の数。
グラフの次数は、各点の次数の最大値。
Vertex Cover、Hamilton circuitなどは、次数2以下のグラフについてはP問題。それを超えるとNP完全。
- 数系のNP完全問題
- PARTITION
入力:n個の整数。
出力:入力を2分割して、それぞれの和を等しくできるか否か。
- 困難さ
分割の仕方は。
整数の大きさに制限がない。
- 動的計画法(DP,Dynamic Programming)
- 全体での最適な構造が、部分的にも最適な構造になっている。
- Shortest Path
階層化された有向グラフ上での最短経路を求める。
を始点からへの最短路長とすると、
始点からある層の各点への最短路の値から、次の層の各点への始点からの最短路を求められる。
- PARTITION
入力:n個の正整数
出力:その和が等しくなるように入力された整数を
二つのグループに分割することができるか否か。
- DPで解く
を、の部分集合で、
和がのものが存在すればTrue,存在しなければFalse。と定義すれば、
が解。
はを満たすので
について次々に計算できる。
時間計算量はのテーブルの大きさ分、で解ける。
の大きさがnの多項式で押さえられるならば、多項式時間で解ける。
入力長はほど、
は入力長に対して指数オーダー。
- Number Problem
数がからむ問題では、入力長に対し、数がとても大きくなりうることが難しさのポイント。
問題の構成要素の個数と独立な値になっている。
問題のインスタンスの入力長を
現れる数の最大値をとすると、
PARTITIONはに対して多項式時間。
これを擬多項式時間アルゴリズム(pseudo-polynomial)と呼ぶ。
P問題はについて多項式時間でなければならない。
PARTITIONは擬多項式時間アルゴリズムは存在するが、NP完全なので
真の多項式時間アルゴリズムはおそらく存在しない。
- 任意のNP完全な問題に擬多項式時間アルゴリズムは存在するか?
NP完全問題をさらに分割できる。
- Strong NP-Complete
NP完全問題で、の場合でもNP完全のとき、
その問題は強NP完全問題と呼ぶ。
(P≠NPの仮定のもと、)強NP完全は擬多項式時間アルゴリズムを持たない。
- 計算問題
ここまで扱ってきたのは受理問題。戻り値はyes,no。
計算問題や探索問題について難しさの尺度を与えられないか。
Turing還元のもとで問題クラスを分類する。//と、NP困難(NP-hard)が現れる。
- Search Problem
探索問題とは、
インスタンスの集合で、
各インスタンスに対して
解が存在。
を解くアルゴリズムとは、
のとき、"no"と答え、
そうでないとき、の要素を1つ出力するアルゴリズム。
- Poly-time Turing Reduction
を単位時間で解くサブルーチンを使っていいときに、
を多項式時間で解くアルゴリズムが存在すること。
が多項式時間で解けるならば、も多項式時間で解ける。
- NP困難(NP-hard)
NP完全な問題にTuring Reductionできる問題クラスをNP困難な問題と呼ぶ。
NPなNP困難問題はNP完全問題。
TSP判定版はNP完全。TSP探索版はNP困難。
- Coping with NP-Complete Problems
NP完全問題は難しい近似的に解く。
Poly-timeでできるだけいい近似解を探す。
Poly-timeで高い確率で厳密解を探す。
- bin-packing
一次元の引越しトラック最小化問題、NP困難。
n個の品物
品物のサイズ、
容量1のビンいくつかに品物を詰めて行き、ビンの数を最小化する。
を最適解
をアルゴリズムによる解。
となるアルゴリズムを
この問題の近似アルゴリズムと呼ぶ。は近似値比と呼ぶ。
- 単純な方法
FF(First Fit)
ビンを十分多く準備しておき、各品物について
ビンを左から見ていき、最初に詰められるビンに詰めて行く。
の近似アルゴリズム
- この証明のためには、の値を何らかの形で評価する必要がある。
「液体版」bin-packingの解で下から抑えられる。
オレンジジュースとコーヒーと味噌汁とコーンポタージュを
FFでは半分以下しか入っていないビンは高々1つ。
- 実際は、
が成立。
近似値比は
- FFD(First Fit Decreasing)
まず品物を降順にソートしてからFFで詰める。
FFDだと、
が成立。
近似値比は
worst-caseでFFよりもFFDの方が優れていると、定量的に言えた。
- 任意の正数について、近似値比が達成できる場合と、
の仮定のもと、、近似値比となる場合がある。
bin-packingは前者。TSPは後者。
- 近似アルゴリズム
- Metric TSP
完全グラフと距離関数の形で問題が与えられたTSP。
距離関数は三角不等式を満たす。2点間の最短距離は直に2点をつないだもの。
NP困難。近似値比2の近似アルゴリズムが存在する。
- Euclidean TSP
2次元平面上にn点が与えられ、距離がユークリッド距離のMetric TSP。
まだNP困難。
- MST(Minimum Spanning Tree)近似
- グラフの最小木を求め、その各枝を2重化したものをとする。
のEuler閉路を求め、閉路を順に巡る。2回目以降では点をスキップ。
Metric TSPの最適解はハミルトン閉路、枝を一つ除けば木になっている。
最小木は部分木の中でもっとも短いものなので、(の長さ)
枝を2重化すると、(の長さ)(\mimetex(T);の長さ)
MST近似ではいくつか点をスキップし、Metric TSPでは点をスキップすると全長は短くなるので、
(の長さ)
、近似値比2のアルゴリズム。
- Euler閉路:各枝を一度ずつ通る閉路。各頂点の次数が偶数なら存在する。
- MM(Min-weight Matching)近似
- グラフの最小木を求め、奇数次数点間の最小重み完全マッチングを求める。
のEuler閉路を求める。後はMSTと同じ。
(の長さ)
(の長さ)
- 最小重み完全マッチング
辺の集合から、すべての点を覆うようにいくつかを選び、
枝の重みの和を最小化する。
- NN(Nearest Neighbor)
未到達の点の中で、最も近い点を訪問する。
全点に到達していたら、始点に戻って終了。
Metric TSPでは、
- plannar Euclidean TSP
PTASが存在する。
- PTAS
に対して、
近似値比の多項式時間近似アルゴリズム。
- Metric TSP
近似値比1.5の多項式時間近似アルゴリズムが存在する。
の仮定のもと、PTASは存在しない。
- 一般のTSP
の仮定のもと、
定数近似値比の多項式時間近似アルゴリズムは存在しない。