Transcript Document

授業展開#11
コンピュータは
何ができるか、できないか
コンピュータのモデル化
 コンピュータは、記号的にアルゴリズムとして
定義できる内容は、基本的に何でも実行する
ことができる。
 コンピュータを抽象的にモデル化し、計算が
できる・処理ができるということはどういったこ
とか、コンピュータは何ができるのかという課
題について検討する。
処理
コンピュータでは、全ての情報、データ、プログラムも記号列
で表している。情報処理はこの記号列に対しておこなう。この
処理には2種類がある。
組み合わせ的処理
入力が確定すると出力も確定する処理。
→ 数学の関数計算

順序的処理
過去の入力の順序に依存して出力が確定する関係を「順序」
的という。
→ 自動販売機の入金

記憶と内部状態
コンピュータは、全体として、内部状態としてメ
モリがあり、順序的な機械である。
メモリは有限であるため、状態数も有限であ
る。
入力によって「記憶」=「状態」が変化するが、
状態が変化することを「状態遷移」という。
オートマトン(automaton)
オートマトン(automaton)
自動人形、自動機械、ロボット
入力記号列の受理機能を備えた抽象的な機械のこと。
複数形は、オートマタ(automata)。
例:自動販売機
ジュース代金:110円
入力として許される(受理される)内容
100円、10円
50円、10円、50円
50円、50円、10円
入力として許されない(受理されない)内容
100円、1円
50円、10円
1円、100円
有限オートマトン
最も簡単なオートマトンの一つ。
 構成
・入力テープ 入力文字列が書き込まれたマス目からなる
・読み取りヘッド 入力テープを読み取り、有限状態部に送る
・有限状態部 初期状態から入力文字列に従い、内部状態を
次の状態に遷移させる。状態には、受理状態(最終状態)と
非受理状態がある。
入力テープ
入力文字列を読み取り、状態遷移を
a b a b b
繰り返し、入力情報が終了すると停止
読み取りヘッド
する。

終了したときの内部状態が最終状態
になっていれば、受理したという。
状態と入力文字の組み合わせに、次
の状態を対応させた表を動作表(状態
遷移関数)という。
有限状態部
動作表(状態遷移関数)の例
状態
q0
q1
q2
入力
0
1
q0
q1
q0
q1
q2
-
状態q0の時に入力0があると状態はq0になる。
状態遷移図
b
a
A
初期状態
最終状態
b
b
S1
初期状態
有限オートマトンの例
B
a
a
S2
S3
入力 bbaaa:受理される。
最終状態
受理される言語は、「1つ以上のbが続いた後、1つ以上の
aが続く形の語」からなる言語
プッシュダウンオートマトン



有限オートマトンにプッシュ
ダウンテープという外部記憶
装置をつけたもの。
プッシュダウンテープは、書
き込みは一番上に追加し、読
み出しは一番上から取り出
す外部記憶装置。
入力語=文字列を読み終
わったときに、プッシュダウン
テープが空ならば入力語を
受理する。
入力テープ
a
b
a
b
b
読み取りヘッド
A
B
プ
ッ
シ
ュ
ダ
ウ
ン
テ
ー
プ
Z
読
み
書
き
ヘ
ッ
ド
有限状態部
チューリングマシン(Turing Machine)




有限オートマトンの入力テープの代わりに、入出力テープ
(読み書きテープ)を付けて、それを補助の外部記憶としても
使えるようにしたオートマトン
ヘッドは左端から左へ出ない限り、右、左に1マス移動できる。
有限状態部の動作(次の状態、書き込む文字、左右どちらに
動くか)は、そのときの内部状態とテープから読み取った文
字の組み合わせから、決められる。
最終状態が定義されており、最終状態に遷移すると停止し、
入力語を受理する。
読み書きテープ
0
1
1
0
0
1
読み書きヘッド
有限状態部
b
b
b
b
b : 空白記号
b
チューリングマシンの動作表の例





動作は3つ組(A,B,C)
A:状態、 B:テープへの書き込み、 C:ヘッドの動作
状態:q0、q1、qf、 qfは最終状態
テープ記号:0、1、 b 、 bは空白記号
ヘッドの動き:R、L、S
R:右へ1マス、 L:左へ1マス、 S:動かない
たとえば、状態q0の時、ヘッド位置のテープ記号が1であると、動作は( q1, b, R )で
あるから、状態がq1に遷移し、テープのヘッド位置に空白( b )を書き込んで(1から
bに書き換える)、ヘッドが右(R)に1マス動く。
テープ記号
状態
0
1
b
q0
( q0, b, R )
( q1, b, R )
(qf, 0, S )
q1
( q1, b, R )
( q0, b, R )
( qf, 1, S )
チューリングマシンとコンピュータ

コンピュータは、データ(入力文字列)を受け取ると、プログ
ラムの命令に従って、メモリ(状態)を書き換えたりしながら、
最後に入力に対応した文字列を出力して停止する。

チューリングマシンの動作表はコンピュータのプログラムに
相当し、状態はメモリに、有限状態部はコンピュータの本体
(CPU)に相当する。

コンピュータは何ができるかを抽象的な機械でもあるチュー
リングマシンを使って考える。
チューリングマシンの全域性と部分性

動作表の未定義動作による異常停止はしないと考
える(異常停止状態も最終状態の一つとしておく)と、
どんなチューリングマシンもある入力データに対して
結果を出力して停止するか、停止しないかとなる。
・任意の入力データに対して停止して結果を出力す
る動作表をもつチューリングマシンを全域的である
という。
・全域的でないチューリングマシンは部分的であると
いう。(無限ループしたり、ハングアップしたりする
チューリングマシン)
チューリングマシンとアルゴリズム
 チューリングマシンが全域的であれば任意の
入力に対して停止して結果を出力する。部分
的であれば、入力値によっては停止しないこ
とになる。
 全域的チューリングマシンが計算する関数は
全域的であるという。部分的チューリングマシ
ンが計算する関数は部分的であるという。
チューリングマシンとアルゴリズム
全域的関数
m(x,y)=x×y
任意の(x,y)に対して計算結果を与える。
 部分的関数
f(x)=√x:但し、f(x)もxも0を含めた自然数
x=0、1、4、9、・・・の時以外は関数が存在せず
未定義となる。
 ある関数を計算するチューリングマシンが全域的
であるとき、その計算手続きはアルゴリズムであ
るという。停止性が保障されている計算手続きが
アルゴリズムである。

計算理論
チューリングマシン:自然数xを入力して、自然数yを出
力する関数f(x)=yを計算する機械とする。
 チューリングマシンは何ができるか?
→ チューリングマシンはどのような関数を計算できる
か。
 コンピュータは何ができるか?
→ 計算できる関数とは何か。
このような立場から、アルゴリズム、計算手続きを検討
する理論を計算理論という。
コンピュータとチューリングマシン
入力に対して出力を返す処理能力においてコン
ピュータとチューリングマシンは同等である。
 チューリングマシンの動作表は、チューリングマシ
ンの動作中、変化しない。チューリングマシンは、外
部プログラム式コンピュータもしくは固定式プログラ
ムコンピュータに相当する。

入
力
デ
ー
タ
チューリン
グマシン
動作表
作業領域
入出力テープ
コンピュータ
出
力
入
力
装
置
入
力
デ
ー
タ
CPU
固定プ
ログラム
作業領域
メモリ(主記憶)
出
力
出
力
装
置
処理不能について
①
どのように構成しても処理できないことを証明
できるか?
②
構成方法、工夫は無限のため直接証明する
ことは不可能である。
③
万能なチューリングマシンに不可能であるこ
とを示せばよい。
万能チューリングマシン
 他のあらゆるチューリングマシンの動作を模
倣できるチューリングマシン
 プログラム内蔵式コンピュータに相当する。
動
作
表
・
入
力
デ
ー
タ
万能チュー
リングマシン
動作表
作業領域
入出力テープ
出
力
入
力
装
置
プ
ロ
グ
ラ
ム
・
入
力
デ
ー
タ
コンピュータ
CPU
アルゴリズム
作業領域
メモリ(主記憶)
出
力
出
力
装
置
コンピュータによるコンピュータの模倣

コンピュータAの上で、コンピュータBのシミュレー
ションをすることができる。
コンピュータB
コンピュータA
新製品の開発など現在は不可欠な技術
コンピュータは何ができないか
 チューリングマシンの停止問題
任意のチューリングマシンに任意のデータを
入力したとき、それが停止するかどうか、事
前に判断するアルゴリズムがあるか?。
停止問題の判定アルゴリズム
<Aw>:チューリングマシンAの動作表と入力デー
タwを記号化して一つにしたもの。
 万能チューリングマシンをTとする。
 Tに<Aw>を入力すると、wを入力されたAを模倣
する。
 <Aw>に対してTが停止するならば、0を出力して
停止する。 <Aw>に対してTが停止しない(暴走す
る)ならば、1を出力して停止するチューリングマシン
Mを考える。
 すなわち、Mは、
T<Aw>→停止=M→0
T<Aw>→暴走=M→1

T<Aw>→停止=M→0
T<Aw>→暴走=M→1
 Aはwに対して停止するかしないかどちらかであるか
ら、<Aw>に0か1を対応させる関数fは全域的であ
る。従って、Mは全域的チューリングマシンである。
 Mの代わりに、 <Aw>が停止するとき暴走し、<A
w>が暴走するときに停止するチューリングマシンM
1を考える。
 M1は、 T<Aw>→停止=M1→暴走
T<Aw>→暴走=M1→停止

Mは、
いま、<A>を入力すると、<AA>を出力する
チューリングマシンCを構成しておく。M1の前にCを
くっつけて合成したチューリングマシンM2をつくる。
 M2に<A>を入力すると、M1に<AA>が入力さ
れる。<AA>を入力されたTは、<A>を入力され
たAの模倣をする。
 Aは、A自身の動作表を入力データとするが、このと
きもAは停止するかしないかどちらか。
 T<AA>→停止=M2<A>→暴走
T<AA>→暴走=M2<A>→停止
 Aは任意のチューリングマシンだから、AとしてM2を
代入する。

T<AA>→停止=M2<A>→暴走
T<AA>→暴走=M2<A>→停止
 Aは任意のチューリングマシンだから、AとしてM2を
代入する。
 T<M2M2>→停止=M2<M2>→暴走
T<M2M2>→暴走=M2<M2>→停止
 これは、<M2>に対してM2が停止するならば、M
2は<M2>に対して暴走する。<M2>に対してM
2が暴走するならば、M2は<M2>に対して停止
するを意味する。・・・・・・矛盾

矛盾の原因
Cは容易に構成できるから、M2はM1が構成でき
れば、問題ない。M1はMから簡単につくれる。
 すなわち、最初の仮定、Mが存在するということが
矛盾の原因である。つまり、Mは存在しない。
 Mが存在しないということは、Aがwに対して停止す
るときは、0を出力し、停止しないときは1を出力す
るというチューリングマシンは存在しないということ
になる。
 チューリングマシンの停止問題をとくアルゴリズムは
無い。

 次週小テスト(12/18)
範囲:9-11回目
 電卓、筆記用具、直筆ノート