形式文法とオートマトン

Download Report

Transcript 形式文法とオートマトン

形式言語 と オートマトン
第12回
鳥取大学工学研究科
情報エレクトロニクス専攻
田中美栄子
本日の予定
形式言語とオートマトン
正規言語 : FAの受理する言語,あるいは
正規表現の表す言語のクラス
正規言語は言語の和、連結、*について
閉じている
正規言語は積、補の集合演算についても
閉じている
形式言語とオートマトン
有限状態言語は対応するFSAがある
オートマトンで書けば
有限状態言語L1にはそれを識別
できるFSAがある.⇒M1と呼ぶ
有限状態言語L2にはそれを識別
できるFSAがある.⇒M2と呼ぶ
形式言語とオートマトン
有限状態言語が和で閉じること
オートマトンで書けば
L1+ L2を識別するFSAはM1と
M2を並列に繋げたもの
形式言語とオートマトン
有限状態言語が連結で閉じること
オートマトンで書けば
L1 L2を識別するFSAはM1とM2を直
列に繋げたもの
形式言語とオートマトン
有限状態言語が*積で閉じること
L1が有限状態言語ならL1*
も有限状態言語
L1が正規表現ならその*積も正
規表現
形式言語とオートマトン
有限状態言語が*積で閉じること
オートマトンで書けば
L1のFSAをループしたものもFSA
になる
形式言語とオートマトン
正規言語の例
𝐿1 = 𝑎𝑎𝑎
𝐿2 = 𝑎𝑏, 𝑏𝑎 = 𝑎𝑏 ∪ 𝑏𝑎
𝐿3 = 𝑎𝑛 𝑛 ≥ 0 = {𝑎}∗
𝐿4 = {𝑎𝑏, 𝑏𝑎}∗
𝐿5 = 𝑎2𝑛 𝑛 ≥ 0 ∪ 𝑏 3𝑛 𝑛 ≥ 0
𝐿6 = 𝑎𝑎 {𝑎, 𝑏}∗ {𝑏𝑏𝑏}
これらを表す正規表現は
形式言語とオートマトン
𝛼1 = 𝑎 ∙ 𝑎 ∙ 𝑎 = 𝑎𝑎𝑎 = 𝑎3
𝛼2 = 𝑎 ∙ 𝑏 + 𝑏 ∙ 𝑎 = 𝑎𝑏 + 𝑏𝑎
𝛼3 = 𝑎 ∗
𝛼4 = (𝑎 ∙ 𝑏 + 𝑏 ∙ 𝑎)∗ = (𝑎𝑏 + 𝑏𝑎)∗
𝛼5 = (𝑎 ∙ 𝑎)∗ + (𝑏 ∙ 𝑏 ∙ 𝑏)∗ = (𝑎𝑎)∗ + (𝑏𝑏𝑏)∗
= (𝑎2 )∗ + (𝑏 3 )∗
𝛼6 = (𝑎 ∙ 𝑎) ∙ (𝑎 + 𝑏)∗ ∙ 𝑏 ∙ 𝑏 ∙ 𝑏
= 𝑎𝑎(𝑎 + 𝑏)∗ 𝑏𝑏𝑏 = 𝑎2 (𝑎 + 𝑏)∗ 𝑏 3
形式言語とオートマトン
先ほどの例より
語や言語の連接を表すために記号” ∙ ”
言語の和を表すために記号” + ”
言語のスター演算を表すために記号” * ”
が用いられる
形式言語とオートマトン
(𝑎 + 𝑏)∗ :aとbのどちらかが0回以上繰り返すような
語の集合を表す
(𝑎∗ 𝑏 ∗ )∗ :aが0回以上繰り返しその後にbが0回以上
繰り返すような語の集合
同じ言語を表す正規表現は1つとは限らない!
形式言語とオートマトン
形式言語とオートマトン
aで始まり、bで終わる語からなる言語を表す
正規表現を求めなさい
(必ず和とスター演算を一回以上使用すること)
形式言語とオートマトン
aで始まり、bで終わる語からなる言語を表す
正規表現を求めなさい
(必ず和とスター演算を一回以上使用すること)
𝑎(𝑎 +
形式言語とオートマトン
∗
𝑏) 𝑏
長さが奇数の語からなる言語を表す
正規表現を求めよ
(必ず和とスター演算を一回以上使用すること)
形式言語とオートマトン
長さが奇数の語からなる言語を表す
正規表現を求めよ
(必ず和とスター演算を一回以上使用すること)
((𝑎 + 𝑏)(𝑎 +
形式言語とオートマトン
∗
𝑏)) (𝑎
+ 𝑏)