正規表現と有限オートマトン

Download Report

Transcript 正規表現と有限オートマトン

形式言語 と オートマトン
第12回
鳥取大学工学研究科
情報エレクトロニクス専攻
田中美栄子
本日の予定
形式言語とオートマトン
正規表現⇒非決定性有限オートマトン
a
L=a*b*
r
形式言語とオートマトン
b
ε
t
正規表現⇒非決定性有限オートマトン
a
L=a*b*c*
r
形式言語とオートマトン
b
ε
s
c
ε
t
正規表現と有限オートマトン(連結)
• L=a*b*=L1L2
• L1=a*
• L2=b*
a
b
a
b
正規表現と有限オートマトン(和)
• L=a+b=L1 U L2
a, b
• L1=a
a
• L2=b
b
正規表現と有限オートマトン(繰返し)
• L=L1+L2
• L1=a*
• L2==b*
a
a
b
b
正規表現 と 有限オートマトン
• L=a*b*=L1L2
• L1=a*
• L2=b*
a
b
a
b
正規表現 と 有限オートマトン
• L=a*b*=L1L2
• L1=a*
• L2=b*
a
b
a
b
正規言語 : 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で終わる語からなる言語を表す
正規表現を求めなさい
(必ず和とスター演算を一回以上使用すること)
𝑎(𝑎 +
形式言語とオートマトン
∗
𝑏) 𝑏
長さが奇数の語からなる言語を表す
正規表現を求めよ
(必ず和とスター演算を一回以上使用すること)
形式言語とオートマトン
長さが奇数の語からなる言語を表す
正規表現を求めよ
(必ず和とスター演算を一回以上使用すること)
((𝑎 + 𝑏)(𝑎 +
形式言語とオートマトン
∗
𝑏)) (𝑎
+ 𝑏)