Post on 21-May-2020
形式言語とオートマトン第1回 オリエンテーションと導入
2016年9月20日
中島
1
本日の授業内容
• オリエンテーション
• 導入
– オートマトンとは何か
– 形式言語とは何か
– 有限オートマトンの応用例
2
オリエンテーション
3
中島毅
• 研究室: ソフトウェア工学研究室
• 専門:
実践的ソフトウェア工学
– 品質要求分析・評価
– レビュー・テスト技術
– アーキテクチャ設計・評価
M2M/IoTシステムの構築技術
授業の位置づけ
• 情報工学科 1年後期 選択科目
• 情報工学の基礎であるオートマトンと形式言語理論を学ぶ.
– オートマトン: 計算(機)の基礎的なモデル
– 形式言語理論: プログラミング言語の構造や解析の基礎
• 前提とする授業
– 離散数学1(集合,写像,有効グラフ,同値クラス 等)
• 関連する授業
– コンパイラ
– 自然言語処理
– プログラミング言語論
– ソフトウェア工学5
学ぶこと
• 正規言語:
– 具体的な集合、状態遷移図、状態遷移表などを調べ、動きを把握できるようにする。
• 正規オートマトンの最小化:
– 正規言語に対応する正規オートマトンは複数の表現があるので、最小化して、単一の表現形式を求める。
6
講師 及び TA
• 担当教員: 中島毅教授
– 豊洲校舎研究棟14階G-32室
• SA(学生アシスタント)4年 山﨑啓佑 君
7
授業のスケジュールと内容 (1/2)
1. 概要 9/20・オートマトンと言語、チョムスキの4階層
2. 形式言語と帰納的表現 9/27・語、言語、クリーネ閉包、スター演算 教科書: pp. pp.32-39
3. 順序機械: 10/4・ミーリ機械、ムーア機械 教科書: pp.83-88
4. 有限オートマトン(1) 10/11・決定性オートマトン(DFA),言語の受理 教科書: pp.89-95
5. 正規言語 10/18・正規表現、正規方程式(DFAからの変換) 教科書: pp.96-104
6. 有限オートマトン(2) 10/25・非決定性オートマトン(NFA)、DFA化 教科書:pp.105-109
7. 有限オートマトン(3) 11/8・εNFA、NFA化 教科書:pp.109-112
8. 中間テスト、講評 11/15
8
授業のスケジュールと内容 (2/2)
9. 有限オートマトン(3) 11/22・正規表現からε-NFA、NFA、DFAへの変換 教科書:pp.112-115
10. 有限オートマトン(4) 11/29・Myhill-Nerodeの定理、同値類 教科書:pp.115-119
11. 有限オートマトン(5) 12/6 ・最小化と演習 教科書:pp.121-123
12. 形式言語とBNF記法: 12/13・メタ言語、構文図式 教科書:pp.43-47
13. 形式言語としての数式と構文木 12/20・中置、ポーランド、逆ポーランド記法 教科書:pp.41-43,78-80
14. 文脈自由文法とPDA 1/10教科書:pp.145-153,125-131
15. テストと解説 1/17教科書:pp.30-123
9
教科書
• 小倉久和 著: 「形式言語とオートマトン入門」コロナ社: 定価2,800円
• 授業は,テキストの例題と演習問題を中心に解説するので,購入のこと.(試験唯一の持ち込み資料)
• 利用箇所
– 主に4章のp.83-p.123– 2,3章:
• チョムスキの4階層
• クリーネ閉包、スター演算
• 逆ポーランド記法
• メタ言語、構文図式、BNF記法
10
成績評価
• 期末試験 (70%)• 平常点 (30%)
– 小テスト(20%) 通常授業中に4,5回実施
– 中間テスト(10%)
11
質問・相談時間
• 火曜授業後@大宮4号館3階 4301(教員控え室)
• 連絡先 (その他の時間の質問はメールにてアポ)
e-mail: tsnaka@shibaura-it.ac.jp• 試験前の質問はOK• 試験後の陳情は無用
12
授業中の注意事項
• 私語をしない、話は静かに聴く
• 携帯は電源を切る
• 出入りしない
13
導入
14
オートマトンとは何か
• オートマトン(Automaton,複数形 Automata):– 自動機械 あるいは からくり人形
– 自動販売機、電子計算機、コンピュータ の基本原理
– プログラムの動作原理
• からくり人形の例: 茶運人形
http://www.museum.kyoto-u.ac.jp/collection/materials/chakumiDoll.html より15
オートマトンとは何か: 自動販売機
16
機械が状態をもっていて、状態×入力で異なる出力
をだすことができる
状態「50円投入済」
50円の商品○60円の商品×
10円投入
処理
内部状態
入力 出力
更新参照
状態「60円投入済」
10円投入
50円の商品○60円の商品○
計算機の原理: 計算機の始まり
• 1939年:ABC (世界最初の電子計算機)
– 2進数の採用
– 論理回路を使った演算装置
– メモリの利用
• 1946年:ENIAC(米国陸軍 弾道計算用)
• 1946年:プログラム内蔵方式電子計算機の提案 ⇒ ノイマン型コンピュータ (EDVAC開発チーム)
• 1949年:EDSAC(世界初のプログラム内蔵方式コンピュータ)
17
計算機の原理: ノイマンの理論
フォン・ノイマン(von Neumann)
現在のコンピュータのほとんどがこの方式
• ノイマン型コンピュータ• ゲーム理論• 原爆開発(爆縮レンズの開発)
ノイマン型コンピュータの特徴
• プログラム可変内蔵方式• 逐次処理方式• 単一メモリ方式 (プログラムと
データは同じメモリ内に格納)
18
計算機の原理: そのさきがけとして
アラン・チューリング Alan Turing
• チューリングマシン• 計算可能性理論• 暗号解読 (映画『イミテーション』)
チューリングマシン
メモリセル
テープ(無限長)
ヘッド
制御部
上下に一つずつ移動
内部状態
入力: 現在のメモリ値と状態出力: 新しいメモリセルの値
新しい状態、ヘッドの移動
「計算可能な問題(アルゴリズムが存在する)」ならどんな計算も可能
19
形式言語とは何か
• 自然言語
– 日本語、英語など人間が話したり、書いたり、読んだり、聞いたりする言語
– 文法はあるが、例外が多い
• 形式言語
– コンピュータを動作させるプログラム言語
– 文法規則が明確
20
形式言語 : 正規表現
チョムスキーの言語の分類
言語の階層 文法 受理するオートマトン
3 正規言語 有限オートマトン2 文脈自由言語 プッシュダウンオートマトン
1 文脈依存言語 線形拘束オートマトン
0 句構造言語(自由言語)
チューリングマシン
制限
大
• 正規言語は正規表現が表す言語である• 正規表現と有限オートマトンは等価である
正規言語<文脈自由言語<文脈依存言語<句構造言語
小
21
形式言語 :その他の言語 (参考)
チョムスキーの言語の分類
言語の階層 文法 受理するオートマトン
3 正規言語 有限オートマトン
2 文脈自由言語 プッシュダウンオートマトン
1 文脈依存言語 線形拘束オートマトン
0 句構造言語(自由言語)
チューリングマシン
• ほとんどのプログラミング言語は文脈自由文法で定義ALGOL型の言語(C, Java, C++, C# …)
• 文脈依存文法は、自然言語のモデルとして十分強力
22
有限オートマトンの応用例:
• 正規表現による言語処理・検索
• 要求分析・設計における仕様記述/検証
• コンパイラ(文脈自由文法)へつながる
• 認識技術
– 自然言語理解
– 文字認識
• セルオートマトン
– 計算可能性理論
– 複雑適応系、数理生物学
– 微小構造モデリング
23
クイズ
古代人の遺跡• すべての部屋を一度だけ通る最短の経路で,
元の部屋まで戻れ.そのとき宝を授ける.
古文書より• 入口の部屋は1つ.
• いくつかの部屋があり多くとも6部屋しかない.
• 各部屋(入口の部屋も含めて)には白い扉と黒い扉があり,各々
– 必ずどこかの部屋につながっている
– つながっている先は異なる部屋
– 行先は一定
村人の経験• どんなに迷っても出てくるときは,黒い扉も白い扉も偶数回通っていた.
24
出展: 川添愛: 白と黒のとびら オートマトンと形式言語をめぐる冒険,東京大学出版会 (2013)
空けると別々の部屋に瞬時に移る
クイズ(つづき)
• 3人の挑戦者の経験(失敗)
1.Aさん
2.Bさん
3.Cさん
25
入口の部屋 入口の部屋竜
人形置く
入口の部屋 入口の部屋竜
人形気づく
・・・
竜
入口の部屋 入口の部屋竜 竜
人形気づかず
1円置く
10円発見
10円置く
竜: 竜の部屋
人形気づく 人形気づく
図を書こう!
26
入口の部屋
A
B
C
竜
黒
白白
黒
Aさんのルート
まとめ
• 計算機の原理と、オートマトンとは関係が深い
• 形式言語とオートマトンとは対をなしている
• 有限オートマトンの応用は広い
27
Basic(初心者用言語)
Visual Basic
FORTRAN77 FORTRAN90/95
COBOL65COBOL言語(事務処理用言語)
COBOL2002
FORTRAN言語(科学計算用言語)
アセンブラ言語
Algol(BNF)
BCPL C ANSI C
C++
Simula Smalltalk Smalltalk80
Objective-C
Java
C#
Ruby
Lisp(関数型言語)
Prolog(論理型言語)
Lisp1.5 Common Lisp
Perl
PHP
JavaScript
awk
Python
スクリプト型言語
文脈自由文法
戻る 28