オートマトンと言語

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