annotate a10/lecture.ind @ 406:a60132983557

...
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Wed, 08 Nov 2023 21:35:54 +0900
parents a3fb231feeb9
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
127
0e8a0e50ed26 add some files
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1 -title: Turing Machine と計算量
0e8a0e50ed26 add some files
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
2
0e8a0e50ed26 add some files
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
3 --計算量
0e8a0e50ed26 add some files
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
4
0e8a0e50ed26 add some files
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
5 入力の長さ n に対して、どれくらいの計算時間やメモリが要求されるかを表す方法を考える。
0e8a0e50ed26 add some files
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
6
0e8a0e50ed26 add some files
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
7 計算を Turing machine で行ない、その Turing machine が計算終了までに費すステップと使用したテープの長さを使う。
0e8a0e50ed26 add some files
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
8
164
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 127
diff changeset
9 nの式で表す。係数は問わない。
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 127
diff changeset
10
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 127
diff changeset
11 --table: いろんな計算量
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 127
diff changeset
12
127
0e8a0e50ed26 add some files
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
13
164
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 127
diff changeset
14    o(n) 入力に比例した計算時間
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 127
diff changeset
15    o(n^2) 入力の長さの二乗の計算時間
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 127
diff changeset
16    o(n * log n)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 127
diff changeset
17    o(exp n) 入力の長さの指数的な計算時間
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 127
diff changeset
18    o(exp (exp n)) 入力の長さの指数的な計算時間
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 127
diff changeset
19
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 127
diff changeset
20
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 127
diff changeset
21 --table-end:
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 127
diff changeset
22
127
0e8a0e50ed26 add some files
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
23
0e8a0e50ed26 add some files
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
24 Turing machine ではなく、もっと高級なモデル(例えばメモリを持つもの)を考えても、計算量は同じ。
0e8a0e50ed26 add some files
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
25
0e8a0e50ed26 add some files
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
26 それは、テープの長さを考慮しても結局は係数しか違わないから。o(1) は入力を受け付ける時間を考慮してない時に意味がある。
0e8a0e50ed26 add some files
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
27
0e8a0e50ed26 add some files
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
28 実際には係数も問題になることが多い。
0e8a0e50ed26 add some files
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
29
326
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 164
diff changeset
30
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 164
diff changeset
31 --o(n)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 164
diff changeset
32
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 164
diff changeset
33 --o(n^2)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 164
diff changeset
34
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 164
diff changeset
35 naive append
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 164
diff changeset
36
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 164
diff changeset
37 --o(n*log n)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 164
diff changeset
38
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 164
diff changeset
39 quick sort
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 164
diff changeset
40
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 164
diff changeset
41 --o(exp n)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 164
diff changeset
42
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 164
diff changeset
43
127
0e8a0e50ed26 add some files
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
44 --P
0e8a0e50ed26 add some files
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
45
0e8a0e50ed26 add some files
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
46 Turing machine で多項式時間がかかる計算量。
0e8a0e50ed26 add some files
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
47
0e8a0e50ed26 add some files
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
48 Pの例。
0e8a0e50ed26 add some files
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
49
0e8a0e50ed26 add some files
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
50   単純サーチ
0e8a0e50ed26 add some files
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
51   数え上げ
0e8a0e50ed26 add some files
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
52
0e8a0e50ed26 add some files
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
53 --Non deteministic turing machine
0e8a0e50ed26 add some files
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
54
0e8a0e50ed26 add some files
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
55 Automaton と同じように非決定的なTuring machine (NTM)を考える。Deterministic turing machine (DTM)の遷移関数は
0e8a0e50ed26 add some files
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
56
0e8a0e50ed26 add some files
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
57 tδ : Q → Σ → Q × ( Write Σ ) × Move }
0e8a0e50ed26 add some files
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
58
0e8a0e50ed26 add some files
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
59 だったが、
0e8a0e50ed26 add some files
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
60
0e8a0e50ed26 add some files
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
61 tnδ : Q → Σ → Q × ( Write Σ ) × Move } → Bool
0e8a0e50ed26 add some files
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
62
0e8a0e50ed26 add some files
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
63 と複数の動作が可能となる。次のテープの状態も複数あることになる。
0e8a0e50ed26 add some files
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
64
0e8a0e50ed26 add some files
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
65 例えば、1からn までの素数を計算するのに DTMでは1から順番に計算していくが、NTMでは全部一度に調べることができる。
0e8a0e50ed26 add some files
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
66
0e8a0e50ed26 add some files
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
67 NTMで多項式時間がかかる計算量を NP という。
0e8a0e50ed26 add some files
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
68
0e8a0e50ed26 add some files
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
69 大雑把に言えば、NTMはCPUが無限にある並列計算機である。
0e8a0e50ed26 add some files
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
70
0e8a0e50ed26 add some files
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
71 --NTMをDTMで simulation する。
0e8a0e50ed26 add some files
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
72
0e8a0e50ed26 add some files
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
73 非決定性の数が定数つまりCPUの数が固定なNTMは、DTMと定数分しか差がない。従って計算量的には同じ。
0e8a0e50ed26 add some files
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
74
0e8a0e50ed26 add some files
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
75 非決定性の数は入力の長さよりは使用したテープの長さに依存する。NTMでPということは、並列に動く個々のTMのテープの使用量はPで押さえられる。
0e8a0e50ed26 add some files
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
76
0e8a0e50ed26 add some files
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
77 選択は有限(kとする)なので、k^P の分岐が起きている可能性がある。
0e8a0e50ed26 add some files
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
78
0e8a0e50ed26 add some files
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
79 つまり、NP(NTMでP)な計算では指数的にCPUが使われる可能性がある。従って、一般的には NTMをDTMでsimulationするには指数的なステップがかかる。
0e8a0e50ed26 add some files
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
80
0e8a0e50ed26 add some files
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
81 --NPの例
0e8a0e50ed26 add some files
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
82
326
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 164
diff changeset
83 Boolean formula の satifiberbilty を調べる
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 164
diff changeset
84
127
0e8a0e50ed26 add some files
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
85 SAT
0e8a0e50ed26 add some files
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
86
326
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 164
diff changeset
87 --coNPの例
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 164
diff changeset
88
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 164
diff changeset
89 Boolean formula の validity を調べる
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 164
diff changeset
90
127
0e8a0e50ed26 add some files
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
91 --P=NP?
0e8a0e50ed26 add some files
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
92
0e8a0e50ed26 add some files
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
93 NP はあまりに強力だが、EXP(指数的な計算量)では押さえられる。
0e8a0e50ed26 add some files
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
94
0e8a0e50ed26 add some files
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
95 --NP hard
0e8a0e50ed26 add some files
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
96
0e8a0e50ed26 add some files
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
97 任意のNPの問題をとくことができる一般的な問題を NP complete という。
0e8a0e50ed26 add some files
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
98
0e8a0e50ed26 add some files
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
99 最低でもNPな計算量を要求する計算を NP hard という。NP hard は NP complete とは限らない。
0e8a0e50ed26 add some files
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
100
0e8a0e50ed26 add some files
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
101 --P space
0e8a0e50ed26 add some files
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
102
0e8a0e50ed26 add some files
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
103 量化記号を含むSAT。
0e8a0e50ed26 add some files
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
104
326
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 164
diff changeset
105 --計算量の階層
127
0e8a0e50ed26 add some files
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
106
326
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 164
diff changeset
107 どこの隙間も空でないことは証明されていない。
127
0e8a0e50ed26 add some files
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
108
326
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 164
diff changeset
109 <center><img src="fig/comp-hier.svg"></center>
127
0e8a0e50ed26 add some files
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
110
0e8a0e50ed26 add some files
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
111