形式言語 と オートマト 第9回 鳥取大学工学研究科 情報エレクトロニクス専攻 田中美栄子 前回の授業では 有限オートマトン 正規文法 プッシュダウン オートマトン 文脈自由文法 形式言語とオートマト 本日の予定 形式言語とオートマト 前回の授業では 有限オートマトンよって受理され る言語を生成するシステムとして 正規文法や文脈自由文法 を考えた 形式言語とオートマト 今回の授業では さらに,その文法の制限を緩める ことにより,有限オートマトンに比べて 能力の高いオートマトンに対応する 形式言語とオートマト 定義 5.1 文 法 G: 文法 G N , , P, S0 N: 非終端記号の有限集合 Σ: 終端 記号の有限集合(アルファベット) P: 書き換え規則 S: 初期記号 (𝑆 ∈ 𝑁) 形式言語とオートマト 記号 ξ から書き換えを何回か(0回も含む)行う ことで記号列 η が導出されるとき ξ ⇒∗ 𝜂 形式言語とオートマト と表す 書き換え則 𝑝: 𝛼 → 𝛽について、𝜶を左辺、𝜷を右辺という 𝑝: 𝛼 → 𝛽 ξ1 𝛼ξ2 ⇒ ξ1 𝛽ξ2 適用可能な 記号列 適用結果の 記号列 書き換え規則 𝑝: 𝛼 → 𝛽の適用 形式言語とオートマト 文法Gで生成される w および生成される言語𝐿(𝐺)は 次のように定義される 𝑆 ⇒∗ 𝑤, 𝑤 ∈ Σ ∗ 𝐿 𝐺 = 𝑤 𝑆 ⇒∗ 𝑤, 𝑤 ∈ Σ∗ } 形式言語とオートマト 文法例1(文脈自由文法) ノートをとって考えましょう 文法(grammar) 非終端記号(nonterminal) 終端記号(terminal) 生成規則(production rule) 初期記号(initial symbol) G N, , P, S0 N {S} {a, b} P {S aSb, S ab} S0 S この文法が生成する言語は? 形式言語とオートマト 文法例1(文脈自由文法) 文法(grammar) 非終端記号(nonterminal) 終端記号(terminal) 生成規則(production rule) 初期記号(initial symbol) G N, , P, S0 N {S} {a, b} P {S aSb,S ab} S0 S =導出= 3 3 n 1 n 1 n n S aSb aSb aaSbb a Sb a Sb a b 生成される言語: 形式言語とオートマト L {a nbn | n 1} 文法例2(文脈自由文法) ノートをとって考えましょう 言語 L {a b n 2n n 1} を生成する文脈自由文法を構成しなさい P {S aSb, S ab} 形式言語とオートマト 文法例2(文脈自由文法) 言語 L {a b n 2n n 1} を生成する文脈自由文法を構成しなさい G N, , P, S0 N {S} {a, b} P {S aSbb, S abb} S0 S 形式言語とオートマト 文法例3(文脈自由文法) ノートをとって考えましょう 言語 L {a b | 1 ≦ m ≦ n ≦ 2m} m n を生成する文脈自由文法を構成しなさい 先の2例は使えそうだ! 形式言語とオートマト 文法例3(文脈自由文法) 二例の文法の和集合をとる!! L1 {a b n 1} n n G1 N1 , 1 , P1 , S0 N1 {S1} 1 {a, b} L2 {a b n 2n n 1} G2 N2 , 2 , P2 , S0 N 2 {S2 } 2 {a, b} P1 {S1 aS1b,S1 ab} P2 {S2 aS2bb,S2 abb} S0 S1 形式言語とオートマト S0 S2 文法例3(文脈自由文法) 言語 L {a b | 1 ≦ m ≦ n ≦ 2m} m n を生成する文脈自由文法を構成しなさい G G1 G2 P = {S → aSb , S → aSbb , S → ab, S → abb} 解答 形式言語とオートマト 導出例 L {a b | 1 ≦ m ≦ n ≦ 2m} m n P = {S → aSb , S → aSbb , S → ab, S → abb} S ⇒ aSb ⇒ aaSbb ⇒ aaabbb S ⇒ aSb ⇒ aaSbbb ⇒ aaabbbb S ⇒ aSb ⇒ aaSbbb ⇒ aaabbbbb S ⇒ aSbb ⇒ aaSbbbb ⇒ aaabbbbbb 形式言語とオートマト 形式言語とオートマト 文法例4(文脈自由文法) 言語 L {a b a | i, j, k ≧1, (i j) ( j k )} i j k を生成する文脈自由文法を構成しなさい. 生成する文字列は 二通り 形式言語とオートマト 生成する文字列は 二通り L1 {a b a | i, j, k ≧1, i j} i j k L2 {a b a | i, j, k ≧1, j k} i j k 分けて考えましょう,まずL1を生成する文脈自由文法を 構成しなさい 形式言語とオートマト L1 {a b a | i, j, k ≧1, i j} i j k を生成する文脈自由文法を構成しなさい G1 N1 , 1 , P1 , S0 G1 : N1 {S1 , T }, {a, b}, P1 {S1 S1a, S1 Ta, T aTb, T ab} 形式言語とオートマト L2 {a b a | i, j, k ≧1, j k} i j k を生成する文脈自由文法を構成しなさい G2 N2 , 2 , P2 , S0 G 2 : N 2 {S2 , T }, {a, b}, P2 {S2 aS2 , S2 aT, T bTa, B ba} 形式言語とオートマト このまま,和集合をとるなら。。。 G1 : N1 {S1 , T }, {a, b}, P1 {S1 S1a, S1 Ta, T aTb, T ab} G 2 : N 2 {S2 , T }, {a, b}, P2 {S2 aS2 , S2 aT, T bTa, T ba} 形式言語とオートマト G : N {S , T }, {a, b}, P {S Sa, S Ta, T aTb, T ab, S aS, S aT , T bTa, T ba} を構成し abaa, aaba, aaaba... などの文字列を生成しまう 形式言語とオートマト G1 : N1 {S1 , A}, {a, b}, P1 {S1 S1a, S1 Aa, A aAb, A ab} G 2 : N 2 {S2 , B}, {a, b}, P2 {S2 aS2 , S2 aB, B bBa, B ba} 形式言語とオートマト G1 : N1 {S1 , A}, {a, b}, P1 {S1 S1a, S1 Aa, A aAb, A ab} G 2 : N 2 {S2 , B}, {a, b}, P2 {S2 aS2 , S2 aB, B bBa, B ba} G 5.7 {S} N1 N 2 ,{a, b}, {S S1 , S S2 } P1 P2 , S 形式言語とオートマト G 5.7 {S} N1 N 2 ,{a, b}, {S S1 , S S2 } P1 P2 , S (i j ) ( j k) L {a b a | i, j, k ≧1, (i j) ( j k )} i j k 形式言語とオートマト 言語 L {a b a | i, j, k ≧1, (i j) ( j k )} i j k を生成する文脈自由文法は: G 5.7 {S , S1 , S2 , A, B},{a, b}, {S S1 , S S2 , S1 S1a, S1 Aa, A aAb, A ab, S2 aS2 , S2 aB, B bBa, B ba}, S 形式言語とオートマト 形式言語とオートマト お疲れ様 小テストで す。 形式言語とオートマト
© Copyright 2024 ExpyDoc