有限状態言語と正規表現

Download Report

Transcript 有限状態言語と正規表現

形式文法と形式言語(1)
形式言語とオートマトン:第9回講義
復習
「判定機械」としてのFSA
有限状態オートマトン(FSA)
M=<Q、Σ、δ、q0、F>
•
•
•
•
•
Q :状態(state)の有限集合
Σ:入力記号(input symbol)の有限集合
δ :動作関数(move function) (δ:Q×Σ→Q)
q0:初期状態(initial state) (q0∈Q)
F :受理状態(accepting state)の有限集号(F∈Q)
例: M=<Q、Σ、δ、q0、F>
Q={r,s,t}
Σ={a}
δ:Q×Σ→Q
δ(r,a)=s
δ(s,a)=t
δ(t,a)=r
q0=r
F={r}
動作例
a
状態
a
a
$
r
状態rからスタート(最初のaを読む)
例: M=<Q、Σ、δ、q0、F>
Q={r,s,t}
Σ={a}
δ:Q×Σ→Q
δ(r,a)=s
δ(s,a)=t
δ(t,a)=r
q0=r
F={r}
動作例
a
a
状態
a
$
s
最初のaを読み終わったら状態sに移る
例: M=<Q、Σ、δ、q0、F>
Q={r,s,t}
Σ={a}
δ:Q×Σ→Q
δ(r,a)=s
δ(s,a)=t
δ(t,a)=r
q0=r
F={r}
動作例
a
a
$
a
状態
t
次のaを読み終わったら状態tに移る
例: M=<Q、Σ、δ、q0、F>
Q={r,s,t}
Σ={a}
δ:Q×Σ→Q
δ(r,a)=s
δ(s,a)=t
δ(t,a)=r
q0=r
F={r}
動作例2
a
a
a
$
状態
r
3つ目のa3を読み終わったら状態が
受理状態rなので受理
例 M=<Q、Σ、δ、q0、F>
Q={r,s,t}
Σ={a}
δ:Q×Σ→Q
δ(r,a)=s
δ(s,a)=t
δ(t,a)=r
q0=r
F={r}
動作例
a
a
a
$
状態
r
最後のaを読み終わったら状態rに移る
例 M=<Q、Σ、δ、q0、F>
Q={r,s,t}
Σ={a}
δ:Q×Σ→Q
δ(r,a)=s
δ(s,a)=t
δ(t,a)=r
q0=r
F={r}
動作例2
a
a
a
$
状態
r
入力が終了したとき状態が
受理状態rなので受理
有限状態オートマトンの瞬時表現
a
状態
x
$
a
s
状態
x
r
文字aを読んで状態sからrに移る
(q, ax ) ( p, x )
M
$
有限状態オートマトンの瞬時表現
a1
状態
x
$
an
a1
x
an
$
状態 qn
q0
(q 0 , a1a 2 ...a n ) (q1 , a 2 ...a n )  ....(q n , )
M
M
*
(q0 , a1a 2 ...a n ) (q n , )
M
M
有限状態言語
*
L( M)  {w | w   , (q0 , w) (qf , )}
*
M
例
( r , baa ) ( r , aa ) (s, a ) ( t, )
M
M
*
(r, baa ) ( t, )
M
M
有限状態オートマトンの状態遷移図
r
a
s
a
a
t
文法
「有限状態言語=正規言語の
生成規則」としての正規文法
言語の生成装置としての形式文法
• 遷移規則:δ(p,a)=q
• 状態rにいて文字aを読
めば状態sに移る
a
p
q
• 状態rにいて文字aを出
力し、状態sに移る
Sp  aSq
Sq  a
Sp
= それまでの文生成の経過を記憶
aを出力 = Sqでその結果の経過を記憶
遷移先が受理状態ならそこでおしまい
言語の生成装置としての形式文法
S 0  aS1
S1  aS2
S2  aS0
S2  a
L={a3n}を生成する文法
q0
a
a
q1
q2
a
L={a3n0}を受理するFSA
S0  aS1  aaS2  aaaS0  aaaaS1  aaaaaS2  aaaaaa
文法
• 文法(grammar)
G  N, , P, S0 
• 非終端記号(nonterminal)
N  {S0 , S1 , S2 }
• 終端記号(terminal)
  {a}
• 生成規則(production rule)
P  {p 0, p1 , p 2 , p 3 , p 4 }
• 初期記号(initial symbol)
S0
対応:文法~言語~オートマトン
オートマトン(左)と文法(右)の対応する階層性
FSA
正規文法
PDA
文脈自由文法
LBA
文脈依存文法
TM
句構造文法