52
ココココココココココココ 2 11. ココココココ NP ココココ ココココココ 田田 w.logos.ic.i.u-tokyo.ac.jp/~tau/lecture/software/

コンピュータアルゴリズム 2 11. 計算困難問題 ・ NP 完全問題 ・決定不能問題

Embed Size (px)

DESCRIPTION

コンピュータアルゴリズム 2 11. 計算困難問題 ・ NP 完全問題 ・決定不能問題. 田浦. http://www.logos.ic.i.u-tokyo.ac.jp /~tau/lecture/software/. Roadmap. 易しい問題 難しい ( 困難な ) 問題 NP 完全問題 NP, NP 困難 , NP 完全 NP 完全であることが意味すること 有名な NP 完全問題 NP 完全性の証明 決定不能問題. 易しい問題. - PowerPoint PPT Presentation

Citation preview

Page 1: コンピュータアルゴリズム 2 11.  計算困難問題 ・ NP 完全問題 ・決定不能問題

コンピュータアルゴリズム 2

11. 計算困難問題・ NP 完全問題・決定不能問題

田浦

http://www.logos.ic.i.u-tokyo.ac.jp/~tau/lecture/software/

Page 2: コンピュータアルゴリズム 2 11.  計算困難問題 ・ NP 完全問題 ・決定不能問題

Roadmap

易しい問題 難しい ( 困難な ) 問題 NP 完全問題

NP, NP 困難 , NP 完全 NP 完全であることが意味すること 有名な NP 完全問題 NP 完全性の証明

決定不能問題

Page 3: コンピュータアルゴリズム 2 11.  計算困難問題 ・ NP 完全問題 ・決定不能問題

易しい問題 定義 : 入力のサイズ n に対して, n のある多項式で抑え

られる ( nk) 時間で終了するアルゴリズムが存在する問題 n : 入力の大きさ, k : n に無関係な定数

クラス P に属する問題とも言う P : Polynomial time

これまで述べてきた数々の問題 ( 整列,探索,グラフの最短距離, etc.) はすべてクラス P に属する問題

Page 4: コンピュータアルゴリズム 2 11.  計算困難問題 ・ NP 完全問題 ・決定不能問題

言葉の慣習 多項式時間

n のある多項式で抑えられる時間 注 : この定義によれば n log n 時間なども多項式

多項式時間アルゴリズム 多項式時間で終了するアルゴリズム バブルソート,クイックソート,マージソート,コ

ンテナへの挿入,優先度キューへの挿入, Dijkstra, ... はみな多項式時間アルゴリズム

( ある問題が ) 多項式時間で解ける それを解く多項式時間アルゴリズムが存在すること

つまり,クラス P = 多項式時間で解ける問題

Page 5: コンピュータアルゴリズム 2 11.  計算困難問題 ・ NP 完全問題 ・決定不能問題

計算困難な問題 定義 : 易しくない問題

つまり多項式時間アルゴリズムが存在しない問題 実践的意味 :

入力のサイズが少し大きくなると計算時間がかかりすぎて事実上解けない問題

注 : 解法を思いつくことの難しさ ( いわゆる人間にとっての問題の難しさ ) とは別の概念

Page 6: コンピュータアルゴリズム 2 11.  計算困難問題 ・ NP 完全問題 ・決定不能問題

多項式でない計算時間の例 指数関数時間

2n, 1.3n, ... 階乗

n! これらの計算時間は,しばしば,多くの可能性を「し

らみつぶしにあたる」時に現れる

Page 7: コンピュータアルゴリズム 2 11.  計算困難問題 ・ NP 完全問題 ・決定不能問題

多項式でない計算時間を持つアルゴリズムの例 問題 : 充足可能性 (SAT): ある命題論理式の解 ( 式の値が真

となる,変数への真偽値の割り当て ) があるかどうか ? アルゴリズム : 0/1 のすべての組み合わせ (2n 通り. n :

未知数の数 ) を試す 問題 : k 彩色 (k-COLOR): グラフの頂点に,隣接 ( 辺で結ば

れた ) 頂点が同じ色にならないよう色を塗る. k 色で塗れるか ? アルゴリズム : すべての色の塗り方 (kn 通り. n : 頂点の

数 ) を試す 問題 : ナップサック (KNAPSACK): n 個の整数と目標値 b に

対し , n 個の中からいくつかを選んでその和 =b とできるか ? アルゴリズム : 各整数を含めるか否かをすべて (2n 通り )

試す

Page 8: コンピュータアルゴリズム 2 11.  計算困難問題 ・ NP 完全問題 ・決定不能問題

注 以上の議論は「多項式時間でないアルゴリズム」の例

を示したもの 以上でこれらの問題に「多項式時間アルゴリズムは存

在しない ( これらの問題は難しい ) 」と結論できるわけではない

仮になかったとしても,上記よりよいアルゴリズムがない,と言っているのでもない (2n よりは 1.84n の方がマシ )

Page 9: コンピュータアルゴリズム 2 11.  計算困難問題 ・ NP 完全問題 ・決定不能問題

難しいことが証明されている問題の例 ネズミとネコのゲーム [ 岩田 NP 完全問題入門 ]

有向グラフの頂点上にチーズ一個,ネコ一匹,ネズミが多数いる

交互にネコとネズミ ( 一匹 ) を隣の頂点に移動 一匹のネズミがチーズにたどり着けばネズミの勝ち

Page 10: コンピュータアルゴリズム 2 11.  計算困難問題 ・ NP 完全問題 ・決定不能問題

NP 完全問題 序論 しかし,実用上現れる多くの問題は,易しいことも難

しいことも証明されていない 多項式時間アルゴリズムは見つかっていない それが存在しないことも証明されていない

おそらく存在しないと信じられている しかもそのような問題の多くがこれから述べる「 NP 完

全問題」と呼ばれる問題であり,ある意味でどれも同程度に難しいことがわかっている NP 完全問題のどれか一つが易しいとわかればすべて

の NP 完全問題は易しく,その逆も然り

Page 11: コンピュータアルゴリズム 2 11.  計算困難問題 ・ NP 完全問題 ・決定不能問題

NP 完全問題の定義を理解し,ある問題が NP 完全問題であることを証明する基本手法を身につけることは重要

理由 実際にそのような問題がしばしば現れるから 多数の NP 完全問題が知られているため,ある問題が

NP 完全であることは容易にわかることが多いから ある問題が NP 完全とわかれば,その問題はたぶん,

計算困難であることが示唆されるから 近似解で我慢する よくある入力に絞って経験則を用いる

Page 12: コンピュータアルゴリズム 2 11.  計算困難問題 ・ NP 完全問題 ・決定不能問題

クラス NP (1)

NP : Non-deterministic Polynomial time ( 非決定的多項式時間 ) 問題としては出力が 1 または 0 の 2 通りのもの ( 決定問題 ;

decision problem) を考える 「非決定的選択実行文」 ( 複数の文から一つを実行する文 ) を持つ

プログラミング言語を考える either S1 or S2 : S1 または S2 のどちらかを実行

NP の直感的説明 この言語を使って多項式時間で終了するアルゴリズムが存在し, 正解が 1 であるような入力に対しては「運がよければ」 1 を出力

する 「運がよければ」 = either S1 or S2 で常に「よい」選択をすれば

正解が 0 であるような入力に対しては「常に」 0 を出力する

Page 13: コンピュータアルゴリズム 2 11.  計算困難問題 ・ NP 完全問題 ・決定不能問題

クラス NP (2)

非決定的選択実行文を持つ言語で書かれたプログラムの 出力は,すべての選択の中で 1 を返すものが

一つでもあれば 1, そうでなければ 0, とする 実行時間は,すべての選択の中で最大のもの,

とする ある問題が NP に属するとは,

その問題を解く,非決定的選択実行文を持つ言語で書かれたアルゴリズムが存在し,

実行時間は入力の大きさ n の多項式時間こと

...

S1 S2

S1 S2

多項式

1 0 0 0 0 1 0 1

Page 14: コンピュータアルゴリズム 2 11.  計算困難問題 ・ NP 完全問題 ・決定不能問題

言葉の慣習 非決定的アルゴリズム

非決定的選択実行文を持つ言語で書かれたアルゴリズム

非決定的多項式時間アルゴリズム 実行時間が入力の大きさ n の多項式時間である非決定

的アルゴリズム 非決定的に多項式時間で解ける

ある問題を解く,非決定的多項式時間アルゴリズムが存在すること

つまりあらためて整理すると クラス NP = 非決定的に多項式時間で解ける問題 クラス P = 多項式時間で解ける問題

Page 15: コンピュータアルゴリズム 2 11.  計算困難問題 ・ NP 完全問題 ・決定不能問題

注 多くの教科書・本では,

( プログラミング言語の代わりに ) チューリングマシン,

(either S1 or S2 という構文を持つプログラミング言語の変わりに ) 非決定的チューリングマシン

というマシンを用いて P, NP の定式化をする ( 本質的には同じこと )

Page 16: コンピュータアルゴリズム 2 11.  計算困難問題 ・ NP 完全問題 ・決定不能問題

NP に属する問題の例 先にあげた SAT, k-COLOR, KNAPSACK などがすべて NP に属す

ることは容易にわかる すべての組み合わせを試すかわりに「非決定的選択実行」に頼

る SAT (E) { /* E(x0, ..., xn–1) : 論理式 */

for (i = 0; i < n; i++) { either xi = 0 or xi = 1; } if (E(x0, ..., xn–1) == 1) return 1; else return 0;}

...

x0 = 0

n

x0 = 1

x1 = 0 x1 = 1

Page 17: コンピュータアルゴリズム 2 11.  計算困難問題 ・ NP 完全問題 ・決定不能問題

NP の別の直感的理解 以下を満たすような問題

「解候補」が与えられたとき,それが本当に解か (1を返すか ) どうかを多項式時間で検査できる

解候補の数が 2 多項式個程度 各々の解候補は多項式時間で生成できる

「多項式」は入力の大きさの多項式の意味

Page 18: コンピュータアルゴリズム 2 11.  計算困難問題 ・ NP 完全問題 ・決定不能問題

NP に関して容易にわかること P NP

決定的に多項式時間で解けるなら非決定的に多項式時間で解ける

NP EXPTIME EXPTIME : 2 多項式 時間で解ける問題の集合 非決定的に時間 T(n) で解けたら,すべての非決定的

選択実行 (高々 cT(n)回 ) において両方の可能性を試すことで,非決定的選択実行無しでも 2cT(n) 時間で解ける

Page 19: コンピュータアルゴリズム 2 11.  計算困難問題 ・ NP 完全問題 ・決定不能問題

NP に関してわかっていないこと P NP か , 実は ( 意外にも ) P = NP か ? (P=NP 問題 , PNP予想 )

NP EXPTIME か , 実は NP = EXPTIME か ?

Page 20: コンピュータアルゴリズム 2 11.  計算困難問題 ・ NP 完全問題 ・決定不能問題

PNP予想の可能な帰結 可能性 1: PNP が証明される

一つでよいから, NP に属する問題で「 P には属していない ( 多項式時間では解けない ) ことが証明される」ものが見つかる

可能性 2: P=NP が証明される NP に属するすべての問題が,実は P に属している

( 多項式時間で解ける ) ことが証明される 同じ事として, NP に属する問題の中で最も難しいも

のが,一つでよいから,実は P に属していることが証明される

NP 完全問題

Page 21: コンピュータアルゴリズム 2 11.  計算困難問題 ・ NP 完全問題 ・決定不能問題

NP 困難 (NP-hard) 問題,NP 完全 (NP-complete) 問題 NP 困難

直感的意味 : NP に属するどの問題よりも少なくとも同程度には難しい

NP 完全 NP 困難であって, NP に属するもの 直感的意味 : NP の中で最も難しい

Page 22: コンピュータアルゴリズム 2 11.  計算困難問題 ・ NP 完全問題 ・決定不能問題

NP 困難の定義 定義 : 問題 A が B に多項式時間で還元可能

(polynomial-time reducible) 問題 A の任意の入力 a をその大きさの多項式時間で,

問題 B への入力 b = f (a) に変換でき, 「 a に対する解 = f (a) に対する解」が成り立つ

意味「 B が解ければ A も解ける」「 B は少なくとも Aと同程度には難しい」

定義 : 問題 B が NP 困難 NP に属するどの問題も B に多項式時間で還元可能

NP B (NP-hard)

A B

Page 23: コンピュータアルゴリズム 2 11.  計算困難問題 ・ NP 完全問題 ・決定不能問題

NP 完全 NP でありかつ NP 困難である

NP の中で他のどの問題よりも少なくとも同程度に難しい

NP

B (NP-complete)

Page 24: コンピュータアルゴリズム 2 11.  計算困難問題 ・ NP 完全問題 ・決定不能問題

NP 困難性を証明する方法 (1)

一番最初に NP 困難であることを証明するのは大変 文字通り「 NP で解けるすべての問題」が,実はその

問題を解く事に帰着することの証明が必要 NP 完全であることが示された最初の問題 : SAT

Cook. The Complexity of Theorem-Proving Procedures

Page 25: コンピュータアルゴリズム 2 11.  計算困難問題 ・ NP 完全問題 ・決定不能問題

NP 困難性を証明する方法 (2)

ひとたび一つの NP 困難問題が見つかった後は ? ある一つの NP 困難問題 A が,その問題 B に帰着す

る ( 多項式時間還元可能である ) ことを示せば, B のNP 困難性が示せる つまり, B は A と少なくとも同程度に難しい

新しい問題の NP 困難性を言うのにほとんど常に用いられる論法 「例のあれ ( 例 : SAT) を解くのにこれ (新問題 ) が使

える」

SAT

MY-NEW-PROBLEM-1

MY-NEW-PROBLEM-2

Page 26: コンピュータアルゴリズム 2 11.  計算困難問題 ・ NP 完全問題 ・決定不能問題

有名な NP 完全問題 (1)

充足可能性 (SAT): 命題論理式を 1 にする変数への値(0/1) の割り当てがあるか ? 入力 : n 変数 (x1, ..., xn) 命題論理式 (0-1 変数 , , , か

らなる式 )E 出力 : E=1 に解が存在すれば 1, さもなければ 0

3-CNF の充足可能性 (3SAT): 上記で,命題論理式を各節が 3 リテラルから成る CNF (Conjunctive Normal Form) に限定したもの

例 : (x1x2x3) (x1x3x4) (x2 x3 x4) (x1x2 x4)

Page 27: コンピュータアルゴリズム 2 11.  計算困難問題 ・ NP 完全問題 ・決定不能問題

有名な NP 完全問題 (2)

ナップサック問題 (KNAPSACK): n 個の物体からいくつかを選び出して合計の重さを指定通りにできるか ? 入力 : n 個の整数 a1, ..., an と 整数 w 出力 : n 個の 0-1 変数 x1, ..., xn を未知数とし a1x1+...

+anxn= w に解があれば 1, さもなければ 0 集合打問題 (HITTING-SET): 互いに重なりのあり得る n

個の有限集合がある.一つの集合からちょうど一つの元を選び出せるか 入力 : n 個の有限集合 S1, ..., Sn 出力 : 集合 A S1 ... Sn で, | A Si |= 1 (i = 1, ...,

n) を満たすものがあれば 1, さもなければ 0

Page 28: コンピュータアルゴリズム 2 11.  計算困難問題 ・ NP 完全問題 ・決定不能問題

有名な NP 完全問題 (3)

0-1 整数計画問題 (0-1 INTEGER-PROGRAMMING): n 個の 0-1 変数に関する整数係数連立一次方程式に解があるか ? 入力 : 整数行列 C と整数ベクトル d 出力 : Cx = d となる 0-1ベクトルが存在すれば 1, さ

もなければ 0

Page 29: コンピュータアルゴリズム 2 11.  計算困難問題 ・ NP 完全問題 ・決定不能問題

有名な NP 完全問題 (4)

クリーク (CLIQUE): n 頂点のグラフに,指定された大きさのクリーク ( 完全部分グラフ ) があるか ? 入力 : グラフ G と整数 k 出力 : G が k 頂点の完全グラフを部分グラフとして含

めば 1, さもなければ 0 同型部分グラフ (SUBGRAPH): n 頂点のグラフが指定さ

れたグラフを部分グラフとして含むか ? 入力 : グラフ G と H 出力 : G が H を部分グラフとして含めば 1, さもなけ

れば 0

Page 30: コンピュータアルゴリズム 2 11.  計算困難問題 ・ NP 完全問題 ・決定不能問題

有名な NP 完全問題 (5)

ハミルトン閉路 (HAMILTON): n 頂点のグラフに全頂点を一度ずつ通る閉路があるか ? 入力 : グラフ 出力 : 全頂点を一度ずつ通る閉路があれば 1, さもな

ければ 0 巡回セールスマン (TSP): n 点間の距離が与えられ,全

点を与えられた総距離以内の閉路でつなげるか ? 入力 : n 点間の距離行列 d(i, j) (1 i n, 1 j n) と 総距離 T

出力 : d(p1, p2) + d(p2, p3) + ... + d(pn – 1, pn) + d(pn, p1) Tなる 1, 2, ..., n の順列 (p1, ..., pn) が存在すれば 1, さもなければ 0

Page 31: コンピュータアルゴリズム 2 11.  計算困難問題 ・ NP 完全問題 ・決定不能問題

有名な NP 完全問題 (6)

k- 彩色 (k-COLOR) : n 頂点のグラフの隣り合う頂点が同じ色にならないように頂点をある決まった k ( 3) 色でぬれるか 入力 : グラフ G 出力 : 頂点を上記を満たすよう k 色でぬれれば 1, さ

もなければ 0

この他に数千の NP 完全問題が知られているhttp://www.nada.kth.se/~viggo/problemlist/A compendium of NP optimization problems

Page 32: コンピュータアルゴリズム 2 11.  計算困難問題 ・ NP 完全問題 ・決定不能問題

以降 : HAMILTON TSP, SAT KNAPSACK

可能な多項式時間還元の鎖

3SAT

0-1 INTEGER-PROGRAMMING

KNAPSACK

CLIQUESUBGRAPH

HAMILTONTSP

k-COLOR

初級

A B : A が B に多項式時間還元可能

HITTING-SET

中級上級

Page 33: コンピュータアルゴリズム 2 11.  計算困難問題 ・ NP 完全問題 ・決定不能問題

初級編 : HAMILTON TSP

考え方 : HAMILTON を解くのに TSP で解けないか ? 全頂点を回る閉路を見つける問題を, TSP (規定時間

で全頂点を回れるか ) に変換できないか ? G = V, E のハミルトン閉路を見つけるのに,以下のよ

うに TSP における頂点間の距離を設定する 辺 (a, b) E ならば d(a, b) = 1, そうでなければ d(a, b) = n + 1 そして,総距離 = n とする

あきらかにこの TSP に解があることと, G にハミルトン閉路が有ることは同値

Page 34: コンピュータアルゴリズム 2 11.  計算困難問題 ・ NP 完全問題 ・決定不能問題

3SAT KNAPSACK

3CNF とは 3SAT の組み合わせ構造 3SAT を KNAPSACK風連立一次方程式へ 3SAT を KNAPSACK へ

Page 35: コンピュータアルゴリズム 2 11.  計算困難問題 ・ NP 完全問題 ・決定不能問題

CNF, 3CNF とは リテラル (literal): 変数またはその否定

x または x 節 (clause): いくつかのリテラルを OR で結合したもの

l1 ... ln (li : リテラル ) 和積標準形 (Conjunctive Normal Form; CNF): いくつかの節を AND で結合したもの C1 ... Cm (Ci : 節 )

3CNF : CNF で各節の大きさ ( リテラル数 ) が 3 例 : (x1x2x3) (x1x3x4) (x2 x3 x4) (x1x2 x4)

Page 36: コンピュータアルゴリズム 2 11.  計算困難問題 ・ NP 完全問題 ・決定不能問題

3SAT の組み合わせ構造 つまりは各節から少なくとも一つ 1 となるリテラルを選べ

ということ (x1x2x3) (x1x3x4) (x2x3x4) (x1x2 x4)

書き換えの一歩 x1x2x3 x1 + x2 + x3 1

x は, x と独立な変数 y とみなした上で x + y = 1 を課す

x1 + x2 + x3 1y1 + y3 + x4 1x2 + x3 + x4 1y1 + y2 + y4 1

x1 + y1 = 1x2 + y2 = 1x3 + y3 = 1x4 + y4 = 1

x1 x2 x3x1 x3 x4 x2 x3 x4x1 x2 x4

Page 37: コンピュータアルゴリズム 2 11.  計算困難問題 ・ NP 完全問題 ・決定不能問題

KNAPSACK風連立方程式 不等式を等式へ変換

x + y + z 1 d, e{0,1} x + y + z + d + e = 3

x1 + x2 + x3 1y1 + y3 + x4 1x2 + x3 + x4 1y1 + y2 + y4 1

x1 + y1 = 1x2 + y2 = 1x3 + y3 = 1x4 + y4 = 1

x1 + x2 + x3 + z1 + z2 = 3y1 + y3 + x4 + z3 + z4 = 3x2 + x3 + x4 + z5 + z6 = 3y1 + y2 + y4 + z7 + z8 = 3

x1 + y1 = 1x2 + y2 = 1x3 + y3 = 1x4 + y4 = 1

が解を持つ

が解を持つ

Page 38: コンピュータアルゴリズム 2 11.  計算困難問題 ・ NP 完全問題 ・決定不能問題

ここまでのところ 与えられた 3CNF の充足可能性を,等価な 0/1 の方程式

Ax = b に変換した

A : 0-1 行列x

33...31...1

=m (節の数 )

n ( 変数の数 )

2n+2m

0-1ベクトル

b

Page 39: コンピュータアルゴリズム 2 11.  計算困難問題 ・ NP 完全問題 ・決定不能問題

KNAPSACK への変換 A の各列ベクトル ai と b を一つの (2n+2m+1)進整数とみなす

例 : n = m = 4 の場合

元の方程式はこうして得られた整数を係数とするナップサック問題 a1’ x1 + ... + a2n’ x2n = b’ と等価 (○’ は ベクトル○を変換して得た整数 )

0100111

(1110010)17=25640964

Page 40: コンピュータアルゴリズム 2 11.  計算困難問題 ・ NP 完全問題 ・決定不能問題

決定不能 (undecidable) 問題とは 正しいアルゴリズムが存在しない決定問題 決定不能であることが「証明されている」問題が有る

Page 41: コンピュータアルゴリズム 2 11.  計算困難問題 ・ NP 完全問題 ・決定不能問題

コンピュータで問題が「解ける」ということ 問題は入力と出力の間の関係として規定される

一般にある問題に対する可能な入力は可算個ある つまり「問題」とは自然数を領域とした「関数」に他ならない

ある問題の特定の入力のことをその問題の「インスタンス ( 実例 ) 」とも言う

あるプログラムが,ある問題のすべての可能な入力 ( 実例 ) に対して 常に停止する ( 無限ループに陥らない ) 常に正しい答えを出す

とき,そのプログラムは,その問題を解く (正しいアルゴリズムである )という

ある問題を解くプログラムが存在するとき,その問題は決定可能であるという ( コンピュータでその問題が解ける )

Page 42: コンピュータアルゴリズム 2 11.  計算困難問題 ・ NP 完全問題 ・決定不能問題

可算集合 可算集合

自然数との一対一対応がつく集合を可算集合 (coutable set) という

字面から , 可算=数えられる=有限 , というのは誤解

あくまで可算は「無限」の一種

Page 43: コンピュータアルゴリズム 2 11.  計算困難問題 ・ NP 完全問題 ・決定不能問題

可算集合の例 自然数の集合 N = { 0, 1, 2, 3, … } 自然数 2 つの組の集合

N2 = { (0,0), (0,1), (1,0), (0,2), (1,1), (2,0), … } 明らかに自然数 N よりも「大きい」気がするがそれでも可

算 有理数の集合 自然数 100 個の組 有限個の自然数の組 代数的な数の集合 有限個の文字からなる文字列

すべてのプログラムの集合も可算

Page 44: コンピュータアルゴリズム 2 11.  計算困難問題 ・ NP 完全問題 ・決定不能問題

可算でない集合の例 自然数の部分集合すべての集合

2N = { S | S N } 自然数から要素数 2 以上の有限集合への関数の集合

N E (|E| 2) 実際 2N は N { 0, 1 } に他ならない

(長さ無限の )自然数列 , ビット列の集合 自然数列は「 N N 」の要素 , ビット列は N { 0, 1 } の

要素に他ならない 実数の集合 ( とくに [0, 1])

[0, 1] は 2進小数展開により無限のビット列に他ならない ここで挙げたものはどれも「連続濃度」を持つ集合

Page 45: コンピュータアルゴリズム 2 11.  計算困難問題 ・ NP 完全問題 ・決定不能問題

2N は可算でない カントールの対角線論法 2N が可算だとする (= S0, S1, S2, …)

T = { i | i Si }

T は N の部分集合だがどの Si とも明らかに一致しない S0 S1 S2 ...

012

...

0 1 1 ... 1 1 1 ... 1 0 0 ...

... ... ...

T ?

Page 46: コンピュータアルゴリズム 2 11.  計算困難問題 ・ NP 完全問題 ・決定不能問題

決定不能な問題 「問題」とは自然数を領域とする関数のことであった 自然数を領域とする関数の集合は可算集合ではない 一方すべてのプログラム ( 有限の文字列 ) の集合は可算集合

よってプログラムで表現できない問題 (自然数を領域とする関数 ) が存在すること自体はこれで示せていることになる

具体的に ( 人間が解きたくなる問題で ) 見つけるのはまた別の話

Page 47: コンピュータアルゴリズム 2 11.  計算困難問題 ・ NP 完全問題 ・決定不能問題

決定不能な問題の例 整数係数多項式 (ディオファントス方程式 ) の整数解

入力 : n 変数の,整数係数の多項式 P 例 : x100 + y100 – z100 = 0

出力 : P(x1, x2, ..., xn) = 0 に整数解が存在すれば 1, しなければ 0

プログラムの停止性の判定 入力 : プログラム P とそれに対する入力 X ( 文字列 ) 出力 : P に X を与えて実行して,停止するなら 1, 停止しなければ 0

Page 48: コンピュータアルゴリズム 2 11.  計算困難問題 ・ NP 完全問題 ・決定不能問題

停止性の判定は決定不能 ( 証明 )

プログラム ( 文字列 ) は可算個 P0, P1, P2, ... と書く

入力 ( 文字列 ) も可算個 X0, X1, X2, ... と書く

「停止性の判定」とは Pi に Xj を入力すると停止するかどうかをすべての i, j に対して判定すること このプログラム halt(i, j) が存在

するとして矛盾を導く

P0 P1 P2 ...X0

X1

X2

...

0 1 1 ... 1 1 1 ... 1 0 0 ...

... ... ...

Page 49: コンピュータアルゴリズム 2 11.  計算困難問題 ・ NP 完全問題 ・決定不能問題

confuse(i) { if (halt(i, i) = 0) return; /* 終了 */ else 無限ループに入る ;}

confuse自身もプログラムだから,どこかの列に対応している (Pc とする )

P0 P1 P2 ...X0

X1

X2

...

0 1 1 ... 1 1 1 ... 1 0 0 ...

... ... ...

halt confuse

Page 50: コンピュータアルゴリズム 2 11.  計算困難問題 ・ NP 完全問題 ・決定不能問題

= 0 halt(c, c) = 0 confuse(c) は作り方により停止する (矛盾 )

= 1 halt(c, c) = 1 confuse(c) は作り方により停止しない (矛盾 )

P0 P1 P2 ...X0

X1

X2

...

0 1 1 ... 1 1 1 ... 1 0 0 ...

... ... ...

halt(i, i)confuse

confuse(i) { if (halt(i, i) = 0) return; else 無限ループに入る ;}

Page 51: コンピュータアルゴリズム 2 11.  計算困難問題 ・ NP 完全問題 ・決定不能問題

おしまい

Page 52: コンピュータアルゴリズム 2 11.  計算困難問題 ・ NP 完全問題 ・決定不能問題

本講義の続き プログラムの正しさ 計算量 基本アルゴリズム

整列 探索 グラフ ( 文字列 )

NP 完全 決定不能

チューリングマシン,計算モデルソフトウェア基礎理論 (近山 )

ネットワークフロー,最適化 (線形計画法 )システム数理工学 (藤井・山地 )

データベース (大量のデータからの探索, B木 )情報システム工学 (杉本 ?)

計算困難な問題に対するアプローチ

システム工学基礎 (伊庭 )

文法の認識・構文解析後期 B演習 (田浦 )

形式言語理論・オートマトンソフトウェア基礎理論 (近山 )