サンは無口な女性だった.カズとは違いスポーツが苦手で,インドアに引きこもりがちだった.プログラミングに関してはCやC++, Scheme,R,Java,Juliaなどの経験があったが,それらのプログラミングが得意な訳ではなく,他にも趣味がある訳でも無く淡々とした生活を過ごしていた.アカデミー・サーベイヤーで情報を担当になったと聞いても,特に何を思うのでもなかった.何の気無しに「情報の館」を訪れ,生体認証をして扉をくぐると-そこにはアバカス,アンティキティラ島の機械,パスカリーヌ,Leibniz wheel,ジャカード織機,階差機関,Z1,Z2,Z3,ABC,Colossus,EDVAC,ENIAC,The Baby,EDSAC,EDVACなどの歴史的な計算機の模型が揃っていた.中央にモニタとキーボード,トラックパッドの置かれた机と椅子があった.「管理者」がイヤホン越しに話しかけて来た.「サンさん,あなたにはここで情報学やデータ科学について学んでもらいます.それほど難しいことは要求しませんので,皆の助けになるようよく学んで行って下さい.」「はい.」
「では,コンピュータサイエンスの基礎から始めましょう.集合とは,簡単に言うと何のことですか.」「対象の集まりのことです.計算機科学の場合,真理値の真と偽を扱うブール集合が重要です.あとは空集合も重要です.集合と集合の関係に関連する概念では直積,冪集合,和集合,共通部分集合.差集合も重要です.」「では,写像とは何ですか.」「集合Aから集合Bへの写像fをf : A → Bとすると,集合Aの各元aに集合Bの元f(a)を1つ割り当てることが出来ます.a ↦ f(a)と表せます.全射,単射,全単射,合成写像,恒等写像,同型写像,逆写像も重要な概念です.」「では,関係とは何ですか.」「集合Aから集合Bへの関係R : A → Bとは直積集合A × Bの部分集合Rです.(a, b) ∈ R, aRbとも表します.推移的閉関係,推移反射的閉関係も重要です.」「では帰納法は計算機科学ではどのように扱うと有用ですか.」「新しい構造を定義するのに再帰的定義を行う場合などで有効です.」「では形式言語とは何ですか.」「ある文字系列の集合の部分集合のことです.プログラム言語もそうです.和,結合,繰り返しなどの演算が定義でき,あらゆる言語の集合は半環をなします.アルファベット集合をXとする有限状態機械とは,次の四つ組(Q,δ, q0, F)の構造を持つ機械のことです.Qは状態を元とする有限集合で,δ: Q × X → Qは状態遷移関数であり,機械が状態qにいる時に入力文字xを読むと次に状態δ(q, x)に移り,q0 ∈ Qは初期状態で,F ⊂ Qは受容状態の集合で,機械が状態q ∈ Fで終われば,機械はこの入力文字列を受容します.このような有限状態機械Mが受容する記号列の集合T(M) = {w | δ*(q0, w) ∈ F}は,機械Mを初期状態q0からFで示す受容状態に移す記号列からなります.T(M)はXの元を有限個並べた文字列の集合X*の部分集合です.X*の部分集合Lがある有限状態機械Mの受容集合T(M)と一致している時,Lを有限状態言語と言います.」「では文脈自由文法とは何でしょう.」「文脈自由文法G = (V, T, S, P)とは非終端記号の有限集合V,終端記号の有限集合T,開始記号というVの元S,生成規則V × (V ∪ T)*の有限部分集合Pで指定される構造です.文法Gの生成する言語L(G)とは開始記号Sから文法Gに従って導出出来る終端記号列の全体L(G) = {w | w ∈ T*, S *⇨ w}のことです.集合A ⊂ T*がある文脈自由文法Gの生成する言語L(G)の時,Aを文脈自由言語と言います.言語{anbn | n ≥ 1}を受容する有限状態機械は存在しません.」「では,LISPにおけるリスト構造の直接的な表現としてのs表現とは何ですか.」「集合A上のs表現とは,s表現の集合をS(A)とすると帰納法の初期段階ではa ∈ Aがs表現で,S(A)の原始元またはアトムと言い,帰納段階ではw1, w2がs表現の時にそれらの · 積もs表現になることです.ISATOM, HEAD, TAIL, CONS, CAR, CDR, EQなど多くの関数の基礎となります.」「では,複雑な対象の数え上げの原理として代表的なものは何ですか.」「和の法則,積の法則,鳩の巣原理,順列,組合せ,二項定理などです.」「木Tはラベルの付いた節点の集合で次の構造を持つものを言います.根と呼ぶ特別の節点があり,それ以外の接点は互いに交わらない部分木T1, T2, …, Tm (m ≥ 0)に分割出来ます.部分木を持たない節点を葉と呼び,それ以外の節点を内部節点と呼びます.木を用いて再帰的数え上げや計算が出来ます.これにはどのよう応用例がありますか.」「アルゴリズムの解析には逐次探索と2分探索があり,後者で2分決定木が応用出来ます.前者の平均の手間は配列要素の数をnとして(n + 1)/2, 後者は約log2nなので,後者は対数的探索として手間が節約出来ます.」
「では,スイッチング回路とは何ですか.」「NOT, AND, ORゲートを用いて命題の真理値やその否定,論理積,論理和,排他的論理和などを表す回路です.ここで利用される{0, 1}nから{0, 1}への写像であるブール関数には論理和標準形,論理積標準形があります.{∧, ∨, ¬}でどんなブール関数も表現出来る完全な命題操作が可能です.ビットの加算,閾値などが表現可能です.」「では,命題論理において注意すべきことは何ですか.」「命題式の統語規制,命題式の意味論,形式的証明です.命題論理の公理系には任意の命題式A, B, Cに対して1. A ⇨ (B ⇨ A) 2. (A ⇨ (B ⇨ C)) ⇨ ((A ⇨ B) ⇨ (A ⇨ C)) 3. ¬(¬A) ⇨ Aという3つの恒真式があります.推論規則には(A, A ⇨ B)/Bという三段論法,A/ApBという代入があります.これで公理と推論規則から定理の証明が導かれます.真理値を値として持つ関係である述語には,量化記号として∀と∃があります.述語論理の推論規則として∀-除去があり,(∀x)P(x)/P(a)と表されます.」「それでは2項関係として代表的なものには何がありますか.」「同値関係や半順序関係などです.剰余系や極大と極小などがそれらから帰結される例です.同値関係は反射律,対称律,推移律を満たし,半順序関係は反射律,反対称律,推移律を満たします.半順序集合Aの任意の2元に最小上界と最大下界が存在する時,Aは束と呼ばれます.相補的な分配束はブール代数と呼ばれます.」「さらにこのトピックに関連するものとして,カントールの対角線論法は計算可能性の理論で重要で,プログラムにより解けない問題の存在を証明します.また,木にも領域があり,演算域と台,写像による代数構造があります.ポーランド記法や辞書式順序で記述されます.ではグラフとは何ですか.」「有向グラフとはG = (V, E, ∂0,∂1)の組で表され,Vが節点の集合,Eが枝の集合で,∂0 : E → V,∂1 : E → Vはそれぞれ始点関数と終点関数です.∂0(e) = v0, ∂1(e) = v1なら枝eは節点v0から節点v1へ向かうと言います.無向グラフとはG = (V, E, ∂)の組で表され,Vが節点の集合,Eが枝の集合で,∂は各枝に順序を考えない節点の対(同一節点可)を対応させる関数です.∂(e) = {v0, v1} = {v1, v0}なら枝eが節点v0と節点v1を結ぶと言います.グラフの経路,オイラー経路,連結性などによりオイラーの定理が成り立ちます.オイラーの定理とは,Gを孤立点もループも持たない連結無向グラフとすると,グラフGがオイラー経路を持つ必要十分条件は全ての節点が偶数本の枝を持つか,またはちょうど2つの節点が奇数本の枝を持つことです.グラフの連結性は半環上の行列で記述出来ます.状態遷移関数δ: Q × X → Qの接続行列をAとすると,任意のn ≥0について行列Anの(i, j)要素は状態グラフの状態qiから状態qjへの長さnの経路の集合です.Qの状態数をmとすれば,状態qiから状態qjへ到達可能であるのはX*行列B = I + A + A2 + … + Am–1の(i, j)要素が空でない時のみです.また,どの有限状態言語も正規集合です.さらにMA, MBを非決定有限状態機械とし,A = T(MA), B = T(MB)とすると,言語A ∪ B, A · B, A*を受容する非決定有限状態機械MA∪B, MA·B, MA*が存在します.」
読み終わったら、ポイントを付けましょう!