Transcript 形式文法と形式言語
形式言語 と オートマト
第8回
鳥取大学工学研究科
情報エレクトロニクス専攻
田中美栄子
本日の予定1
形式言語とオートマト
「有限状態言語=正規言語の生成規則」
としての正規文法
形式言語とオートマト
言語の生成装置としての形式文法
遷移規則:δ(p,a)=q
状態pにいて文字aを読めば
状態qに移る
p
a
q
状態pにいて文字aを出力し、状態qに移る
Sp = それまでの文生成の経過を記憶
S aS
p
Sq a
q
aを出力 = Sqでその結果の経過を記憶
遷移先が受理状態ならそこでおしまい
形式言語とオートマト
言語の生成装置としての形式文法
S 0 aS 1
q0
S 1 aS 2
a
S 2 → aS 0
q1
S2 a
L={a3n}を生成する文法
S 0 aS 1 aaS
2
形式言語とオートマト
aaaS
0
a
q2
a
L={a3n}を受理するFSA
aaaaS
1
aaaaaS
2
aaaaaa
文
法
4字組
文法(grammar)
G N , , P , S 0
非終端記号(nonterminal)
N {S 0 , S 1 , S 2 }
終端記号(terminal)
{a }
生成規則(production rule) P {p 0 , p 1 , p 2 , p 3 , p 4 }
初期記号(initial symbol)
形式言語とオートマト
S0
対応:文法~言語~オートマト
ン
オートマトン(左)と文法(右)の対応する階層性
FSA
正規文法
PDA
文脈自由文法
LBA
文脈依存文法
TM
句構造文法
形式言語とオートマト
文法の種類
4つの言語のクラスの関係
形式言語とオートマト
文法の種類
4つの言語のクラスの関係
G1=<{S},{a,b},{S→aS,
S→bS, S→a,
S→b,},S>
から生成する言語
+
L(G1)={a,b}
形式言語とオートマト
文法の種類
G2=<{S},{a,b},{S
→ aSb, S → ab},S>
4つの言語のクラスの関係
から生成する言語
L(G2)={anbn| n≧1 }
形式言語とオートマト
G3=<{S},{a,b},
{S→aSBC aB→ab
文法の種類
S→aBC bB→bb
が生成する言語
CB→AB bC→bc
n n n
L(G3)={a b c | n≧1}
AB→AC cC→cc
4つの言語のクラスの関係
AC→BC},
S>
形式言語とオートマト
文法の種類
4つの言語のクラスの関係
??????
形式言語とオートマト
文法の種類
4つの言語のクラスの関係
形式言語とオートマト
文法の種類~まとめ~
形式文法
書き換え規則α→β上の制限
正則文法(正規文法)
(3型)
A→aBまたはA→aという形(文字aを読んでAに対応する状態か
らBに対応する状態に遷移する有限状態オ-トマトンに対応する)
ここで,A,B∈N,a∈T, 開始記号S
文脈自由文法
(2型)
A→βという形をしている。ここで,A∈N, β∈(N∪T)*
(文脈に依存することなく変数Aを単独で置き換えることができる)
文脈依存文法
(1型)
γ1Aγ2→γ1βγ2,ここで,A∈N,γ1,γ2∈(N∪T)*,β∈(N∪T)+
(別の定義としては,|左辺|≤|右辺|)
句構造文法
(0型)
制限なし
形式言語とオートマト
形式言語とオートマト
文法例2(文脈自由文法)
文法(grammar)
非終端記号(nonterminal)
終端記号(terminal)
生成規則(production rule)
初期記号(initial symbol)
G N , , P , S 0
N {S }
{ a , b}
P { S aSb,S ab }
S0 S
=導出例=
S aSb aaSbb a Sb a
3
生成される言語:
形式言語とオートマト
3
L { a b | n 1}
n
n
n 1
Sb
n 1
a b
n
n
文法例2(文脈自由文法)
文法(grammar)
G N , , P , S 0
非終端記号(nonterminal) N {S }
{ a , b}
終端記号(terminal)
生成規則(production rule) P { S → aSa | bSb | aa
初期記号(initial symbol)
S0 S
| bb }
=導出例=
S aSa aaSaa aabSbaa aabbaa
生成される言語:L { ww R | w { a , b}* }
形式言語とオートマト
文法例2(文脈自由文法)
文法(grammar)
G N , , P , S 0
非終端記号(nonterminal) N {S }
{ a , b , c}
終端記号(terminal)
生成規則(production rule) P { S aSb , S
初期記号(initial symbol)
S0 S
ab , S c }
=導出例=
S aSb aaSbb aaaSbbb aaacbbb
生成される言語: L { a n cb n | w ∈ { a , b }* }
形式言語とオートマト
文法例3(文脈自由文法)
文法(grammar)
G N , , P , S 0
非終端記号(nonterminal) N {S }
{ , }
終端記号(terminal)
生成規則(production rule) P = {S → < > , S → SS , S → < S > }
初期記号(initial symbol)
S0 S
=導出例=
S S
S SS S S
L {ε, , , , ・・・ 形式言語とオートマト
}
文法例3(文脈自由文法)
G N , , P , S 0
N {S , A, B}
{a,b }
P { S aB,S bA,A aS,A bAA,A a,B aBB,B bS,B b}
S0 S
生成される言語を考えて見よう!!
形式言語とオートマト
文法例3(文脈自由文法)
=導出例=
S aB ab
S bA ba
S bA bbAA bbAa bbaSa bbabAa bbabaa
S aB aaBB aabSB aabSb aabbAb aabbbAAb
aabbbaAb
aabbbaab
上記の導出過程を参考にして,生成される言語をさら
に3個求めなさい!!
L(G) ?
形式言語とオートマト
文法例3(文脈自由文法)
=導出例=
aaabbb,
bababaab,
abbaabba,
aabbaababb ba
など
aの個数とbの個数は同じ!!
L(G) { ω|#a ( ω ) #b ( ω ) 1}
形式言語とオートマト
練習
G N , , P , S 0
文法の実行例を示せ:
N {S }
{ 0 , 1}
S 01
P { S SS,S 01 ,S 0 S 1}
S SS 01S 0101
S0 S
S 0S1 0011
S SS 01S 01SS 0101S
010101
S SS 01S 010S1 010011
S SS S01 0S101 001101
S 0S1 0SS1 001S1 001011
⋮
S 0S1 00 S11 000111
形式言語とオートマト
お疲れ様
小テストで
す
形式言語とオートマト