離散構造: 前半
離散構造 授業前半のポイント
1. 論理
* 論理記号と論理式の構造を理解すること (∧、∨、⇒、¬、⇔、∀、∃ お
よび A¬B とか A∪B とか ∀∃x=0などは論理式でないことを理解する。)
* 日本語などの自然言語表現を、なるべく正確に論理式で表現すること
* 命題論理に対する真理値表を正確に書けるようになること (この式は恒真か、充足可
能か、これとこれは同値か、などの質問に答えられるようになること)
2. 集合
* 集合とはなにか、「属する」という関係(a∈S)、内包的な表記 などを理解する
* 集合に対する演算を理解すること(∪、∩、-, べき集合、×)、
* 集合に対する推論を理解すること(S=T, S⊂T)
* 有限集合の要素数の計算に慣れること。(#(S∪T)=#S+...など)
3. 関数
* 関数の定義、部分関数の定義、基本的な言葉(定義域、コドメイン)
* 関数に関する概念については、その定義と推論を正確にできるようになるこ
と。像、 合成関数 gof (f を適用してからgを適用するという順番に特に注意)
単射、全射、全単射、逆関数。
※ A∧B∨C やA⇒B⇒Cという風に括弧を省略した場合、どう補うかは注意を要する
(本講義の範囲内では、問題文にあらわれる論理式は括弧を十分つけたもの
しか書かない)
※ ∀x∃yA と ∃y∀x A は、論理式としての意味が(まったく)異なることに
注意。
※ 論理式A∧B と和集合A∪B は絶対に混同しない。
※ 集合の要素は、数や「もの」とは限らない。集合の集合もある。
※ 「ベン図」は証明には使えない。考えるための便利な道具。
※ 自然数の集合N は 0を要素とする。
※ S⊂T は、S=T の場合も含む。
※ 一般の集合については、「単射だから全射」といった関係はない。(有限集
合SからSへの関数については、単射であることと全射であることは一致する。)
!! 証明問題は、「○○の定理」を使う、というようなことはなく、
すべて、「定義にたちかえって解きほぐす」ことによって解けるはずである。
---------------------------------------------------------------------
進んだ学習、話題
論理->
SATソルバ (命題論理式の充足可能性をとんでもなく高速に解くプログラム)
プログラムの仕様記述、形式検証 (プログラム検証)
コンピュータを使った定理の証明 (数学の世界ではなく、コンピュータ屋さんの世界)
論理プログラミング (Prolog)
人工知能などにおける知識表現の手段
集合->
数学(および様々なモデル化)の基礎中の基礎
プログラム言語における型(データ型)
関数->
関数型プログラム言語; OCaml, SML, Lisp/Scheme, Haskellなど
プログラムのモデル; プログラムの意味論
離散構造「6章」〜帰納的関数論 (計算モデルの1つ)
興味がある人は、インターネットを検索して Wikipedia 等を見るだけでもよ
い。(非常に興味深い記事が多数ある。)