授業展開#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回目 電卓、筆記用具、直筆ノート
© Copyright 2025 ExpyDoc