形式文法と形式言語

Download Report

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
形式言語とオートマト
お疲れ様
小テストで
す
形式言語とオートマト