オートマトンと言語

形式言語とオートマトン2012
ー有限オートマトンー
第3日目
Tokyo University of Technology
School of Computer Science
© 平成24年5月8日 東京工科大学
今日のポイント
1.
2.
3.
4.
有限オートマトン(復習・確認)
正規表現 (regular expression)
正規表現とオートマトンの関係
最簡型オートマトンの作り方
(DFA -> min-DFA)
超高速オートマトン?
2
まずは、復習から
不学
亦而
説時
乎習
之
By Confucius (孔子)
3
言語(文法)とオートマトンの関係
---------------------------------------------------------------言語 (languages)
処理装置 (devices)
---------------------------------------------------------------• 句構造言語(PSL)
⇔
Turing 機械
• 文脈依存言語(CSL) ⇔
線形有界オートマトン
• 文脈自由言語(CFL) ⇔
プッシュダウンオートマトン
• 正規言語(RL)
⇔
有限オートマトン
---------------------------------------------------------------まずはここから
かじってみよう
かな
計算モデルやプログラミング言語設計に
深くかかわっています。
4
さて、…
5
有限オートマトンとは(復習)
• (英) Finite Automaton (FA)
finite automata (pl.)
なるほど。
有限オートマトンとは、
内部状態の個数が有限個で
あるオートマトンのことか…
6
いろいろなFA
• Finite Automaton
– Deterministic Finite Automaton (DFA) or
Deterministic Finite State Machine
– Nondeterministic Finite Automaton (NFA) or
Nondeterministic Finite State Machine
– ε-NFA or
NFA with ε-moves or
NFA-lambda
英語も覚えましょう
7
決定性有限オートマトンの定義
DFA M = ( K, Σ, δ, q0, F )
ただし、
K : 状態の集合( Kは有限集合)
Σ : 入力アルファベット(Σは有限集合)
δ : 状態遷移関数
δ: K×Σ∋(qi , a ) → qj ∈ K
q0 : 初期状態
F : 最終状態の集合 ( F ⊆ K )
8
(ちょっと一言?)
Did you
know it?
• 「入力アルファベット」とは、
テープ上に配列される記号群のこと。
• なぜ、「入力記号の集合」と呼ばずに、
「入力アルファベット」と呼ぶのでしょか?
• それは、テープ上に並べられた記号列は1つの
単語を表しているとみなす立場があり、その際、
個々の入力記号は単語を構成する文字そのも
のである。そしてそのような文字の集合を一般
にはアルファベット(字母)と呼ぶためである。
• なお、本講義では入力記号ひとつひとつが単語
を抽象化したものとする立場をとっています。 9
例:決定性有限オートマトンM1
DFA M1 = ( K, Σ, δ, q0, F )
ただし、
K : { i, f, 1, 2, 3}
Σ : { a, b }
δ : 状態遷移関数
(次の頁参照)
q0 : i
F : {f}
10
状態遷移関数δ
状態
入力 a 入力 b
i
1
ー
1
2
3
2
3
f
2
2
2
3
f
f
11
問題 状態遷移図を示せ。
DFA M1 = ( K, Σ, δ, q0, F )
ただし、
K : { i, f, 1, 2, 3}
Σ : { a, b }
δ : 状態遷移関数
q0 : i
F : {f}
状態
入力 a 入力 b
i
1
ー
1
2
3
2
3
f
2
2
2
3
f
f
12
状態
M1の状態遷移図
a
i
a
a
1
b
入力 a 入力 b
i
1
ー
1
2
3
2
3
f
2
2
2
3
f
f
b
a
2
f
a
b
b
3
13
練習問題
• DFA M1 により受理される文字列は次のうち
のどれか?
①
②
③
④
⑤
aaaaa
aabb
abbabb
bababaa
aaaabb
14
確認問題
• DFA M1 により受理される文字列を5つ以上
作ってみなさい。
この問題ができなかった人は、
もう一度DFAの定義から勉強しなおしましょう
15
学力定着確認問題
• DFA M1 により受理される文字列について
以下の問①と②に答えよ。
① 文字列長が最も短いものを
すべて列挙しなさい。
② 文字列長が4以下のものを
すべて列挙しなさい。
不学
亦而
説時
乎習
之
16
非決定性有限オートマトンの定義
NFA M = ( K, Σ, δ, q0, F )
ただし、
K : 状態の集合( Kは有限集合)
Σ : 入力アルファベット(Σは有限集合)
δ : 状態遷移関数
δ: K×Σ∋(qi, a ) → Q ⊂ K
q0 : 初期状態
F : 最終状態の集合 ( F ⊆ K )
17
例:非決定性有限オートマトンM2
NFA M2 = ( K, Σ, δ, q0, F )
ただし、
K : { i, f1, f2, 1, 2 }
Σ : { a, b }
δ : 状態遷移関数
(次の頁参照)
q0 : i
F : { f1, f2 }
18
状態遷移関数δ
状態
入力a
入力b
i
i, 2
i, 1
1
ー
f1
2
f1
f2
f2
f1
f2
-
f1
f2
非決定性
19
確認問題
20
M2の状態遷移図
a, b
a, b
a
i
a
2
f2
b
1
a, b
b
f1
状態
入力a
入力b
i
i, 2
i, 1
1
ー
f1
2
f1
f2
f2
f1
f2
-
f1
f2
21
問題
• FDA M2 により受理される文字列は次のうち
のどれか?
①
②
③
④
aaaaa
aabb
abbabb
bababaa
22
問題
• FDA M2 により受理される文字列を5つ以上
作ってみなさい。
この問題ができなかった人は、
もう一度NFAの定義から勉強しなおしましょう
23
NFA M3の状態遷移図
a, b
b
a
i
ε
a
2
f2
ε遷移(非決定性の要因)
1
a, b
b
f1
24
問題
• FDA M3 により受理される文字列は次のうち
のどれか?
①
②
③
④
aaaaa
aabb
abbabb
bababaa
25
問題
• FDA M3 により受理される文字列を5つ以上
作ってみなさい。
この問題ができなかった人は、
もう一度ε-NFAの定義から勉強しなおしましょう
26
ここまでは定義の復習
27
もう少し具体例を
• 教科書の
– 図2.8 (p.37)
– 問2.3 (p.39)
– 図2.9 (p.41)
– 問2.4 (p.43)
– 図2.11 (p.45)
などを見なれること。図の意味(FAの動作)が
分かるようになりましょう。
28
29
練習問題
• 次ページのFA(状態遷移図で記述されている)を、
文章の形で記述してみてください。
つまり、FAを
– 状態の集合 K
– 入力アルファベット Σ
– 状態遷移関数 δ:K×Σ → K
(表形式でもOK)
– 初期状態
– 最終状態の集合F
の5つ組として記述しなさい。
30
練習問題(続き)
•
教科書の
①
②
③
④
⑤
図2.8 (p.37)
問2.3 (p.39)
図2.9 (p.41)
問2.4 (p.43)
図2.11 (p.45)
それぞれ。
31
新しい話に入りましょう!
• 正規表現 (regular expressions)
正規表現は文字列の集合を表すのに便利!
CSにとっては常識です。
32
例えば、…
•
設定:
– とあるディレクトリに以下のファイルがある
file1 file2 file3
outfile1 outfile2
•
infile1 infile12
tmpfile102 README123
問題:ファイルを名前で探したい
1.
2.
3.
4.
ファイル名が file で始まるもの
ファイル名に file が含まれているもの
ファイル名が 2 で終わっているもの
ファイル名末尾に3桁の数字が付いているもの
こんなとき、正規表現が活躍する
33
(自由課題)調べてみよう
• Linuxでの ls コマンド
• Linuxでの grep コマンド または egrep コマンド
などでの正規表現(メタ文字)はどうなっているか?
(注)これらは、本授業で取り扱う正規表現とは少し
異なっています。いわば拡張正規表現となっていま
す。本授業の正規表現が、本来の正規表現です。
参考文献
・詳説 正規表現, Jeffrey E. F. Friedl, O’Reilly Japan(2003).
34
これからの話の流れ
35
これからの話の流れ
正規表現 ー> NFA
NFA
ー> DFA
DFA
ー> 状態数最小DFA
(例で詳しく練習しますので、
しっかり付いて来てください。)
36
それでは正規表現の定義から
37
ウォーミングアップ
• 正規表現は、文字列の集合を表現・記述する。
• つまり、正規表現は1つの言語を記述する。
• 例えば、正規表現 a|b は 文字列 a と b の2
つを意味する。
この場合は、正規表現 a|b = { a, b } といった
具合。
38
正規表現の例
落ち着いて
読んでください
• 文字 a だけからなる言語 { a } は
正規表現では a と書く。
• 文字列 abc だけからなる言語 { abc } は
正規表現で abc と書く。
• 言語 { aaa } は正規表現で
aaa または a3 と書く。
• 言語 { a, b } は正規表現で
a|b または a+b と書く。
ここまではいいですか?
39
正規表現の例(2)
• 言語 { a, aa, aaa, aaaa, aaaaa, …. } は
正規表現で a† と書く。(“a ダガー”と読む)
• 空文字列は正規表現の1つで、εと書く。
(“エプシロン”と読む)
• 言語 { ε, b, bb, bbb, bbbb, …} は正規表現
で b* と書く。
(“b アスタリスク”とか“b スター”とか”b星印”
などと読む)
(参考) dagger, asterisk , epsilon
40
(ちょっと一言?)
• 現代ギリシア文字(24文字)の本当の読み方
Α α
アルファ
Ι ι
イョタ
Ρ ρ
ロ
Β β
ヴィタ
Κ κ
カパ
Σ σ ς
シグマ
Γ γ
ガンマ
Λ λ
ラムザ
Τ τ
タフ
Δ δ
ゼルタ
Μ μ
ミ
Υ υ
イプシロン
Ε ε
エプシロン
Ν ν
ニ
Φ φ
フィ
Ζ
ζ
ズィタ
Ξ ξ
クシ
Χ χ
ヒ
Η
η イタ
Ο ο
オミクロン
Ψ ψ
プシ
Π π
ピ
Ω ω
オメガ
Θ θ
シタ
留学生の諸君へ: 日本ではギリシャ文字の読み方が人によりバラバラです。
通常はギリシャ文字を英語読みしたものを採用しています。
41
チャレンジ問題
それでは、正規表現 a|b* が表しているのはつ
ぎのどれですか?
①
②
③
④
{ a, b }
{ a, aa, aaa, ・・・, b, bb, bbb, ・・・ }
{ ε, a, b, bb, bbb, ・・・ }
{ ε ab, abab, ababab, ・・・ }
42
正規表現の定義
1. 空文字列記号εは空文字列を意味する正規表現。
2. 文字 x がアルファベットAの要素ならば、x は { x } を
意味する正規表現。
3. RとSが正規表現ならば、正規表現 R | S あるいは
R+S は正規表現Rの表す文字列の集合Aと正規表
現Sが表す文字列の集合Bとの和集合。
4. 正規表現 R・S あるいは RS は、Rの表す文字列と
Sの表す文字列とをこの順を保って連結した(その順
に並べ繋ぎ合せた)文字列すべてからなる集合。
5. Rが正規表現ならば、 R*は、Rの表す文字列をゼロ
個以上連接した(並べた)ものすべてからなる集合。
このような定義文は、正確に延べようとすればするほどますます
一般には分かりにくいものになります。すぐに理解できないのは
普通です。安心してください。でも今理解しましょう。
43
正規表現の定義(再)
アルファベットA上の正規表現とは、以下の規
則によって作られるもの(表現)のことである。
1. 空文字列εは正規表現である。
2. Aの要素 x ( x∈A ) は正規表現である。
3. RとSがともに正規表現ならば、
R|S RS R*
はいずれも正規表現である。
44
練習:
以下の正規表現が表す言語は?
① abcd
② a*
③ ab*
④ (ab)*
⑤ bc(2|4)*
⑥ a†bcd*
45
例:アルファベットA = { a, b, c } 上の正規表現
•
•
•
•
•
•
•
ε
a
c
acb
ab|b
c(cb|a)
a(a|b)*cba
46
練習:正規表現で書いてみよう
• { automaton }
• { file0, file1, file2, file3, …, filen, … }
• { ε, ab, aabb, aaabbb, aaaabbbb, … }
注意! 難問が含まれています。
47
正規表現をFAで表現してみよう
(注)このようなことができることは、
数学的に証明されています。
任意の正規表現に対して、それが表す
言語Lをちょうど受理するFAが存在する。
また、この逆も成り立つ。
48
1. R=ε
ε
i
f1
49
2.R=a
i
a
f1
50
3.R|S
R
f1
i
S
51
4.RS
i
R
S
f1
52
5.R*
ε
ε
ε
R
i
f1
ε
53
練習
多少の修業が
必要です。
• 次の正規表現αをFAで表現しなさい。
α= a(a|b)*bb
教科書pp.143-151 参照のこと。
54
この練習は次回やりましょう。
どうすればできそうか、お茶でも飲み
ながら考えてみてください。
55
次のそして今日最後の話し
• 状態数が最も少ないFAの存在とその求め方
56
M1の状態遷移図
a
i
a
a
1
b
b
a
2
f
a
b
b
3
57
M1が受理する文字列は?
a
i
a
a
1
b
b
a
2
f
a
b
b
3
58
M1が受理する文字列は?
• 例えば、
(すでにやりましたが、再度考えてみて
ください。)
59
M1と等価なFAの状態遷移図(No.2)
a
i
a
b
a
1,2
f
a
b
b
3
60
定 義
FA同士が等価とはどういう意味?
• 2つのFA M1 と M2 とがあり、これらが等価で
あるとは、 M1 が受理する文字列はM2も受理
するとともに、 M2 が受理する文字列はM1 も
受理するということ。
61
FA と L(G) との関係
• 正規文法G
• 正規言語L(G)
• 有限オートマトンM
L(G)
M1
M2
M3
• 1つのL(G)に対して、複数のFAがあり得る。
62
• 能力的に等価なFAがある。
用語定義と問題提起
• 能力的に等価なFA群のうち、状態数が最も
少ないものを、「最少化FA」あるいは「最簡型
FA」と呼ぶことにしよう。
• ここで、「最簡型FA」はどうやって求めたらい
いのだろうか?
一般的な手続きはどうなっているのか?
(注)このようなFAの存在はOKですよね。
Why?(考えてみてください。)
63
Myhill-Nerodeの定理
• いま、受理・生成能力が同じFAの中で、状態
数が最も少ないFA(最簡型FA)を求めたい。
その理論的根拠を与えてくれるのが標記の
Myhill-Nerodeの定理である。
理論的にはとても
とても重要な定理
64
ちょっとだけ覗いてみよう!
Myhill-Nerode関係
• 定義: 到達不可能
⇔ 初期状態から到達することのできないこと。
そのような“状態”を到達不可能状態と呼ぶ。
• 定理: 到達不可能状態は、O( |K| |Σ| )の
計算量で見い出される。
• 定義(Myhill-Nerodeの関係):
FAの2つの状態pとqが等価
⇔[δ(p, w) ∈F ⇔δ(q,w)∈F
for any w∈Σ*]
65
Myhill-Nerodeの定理
次の3つの命題は等価である。
1. アルファベットS上の言語Lが
DFA M で認識される。
2. 言語L は、右不変でかつ有限指標な
同値関係における同値類の和集合である。
3. 言語L に対し、関係RL は有限指標である。
後日説明します。
66
この定理で得られる同値類に着目する
• [p]: pと等価な状態からなる集合(同値類)
• DFA M に対する同値類オートマトン:
Q’={[q]| q∈Q}
Σ’=Σ
q0’=[q0]
F’={[q]| q∈F}
δ’([q], a) = [δ(q,a)]
67
得られる知見
• 定理: 同値類オートマトンはもとのFAと同じ
言語を受理する。
• Myhill-Nerodeの定理を証明する際に、この
同値類の作り方もいっしょに得られる。その
作り方が、最簡型DFA作成手順そのものと
なっている。
68
こんな理屈もありますが、…
• 後日詳しくやりましょう。
いまは気にしないでおきましょう。
69
最簡型FAの求め方
• いろいろ知られている。
• わかりやすいものは以下のものです。
70
最簡DFAを求める手順
重要
1. P0 = { F, K-F } 状態の集合Kを2つに
分割する。 n=0とおく。
2. 任意のnについて、Pnの細分化(分割)を
行い、その結果を、Pn+1とする。
3. Pn = Pn+1 となるまで手順2を繰り返す。
71
具体例で説明しましょう
• 図2.18 (p.53)
72
今日はここまで。お疲れ様。
• 次回は、今回までの復
習と第2章の最簡型DFA
を求める練習です。
余力があったら予習し
てみてください。
73
クールダウン問題
問題1 FAにはどんな種類があるか?
74
今日のポイント(再掲)
1.
2.
3.
4.
有限オートマトン(復習・確認)
正規表現 (regular expression)
正規表現とオートマトンの関係
最簡型オートマトンの作り方
(DFA -> min-DFA)
超高速オートマトン?
75