Transcript Document

形式言語 と オートマト
第9回
鳥取大学工学研究科
情報エレクトロニクス専攻
田中美栄子
本日の予定1
形式言語とオートマト
「有限状態言語=正規言語の生成規則」
としての正規文法
形式言語とオートマト
言語の生成装置としての形式文法
遷移規則:δ(p,a)=q
状態rにいて文字aを読めば
状態sに移る
p
a
q
状態rにいて文字aを出力し、状態sに移る
S p  aS q
Sp
Sq  a
aを出力 = Sqでその結果の経過を記憶
= それまでの文生成の経過を記憶
遷移先が受理状態ならそこでおしまい
形式言語とオートマト
言語の生成装置としての形式文法
P1  S 0  aS 1
q0
P 2  S 1  aS 2
a
P3  S 2  aS 0
q1
P4  S 2  a
L={a3n}を生成する文法
S 0  aS 1  aaS
P1
2
P2
形式言語とオートマト
 aaaS
P3
0
a
q2
a
L={a3n0}を受理するFSA
 aaaaS
P1
1
 aaaaaS
P2
2
 aaaaaa
P4
文
法
文法(grammar)
G  N ,  , P , S 0 
非終端記号(nonterminal)
N  {S 0 , S 1 , S 2 }
終端記号(terminal)
  {a }
生成規則(production rule) P = { 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>0} など
文脈自由言語族は正規言語族を含む
また文脈自由言語族は文脈依存言語族の一部であることに注意
形式言語とオートマト
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つの言語のクラスの関係
形式言語とオートマト
文法の種類=まとめ=
形式文法
書き換え規則α→β上の制限
正則文法(正規文法) A→aBまたはA→a という形の置き換え規則
(3型)
ここで,A∈N,a∈Σ
(1変数→1定数または1定数+1変数)
文脈自由文法
(2型)
A→β という形の置き換え規則
ここで,A∈N, β∈(N∪Σ)*(1変数→定数と変数の組合せ)
文脈依存文法
(1型)
α→βという形の置き換え規則 ここで,α, β∈(N∪Σ)+
但し右辺は左辺より短くはならない(|α|≤|β|)という条件付き
文脈依存の語源は γ1Aγ2 →γ1βγ2 も上の定義に含まれる為
(γ1とγ2の間にあるときだけA→βの置き換えが行われる)
句構造文法
(0型)
α → β ここで αはVを含み, βはNの元を必ずしも含まなくて
よい、という以外の制限はつかない置き換え規則
形式言語とオートマト
形式言語とオートマト
文法例2(文脈自由文法)
文法(grammar)
G  N ,  , P , S 0 
N = {S}
非終端記号(nonterminal)
  { a , b}
終端記号(terminal)
生成規則(production rule) P = {S → aSa , S → bSb , S → aa , S → bb }
S0 = S
初期記号(initial symbol)
形式言語とオートマト
文法例2(文脈自由文法)
文法(grammar)
G  N ,  , P , S 0 
非終端記号(nonterminal) N  {S }
  { a , b}
終端記号(terminal)
生成規則(production rule) P = {S → aSa , S → bSb , S → aa , S → bb }
初期記号(initial symbol)
S0  S
=導出=
S  aSa  aaSaa  aabSbaa  aabaabaa
L  { ww
形式言語とオートマト
R
| w  { a , b} }
*
文法例2(文脈自由文法)
文法(grammar)
G  N ,  , P , S 0 
N = {S}
非終端記号(nonterminal)
Σ = { a , b , c}
終端記号(terminal)
生成規則(production rule) P = {S → aSa , S → b S b , S → c}
初期記号(initial symbol)
S0 = S
形式言語とオートマト
文法例2(文脈自由文法)
文法(grammar)
G  N ,  , P , S 0 
非終端記号(nonterminal) N  {S }
  { a , b , c}
終端記号(terminal)
生成規則(production rule) P = {S → aSa , S → bSb , S → c}
初期記号(initial symbol)
S0  S
=導出=
S  aSa  abSba  abaSaba  abaaSaacaa ba
L  { wcw
形式言語とオートマト
R
| w  { a , b} }
*
文法例3(文脈自由文法)
文法(grammar)
G  N ,  , P , S 0 
非終端記号(nonterminal) N  {S }
Σ = {(, )}
終端記号(terminal)
P = {S → SS , S → (S ), S → ( )}
生成規則(production rule)
初期記号(initial symbol)
S0  S
形式言語とオートマト
文法例3(文脈自由文法)
文法(grammar)
G =< N , Σ , P , S 0 >
N = {S}
非終端記号(nonterminal)
Σ = {(, )}
終端記号(terminal)
生成規則(production rule) P = {S → () , S → SS , S → (S )}
初期記号(initial symbol)
S0  S
=導出=
S ⇒ (S ) ⇒ ( ())
S ⇒ SS ⇒ ()( S ) ⇒ ()(())
L = {() , ()() , (()) , ((())) , ()(()) , (())() , ()()() , .... }
形式言語とオートマト
小テストです。
形式言語とオートマト