形式言語とオートマトン2010
-Formal Languages & Automata東京工科大学
コンピュータサイエンス学部
担当教員:亀田弘之
Copyright© 2010 School of Computer Science, Tokyo University of Technology
イントロダクション
2
Copyright© 2010 School of Computer Science, Tokyo University of Technology
Why we study FL & Atomatoa?
•
•
•
•
ディジタル回路設計・分析ソフトウェア
コンパイラーの字句解析ソフトウェア
大規模テキスト処理ソフトウェア
通信プロトコル等の検証ソフトウェア など
3
Copyright© 2010 School of Computer Science, Tokyo University of Technology
#include <stdio.h>
main( ){
float kingaku;
float teika = 100, shouhizei = 0.05;
kingaku = teika + teika*shouhizei;
printf(“%f\n”, kingaku);
}
4
Copyright© 2010 School of Computer Science, Tokyo University of Technology
イントロダクション
• 東京工科大学CS学部で開講されている
授業「言語プロセッサ」(3年後期)の授業を
ちょっとのぞいてみよう。
5
Copyright© 2010 School of Computer Science, Tokyo University of Technology
数式の例
• A = B*3.14 + C/A
• Area = 2*3.14*R
6
Copyright© 2010 School of Computer Science, Tokyo University of Technology
数式の解析
•
kingaku = teika + teika * shouhizei
7
Copyright© 2010 School of Computer Science, Tokyo University of Technology
数式の解析
1. 読み込み(文字列として)
“kingaku = teika + teika * shouhizei”
2. 要素(token)の切り出し
“kingaku”, “=“, “teika”, “+”, “*”,
“shouhizei”
3. 要素の相互関係の分析
=
kingaku
+
teika
*
teika
shouhizei
8
Copyright© 2010 School of Computer Science, Tokyo University of Technology
ソース言語
読み込み
字句解析
分析
構文解析
中間語生成
合成
コード生成
目的言語
9
Copyright© 2010 School of Computer Science, Tokyo University of Technology
数式の解析
1. 読み込み(文字列として)
“kingaku = teika + teika * shouhizei”
2. 要素(token)の切り出し
“kingaku”, “=“, “teika”, “+”, “*”, “shouhizei”
3. 要素の相互関係の分析
=
kingaku
+
teika
*
teika
shouhizei
10
Copyright© 2010 School of Computer Science, Tokyo University of Technology
数式の解析
1. 読み込み(文字列として)
“kingaku = teika + teika * shouhizei”
2. 要素(token)の切り出し
“kingaku”, “=“, “teika”, “+”, “*”, “shouhizei”
3. 要素の相互関係の分析
=
kingaku
+
teika
*
teika
shouhizei
11
Copyright© 2010 School of Computer Science, Tokyo University of Technology
数式の解析
1. 読み込み(文字列として)
“kingaku = teika + teika * shouhizei”
2. 要素(token)の切り出し
“kingaku”, “=“, “teika”, “+”, “*”, “shouhizei”
3. 要素の相互関係の分析
=
kingaku
+
teika
*
teika
shouhizei
12
Copyright© 2010 School of Computer Science, Tokyo University of Technology
数式の解析
1. 読み込み(文字列として) 読み込み
“kingaku = teika + teika * shouhizei”
2. 要素(token)の切り出し 字句解析
“kingaku”, “=“, “teika”, “+”, “*”, “shouhizei”
3. 要素の相互関係の分析 構文解析
=
kingaku
+
teika
*
teika
shouhizei
13
Copyright© 2010 School of Computer Science, Tokyo University of Technology
数式の解析
1. 読み込み
– ファイルからの入力技法
2. 字句解析
– 有限オートマトンの理論
– 正規文法(正規言語)
– 正規表現
3. 構文解析
– 線形有界オートマトン理論
– 文脈自由文法(文脈自由言語)
14
Copyright© 2010 School of Computer Science, Tokyo University of Technology
前提知識
• 形式言語とオートマトン
– 前期科目「形式言語とオートマトン」
– 抽象的・論理的な思考への慣れ
• プログラミング技法
– 今までいろいろと習ってきましたよね!
– 基本的な知識があれば一応OK
– ファイルの入出力が難しい人もいるかも…
15
Copyright© 2010 School of Computer Science, Tokyo University of Technology
学んで得られるもの
• 言語理論とオートマトン
– 抽象的・論理的な思考への慣れ
– ソフトウェア分野における基本的概念
• 正規表現 etc.
• プログラミング言語へのより深い理解
• プログラミング技法
– プログラミング力(知識)アップ
– 洗練されたアルゴリズムの理解
などなど
16
Copyright© 2010 School of Computer Science, Tokyo University of Technology
• 言語プロセッサ関連は、コンピュータサイエン
スの英知が集積されている!
• この授業を取った人は先見の明がある!
17
Copyright© 2010 School of Computer Science, Tokyo University of Technology
それでは基礎知識の話から
(今日の本題です。)
こんな風に話が続きます…
18
Copyright© 2010 School of Computer Science, Tokyo University of Technology
さて、本授業の内容に戻りましょう。
19
Copyright© 2010 School of Computer Science, Tokyo University of Technology
そもそも言語とはなにか?
オートマトンとは何か?
講義名:
「形式言語とオートマトン」
20
Copyright© 2010 School of Computer Science, Tokyo University of Technology
そもそも言語とはなにか?
オートマトンとは何か?
(CSでは言語をどうとらえるのか?)
=>言語理論
21
Copyright© 2010 School of Computer Science, Tokyo University of Technology
「形式言語とオートマトン」の授業の
概略を一気に眺めてみよう!
22
Copyright© 2010 School of Computer Science, Tokyo University of Technology
形式言語とオートマトン
Formal Languages and Automata
平成22年度開講科目
第1部
オートマトンとは
Automaton (pl. automata)
Αυτοματον(ギリシア語)
(pl. Αυτοματα)
一般的な意味:自動機械
24
I have a book.
英語だ!
25
Tut mir Leid.
???!
26
記号列
Automaton
Aha!
27
28
一般化
単語の一般化
I ⇔x1, have ⇔x2, a ⇔ x3, book ⇔ x4,
. ⇔ x5, ・・・, kanete ⇔ xn-1, ;⇔ xn
29
30
言語の形式的定義
単語w: X1, X2, X3, ・・・, Xn (はじめに単語ありき)
語彙V (Vocabulary) : 単語の集合
V = { X1, X2, X3, ・・・, Xn } (有限集合)
文(sentence): 単語の並び(単語の列)
(注)
– Vの要素( X1 や X2 など)は単語
– S1 = Xa Xb Xc Xd など
– でも何でも良いわけではないよね?!
31
例
語彙V={ birds, fly }
文:={
birds, fly,
birds birds, birds fly, fly birds, fly fly,
birds birds birds, birds birds fly,
birds fly birds, fly birds birds,
birds fly fly, fly birds fly, fly fly birds,
…}
(無限個存在する!)
32
考察
文は無限個存在する。
(単語は有限個)
英語として意味のあるものとそうでないものと
が混ざっている。
⇒ 英語として意味のある文をすべて集めた集合は、
1つの言語L(今の場合は英語)を定める。
⇒ 意味があるものとないものとを区別したい。
つまり、任意の文に対して、それが言語Lの文か
否かを判定したい。
33
そんなことできるのだろうか?
でも、人間はやっているよ!
じゃあ、できるんだね!(信念)
自動機械(オートマトン)を作ってみよう!
34
作成のためのアイデア
はじめに言語Lの文すべてを知っているならば、
下記のような機械ができる。
文S1
オートマトン
S1は言語Lの
文だよ!
S1 S2 S3
… Sn
35
問題点1
でも、
「言語Lの文すべてを知っている」
なんて、不可能だよ!
例:「2010年4月20日、形式言語とオートマトン
の授業が、講A303教室で、パワーポイントを用
いて行われた。」 という文をあなたは事前に
知っていましたか?
36
問題点2
もし何らかの方法により、事前に言語Lのすべての文
を知っていたとしても...
s = get_sentence();
if ( s ∈ Lの文の集合 ) then
s は Lの文である
else
s は Lの文ではない
end if
Lの文の集合が無限集合のときは、このプログラムは
停止しないことがある!!!
37
それではどうしようか?!
38
ここまでのまとめ
• 言語
– 意味のある文の集合
• 文法の必要性
– ある言語(例えば日本語)の文すべてを
あらかじめ知っているなんてことは不可能!
• オートマトン
– ある文が対象としている言語Lの文なのかを自動
判定する装置
39
Copyright© 2010 School of Computer Science, Tokyo University of Technology
どうも文法が大切らしい。
もう少し文法について学んでみよう!
40
Copyright© 2010 School of Computer Science, Tokyo University of Technology
41
Copyright© 2010 School of Computer Science, Tokyo University of Technology
形式言語とオートマトン
Formal Languages and Automata
平成22年度開講科目
第2部
文法とは?
その言語を使用する人たちが皆で守り従わな
ければならない言語に関する規則の総体。
43
文法は「言語政策」・「言語教育」のために重
要。
現在使われている日本語に関する言語規則
はどうなっているのか?
このような観点から本授業では文法を考える。
文法は、機械翻訳・電話通訳などの実現のた
めにも重要である。
44
さらにもう一歩考えをすすめて...
「あらゆる言語に共通の言語規則はある
の?」と考えるのが、「一般普遍文法」である。
これについて、少し詳しく話すと...
45
一般普遍文法(1)
前述のオートマトンの説明を思い起こすと…
すべての子供はやがて言葉を話しはじめる。
日本人のこどもも、エスキモーのこどもも、
エジプトのこどもも…
人種・民族にかかわらず話し始める。
でも、日本人は日本語、エスキモー人はエス
キモー語をしゃべり始める。Why?
46
Because…
その言語をしゃべる環境で育ったから?
環境が習得言語を決める?
でも、なぜ基本的に人は皆しゃべり始めるの?
ミミズはしゃべらないのに?(ホント?)
それは、...
47
ホントにしゃべれるよ
うになるのかなぁ
すべてのヒトは、
言語に依存しない普遍的な処理能力をもった装
置(device)を生得的に持っており、
個別言語に関する知識は後天的に獲得されるか
らだ。
僕にもこん
な装置がほ
しいなぁ…
これが私の基
本的考えです。
48
その知識は、「文法」という形で獲得される。
Chomskyはそのように考えた。
それでは彼の考えを見てみよう。
49
ここからが大切
50
Copyright© 2010 School of Computer Science, Tokyo University of Technology
文法の定義
文法G=( Vn, Vt, P, S ):
ただし、
Vn:
Vt:
P:
S:
非終端記号の集合
終端記号の集合
書き換え規則の集合
開始記号
51
文法
文法G=( Vn, Vt, P, S ):
ただし、
Vn:
Vt:
P:
S:
非終端記号の集合 <= 構文木構成要素の集合
終端記号の集合
<= 単語の集合
書き換え規則の集合
開始記号
52
例1-1
G=(Vn, Vt, P, S)
Vn = { S, NPs, NPo, VP, PN, DET, N }
Vt = { I, You, have, throw, a, the, book, ball }
P = {
①:S → NPs VP,
②:NPs → PN,
③:PN → I,
④:PN → You,
⑤:NPo → DET N,
⑥:VP → V NPo,
⑦:DET → a,
⑧:DET → the,
⑨:N → book,
⑩:N → ball,
⑪:V → have,
⑫:V → throw }
53
言語の定義
言語Lとは、文法Gにより生成されるあらゆる
文の集合のこと。
つまり、L=L(G)。
54
文法の分類
文法にはいくつかの種類がある。
それに応じて、処理装置・処理方法が異なっ
てくる。
55
ここまでのまとめ
• 文法 : G=( Vn, Vt, P, S ):
– ただし、
•
•
•
•
Vn:
Vt:
P:
S:
非終端記号の集合 <= 構文木構成要素の集合
終端記号の集合
<= 単語の集合
書き換え規則の集合
開始記号
• 言語 :L=L(G)
56
Copyright© 2010 School of Computer Science, Tokyo University of Technology
形式言語とオートマトン
Formal Languages and Automata
平成22年度開講科目
第3部
Copyright© 2010 School of Computer Science, Tokyo University of Technology
ここまでの復習
•
•
•
•
人間の頭の中には、言語処理装置がある。
すべての文を記憶しているわけではない。
文法として記憶している。
文法とは何か?
– 規範文法(Prescriptive Grammar)
– 記述文法(Descriptive Grammar)
• 形式文法と形式言語
58
Copyright© 2010 School of Computer Science, Tokyo University of Technology
形式文法と形式言語
• 文法G = ( Vn, Vt, P, S ):
– ただし、
• Vn(非終端記号の集合): 0 < #Vn < +∞
• Vt: 終端記号の集合:
0 < #Vt < +∞
• P: 書き換え規則の集合
{α→β| α, β ∈ (Vn∪Vt)*}
• S:
開始記号(S∈Vn)
• 言語L = L(G) = { x | S =*> x }
– ただし、S => ・・・ => x ∈ Vt
59
Copyright© 2010 School of Computer Science, Tokyo University of Technology
形式文法と形式言語(例)
• 文法G = ( Vn, Vt, P, S ):
– Vn ={S}, Vt={}
– P={ }
• 言語L = L(G) = { x | S =*> x }
60
Copyright© 2010 School of Computer Science, Tokyo University of Technology
言語の階層(重要)
• 言語は文法の種類に応じて、階層構造をなし
ている。
– 句構造言語
– 文脈依存言語
– 文脈自由言語
– 正規言語
⇔
⇔
⇔
⇔
句構造文法
文脈依存文法
文脈自由文法
正規文法
Chomsky階層
(Chomsky Hierarchy)
とも言う。
一般的
特殊的
61
Copyright© 2010 School of Computer Science, Tokyo University of Technology
重要
Chomsky階層
PSG
CSG
CFG
RG
62
Copyright© 2010 School of Computer Science, Tokyo University of Technology
言語の包含関係
L(PSG) ⊃ L(CSG) ⊃ L(CFG) ⊃ L(RG)
このうち、大切なのはCFGとRG。
63
Copyright© 2010 School of Computer Science, Tokyo University of Technology
CFGとRG
• CFG(文脈自由文法):
– プログラミング言語設計
– コンパイラの構文解析
– 自然言語処理(機械翻訳・仮名漢字変換)
• RG(正規文法):
– 正規表現(検索・コンパイラの語彙解析)
64
Copyright© 2010 School of Computer Science, Tokyo University of Technology
解析手法は重要なので
「言語プロセッサ」の授業で取り上げます。
• 機械翻訳・通訳電話などの自然言語処理
• コンパイラ
などで応用されている。
65
Copyright© 2010 School of Computer Science, Tokyo University of Technology
参考文献
• 文法:
– 英語学概論 -三大文法の流れと特徴-,松井
千枝,朝日出版(1980).
66
Copyright© 2010 School of Computer Science, Tokyo University of Technology
ここまでのまとめ
• 言語には階層がある(Chomsky階層)
• 正規言語(正規文法)は語句解析に深い関係
がある。
• 文脈自由言語(文脈自由文法)は構文解析に
深い関係がある。
67
Copyright© 2010 School of Computer Science, Tokyo University of Technology
もう少し話を進めましょう!
68
Copyright© 2010 School of Computer Science, Tokyo University of Technology
文法と言語とオートマトン
•
•
•
•
句構造文法(PSG)
文脈依存文法(CSG)
文脈自由文法(CFG)
正規文法(RG)
69
Copyright© 2010 School of Computer Science, Tokyo University of Technology
言語の階層(重要)
• 言語は文法の種類に応じて、階層構造をなし
ている。
– 句構造言語
– 文脈依存言語
– 文脈自由言語
– 正規言語
⇔
⇔
⇔
⇔
句構造文法
文脈依存文法
文脈自由文法
正規文法
Chomsky階層
(Chomsky Hierarchy)
とも言う。
一般的
特殊的
70
Copyright© 2010 School of Computer Science, Tokyo University of Technology
重要
Chomsky階層
PSG
CSG
CFG
RG
71
Copyright© 2010 School of Computer Science, Tokyo University of Technology
文法と言語とオートマトン
----------------------------------------------------文 法
処理装置
----------------------------------------------------• 句構造文法(PSG)
⇔ ?
• 文脈依存文法(CSG)
⇔ ?
• 文脈自由文法(CFG)
⇔ ?
• 正規文法(RG)
⇔ ?
----------------------------------------------------72
Copyright© 2010 School of Computer Science, Tokyo University of Technology
文法と言語とオートマトン
---------------------------------------------------------------文 法
処理装置
---------------------------------------------------------------• 句構造文法(PSG)
⇔
Turing 機械
• 文脈依存文法(CSG) ⇔
線形有界オートマトン
• 文脈自由文法(CFG) ⇔
プッシュダウンオートマトン
• 正規文法(RG)
⇔
有限オートマトン
---------------------------------------------------------------73
Copyright© 2010 School of Computer Science, Tokyo University of Technology
まずは有限オートマトンから
74
Copyright© 2010 School of Computer Science, Tokyo University of Technology
有限オートマトンのイメージ
• FAの概観
a1 a2
セル
入力記号
・・・
ai-1 ai
・・・
・・・
an
qk
入力テープ
内部状態
ヘッド
75
Copyright© 2010 School of Computer Science, Tokyo University of Technology
有限オートマトンの定義
FA = ( K, Σ, δ, q0, F )
ただし、
K : 状態の集合( Kは有限集合)
Σ : 入力アルファベット(Σは有限集合)
δ : 状態遷移関数
δ: K×Σ∋( a, qi ) → qj ∈ K
q0 : 初期状態
F : 最終状態の集合 ( F ⊆ K )
76
Copyright© 2010 School of Computer Science, Tokyo University of Technology
77
Copyright© 2010 School of Computer Science, Tokyo University of Technology
次回、この続きを話します。
• 有限オートマトン
– 決定性有限オートマトン
– 非決定性有限オートマトン
•
•
•
•
正規表現
正規表現から有限オートマトンの生成
状態数最少有限オートマトン
正規表現→非決定性有限オートマトン→決
定性有限オートマトン→状態数最少有限オー
トマトン
78
Copyright© 2010 School of Computer Science, Tokyo University of Technology
79
Copyright© 2010 School of Computer Science, Tokyo University of Technology
この授業のキーワード
• (形式)言語
• 正規文法(正規表現)
• 文脈自由文法
(文脈自由言語)
•
•
•
•
オートマトン
有限状態オートマトン
線形有界オートマトン
プッシュダウンオートマ
トン
• 決定可能性
• トラクタブル など
80
Copyright© 2010 School of Computer Science, Tokyo University of Technology
© Copyright 2026 ExpyDoc