Presentation is loading. Please wait.

Presentation is loading. Please wait.

形式言語とオートマトン2008 ー有限オートマトンー

Similar presentations


Presentation on theme: "形式言語とオートマトン2008 ー有限オートマトンー"— Presentation transcript:

1 形式言語とオートマトン2008 ー有限オートマトンー
Tokyo University of Technology School of Computer Science

2 今日のポイント 有限オートマトン(復習・確認) 正規表現 正規表現とオートマトンの関係
最簡型オートマトンの作り方 (DFA -> min-DFA)

3 まずは、復習から

4 言語(文法)とオートマトン 言   語   処 理 装 置 句構造言語(PSL) ⇔ Turing 機械 文脈依存言語(CSL) ⇔ 線形有界オートマトン 文脈自由言語(CFL) ⇔ プッシュダウンオートマトン 正規言語(RL) ⇔ 有限オートマトン まずはここからかじってみようかな 計算モデルやプログラミング言語設計に 深くかかわっています。

5 さて、…

6 有限オートマトンとは(復習) (英) Finite Automaton (FA)    finite automata (pl.)

7 いろいろな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 英語も覚えましょう

8 決定性有限オートマトンの定義 DFA M = ( K, Σ, δ, q0, F ) ただし、 K : 状態の集合( Kは有限集合)
Σ : 入力アルファベット(Σは有限集合) δ : 状態遷移関数 δ: K×Σ∋(qi , a ) → qj ∈ K q0 : 初期状態 F : 最終状態の集合 ( F ⊆ K )

9 例:決定性有限オートマトンM1 DFA M1 = ( K, Σ, δ, q0, F ) ただし、 K : { i, f, 1, 2, 3}
Σ : { a, b } δ : 状態遷移関数 (次の頁参照) q0 : i F : { f }

10 状態遷移関数δ 状態 入力 a 入力 b i 1 2 3 f

11 M1の状態遷移図 a b i a a a b a b b

12 非決定性有限オートマトンの定義 NFA M = ( K, Σ, δ, q0, F ) ただし、 K : 状態の集合( Kは有限集合)
Σ : 入力アルファベット(Σは有限集合) δ : 状態遷移関数 δ: K×Σ∋(qi, a ) → Q ⊂ K q0 : 初期状態 F : 最終状態の集合 ( F ⊆ K )

13 例:非決定性有限オートマトンM2 NFA M2 = ( K, Σ, δ, q0, F ) ただし、
K : { i, f1, f2, 1, 2 } Σ : { a, b } δ : 状態遷移関数 (次の頁参照) q0 : i F : { f1, f2 }

14 状態遷移関数δ 状態 入力a 入力b i i, 2 i, 1 1 f1 2 f2 非決定性

15 M2の状態遷移図 a, b a, b i a 2 a f2 b 1 a, b b f1

16 NFA M3の状態遷移図 a, b b i 2 f2 a a ε ε遷移(非決定性の要因) 1 a, b b f1

17 ここまでは定義の復習

18 もう少し具体例を 教科書の などを見なれること。図の意味(FAの動作)が 分かるようになりましょう。 図2.8 (p.37)

19

20 練習問題 次ページのFA(状態遷移図で記述されている)を、文章の形で記述してみてください。 つまり、FAを の5つ組として記述しなさい。
状態の集合 K 入力アルファベット Σ 状態遷移関数 δ:K×Σ → K (表形式でもOK) 初期状態 最終状態の集合F の5つ組として記述しなさい。

21 練習問題(続き) 教科書の それぞれ。 図2.8 (p.37) 問2.3 (p.39) 図2.9 (p.41) 問2.4 (p.43)
 それぞれ。

22 新しい話に入りましょう! 正規表現 (regular expressions) 正規表現は文字列の集合を現すのに便利! CSにとっては常識です。

23 例えば、… 設定: 問題:ファイルを名前で探したい とあるディレクトリに以下のファイルがある ファイル名が file で始まるもの
file1 file2 file3 infile1 infile12 outfile1 outfile2 tmpfile README123 問題:ファイルを名前で探したい ファイル名が file で始まるもの ファイル名に file が含まれているもの ファイル名が 2 で終わっているもの ファイル名末尾に3桁の数字が付いているもの こんなとき、正規表現が活躍する

24 (自由課題)調べてみよう Linuxでの ls コマンド
Linuxでの grep コマンド or egrep コマンド などでの正規表現(メタ文字)はどうなっているか? (注)これらは、本授業で取り扱う正規表現とは少し異なっています。いわば拡張正規表現となっています。本授業の正規表現が、本来の正規表現です。 参考文献 ・詳説 正規表現, Jeffrey E. F. Friedl, O’Reilly Japan(2003).

25 これからの話の流れ

26 これからの話の流れ 正規表現 ー> NFA NFA ー> DFA DFA ー> 状態数最小DFA
 (例で詳しく練習しますので、しっかり付いて 来てください。)

27 それでは正規表現の定義から

28 正規表現は、文字列の集合を表現・記述する。
正規表現は言語を記述する。 例えば、正規表現 a|b は 文字列 a と b の2つを意味する。 つまり。正規表現 a|b = { a, b } といった具合。

29 正規表現の例 文字 a だけからなる言語 { a } は正規表現で a と書く。
文字列 abc だけからなる言語 { abc } は正規表現で abc と書く。 言語 { aaa } は正規表現で aaa または a3 と書く。 言語 { a, b } は正規表現で a|b または a+b と書く。

30 正規表現の例(2) 言語 { a, aa, aaa, aaaa, aaaaa, …. } は 正規表現で a† と書く。(“a ダガー”と読む) 空文字列は正規表現の1つで、εと書く。 (“エプシロン”と読む) 言語 { ε, b, bb, bbb, bbbb, …} は正規表現で b* と書く。 (“b アスタリスク”とか“b スター”とか”b星印”などと読む) (参考) asterisk , epsilon

31 正規表現の定義 空文字列記号εは空文字列を意味する正規表現。
文字 x がアルファベットAの要素ならば、x は { x } を意味する正規表現。 RとSが正規表現ならば、正規表現 R | S あるいは R+S は正規表現Rの表す文字列の集合Aと正規表現Sが表す文字列の集合Bとの和集合。 正規表現 R・S あるいは RS は、Rの表す文字とSの表す文字とを連結した(その順に並べた)したものすべてからなる集合。 Rが正規表現ならば、 R*は、Rの表す文字をゼロ個以上連接した(並べた)ものすべてからなる集合。

32 正規表現の定義(再) アルファベットA上の正規表現とは、以下の規則によって作られるもの(表現)のことである。 空文字列εは正規表現である。
Aの要素 x ( x∈A ) は正規表現である。 RとSがともに正規表現ならば、 R|S  RS  R* はいずれも正規表現である。

33 練習:対応する言語は? abcd a* ab* (ab)* bc(2|4)* a†bcd*

34 例:A = { a, b, c } 上の正規表現 ε a c acb ab|b c(cb|a) a(a|b)*cba

35 練習:正規表現で書いてみよう { automaton }
{ file0, file1, file2, file3, …, filen, … } { ε, ab, aabb, aaabbb, aaaabbbb, … }

36 正規表現をFAで表現してみよう (注)このようなことができることは、証明されています。

37 R=ε ε 1 f1

38 2.R=a a 1 f1

39 3.R|S R 1 f1 S

40 4.RS 1 f1 R S

41 5.R* ε ε f1 1 ε R ε

42 練習 次の正規表現αをFAで表現しなさい。 α= a(a|b)*bb 教科書pp 参照のこと。

43 練習はまた次回の復習でやりましょう

44 次のそして今日最後の話し 状態数が少ないFAの存在とその求め方

45 M1の状態遷移図 a b i a a a b a b b

46 M1が受理する文字列は? a b i a a a b a b b

47 M1が受理する文字列は? 例えば、 (考えてみてください。)

48 M1と等価なFAの状態遷移図(No.2) a b i a 1,2 a b a b 3

49 FA と L(G) との関係 正規文法G 正規言語L(G) 有限オートマトンM 1つのL(G)に対して、複数のFAがあり得る。

50 用語定義と問題提起 能力的に等価なFA群のうち、状態数が最も少ないものを、「最少化FA」あるいは「最簡形FA」と呼ぶことにしよう。
  (注)このようなFAの存在はOKですよね。     Why?(考えてみてください。)

51 Myhill-Nerodeの定理 いま、受理・生成能力が同じFAの中で、状態数が最も少ないFA(最簡型FA)を求めたい。その理論的根拠を与えてくれるのが標記の定理である。 理論的にはとても重要な定理

52 Myhill-Nerode関係 定義: 到達不可能 ⇔ 初期状態から到達することのできないこと。そのような状態を到達不可能状態と呼ぶ。
ちょっとだけ覗いてみよう! Myhill-Nerode関係 定義: 到達不可能 ⇔ 初期状態から到達することのできないこと。そのような状態を到達不可能状態と呼ぶ。 定理: 到達不可能状態は、O( |K| |Σ| )で見出される。 定義: FAの2つの状態pとqが等価 ⇔[δ(p, w) ∈F ⇔δ(q,w)∈F for any w∈Σ*]

53 Myhill-Nerodeの定理 次の3つの命題は等価である。 アルファベットS上の言語LがDFAで認識される。
言語L に対し、関係RL は有限指標である。

54 この定理で得られる同値類に着目する [p]: pと等価な状態からなる集合(同値類) DFAに対する同値類オートマトン:
Q’={[q]| q∈Q} Σ’=Σ q0’=[q0] F’={[q]| q∈F} δ’([q], a) = [δ(q,a)]

55 得られる知見 定理: 同値類オートマトンA’はもとのFA A’と同じ言語を受理する。
Myhill-Nerodeの定理を証明する際に、この同値類の作り方も得られる。その作り方が、最簡型DFA作成手順そのものとなっている。

56 こんな理屈もあるが、… 後日詳しくやりましょう。 いまは気にしないでおきましょう。

57 最簡化FAの求め方 いろいろ知られている。 わかりやすいものは以下のものです。

58 最簡型DFAを求める手順 重要 P0 = { F, K-F } 状態の集合Kを2つに分割する。 n=0とおく。
任意のnについて、Pnの細分化を行い、その結果を、Pn+1とする。 Pn = Pn+1 となりまで手順2を繰り返す。

59 具体例で練習しましょう 図2.18 (p.53)

60 今日はここまで。お疲れ様。 URL: http://kameken.clique.jp/ の右下を見てください。
次回は、今回までの復習と第3章です。 余力があったら予習してみてください。


Download ppt "形式言語とオートマトン2008 ー有限オートマトンー"

Similar presentations


Ads by Google