言語・オートマトン - iip.ist.i.kyoto-u.ac.jp · 形式言語理論は,プログラミング言語を設計する基盤 になっているほか,マークアップ言語や自然言語処理,
形式言語 と オートマトン
-
Upload
nasim-mcintyre -
Category
Documents
-
view
43 -
download
0
description
Transcript of 形式言語 と オートマトン
形式言語 と オートマトン
第 4 回鳥取大学工学研究科
情報エレクトロニクス専攻田中美栄子
1
形式言語とオートマトン
本日の予定
・空動作を許すオートマトン
・ DFA と NFA の同等性
の2点について学ぶ
1
形式言語とオートマトン
本日の予定1
空動作を許すオートマトン
1
形式言語とオートマトン
空動作とは?
空動作( ε-move )とは入力記号を読まずに状態遷移できる( つまりいつでも遷移してよい)
Pε ε
ε
S SQ
R
P=)ε,S(δ Q=)ε,S(δ R=)ε,S(δ
1
形式言語とオートマトン
空動作を許す、とは?0
p
1
ε
ε
入力無しでも二つの状態 q,r のどちらかに行ける
q
r
1
形式言語とオートマトン
空動作を許す場合も動作関数を拡張して五字組で表す
動作関数 QQ 2}){(:
FqQM ,,,, 0
Q 状態の有限集合
入力記号の有限集合
0q 初期状態 Qq 0F 受理状態の有限集合 QF
注意
),()0,(},{)1,(
,),()1,(},{)0,(
,)1,()0,(},,{),(
rrrr
qqqq
pprqp
QQ 2}){(:
1
形式言語とオートマトン
FqQM ,,,, 0},,{ rqpQ
}1,0{
pq 0},{ rqF
0
qp
1
r
空動作を許す場合の五字組
1
形式言語とオートマトン
空動作を許す場合の動作例
$0 0 0
r
q
p
1
・入力 00 に対するMの動作
ε
ε
1
形式言語とオートマトン
空動作の動作例
0
r
q
p
1
・入力 00 に対するMの動作
入力記号を読まずに状態遷移
2通り存在する
εε
場合1
場合2
$0 0
1
形式言語とオートマトン
空動作の動作例
0
r
q
p
1
・入力 00 に対するMの動作
εε
場合1$0 0
受理できる
1
形式言語とオートマトン
空動作の動作例
0
r
q
p
1
・入力 00 に対するMの動作
εε
$0 0
これ以上遷移できない
→受理できない
場合2
1
形式言語とオートマトン
空動作の動作例
0
r
q
p
1
・入力 00 に対するMの動作
ε
ε
$0 0
入力語を読み終えたとき受理状態に到達する遷移が可能なので
入力語 00 は受理される。
1
形式言語とオートマトン
空動作の動作例
0
r
q
p
1
・入力 110 に対するMの動作
ε
ε$1 1 0
入力語を読み終えたとき受理状態に到達する遷移が不可能なので
入力語 110 は拒否される。
1
形式言語とオートマトン
空動作のまとめ
形式言語とオートマトン
空動作とは,入力記号を読まなくてもできる状態遷移
ε
εS
Q
R
}R,Q{),S(
状態遷移は様々な場合が存在する
2
形式言語とオートマトン
本日の予定2
DFA と NFA の同等性
2
形式言語とオートマトン
非決定性有限オートマトン (NFA)→ 決定性有限オートマトン
(DFA)NFA (非決定性 FSA )
a
aasr
b
t
DFA (決定性 FSA )
b
b
b
a a{r,s}{r} {p,q,r}
a
a b
{r} {r,s} {r}
{r,s} {r,s,t} {r}
{r,s,t} {r,s,t} {r}
a b
r r, s r
s t --
t -- --
nδ
2
形式言語とオートマトン
非決定性有限オートマトン (NFA)→ 決定性有限オートマトン
(DFA)NFA (非決定性 FSA )DFA (決定性 FSA )
0
qp
1
r{∅}
0
1
1
0
0
1
0,1
{q}
{r}
{p,q,r}
2 DFA と NFA の同等性
形式言語とオートマトン
教科書 P.47 【例 2.6 】を読みましょう。実際に図 2.9 を図 2.13 に変換してみよう。
※ アルゴリズム 2.1 をじっくり読めば理解できます。
2 DFA と NFA の同等性
形式言語とオートマトン
1. の状態の集合に応じての状態をつくるa
aasr
b
t 𝑴 𝒅= {{𝒓 , 𝒔 ,𝒕 } , {𝒓 , 𝒔 }, {𝒔 ,𝒕 } , {𝒕 ,𝒓 } , {𝒓 } , {𝒔 }, {𝒕 } ,∅ }
2. において入力を読まずに遷移できる状態を 初期状態とする
3. の受理状態を含む状態をの受理状態とする
4. 教科書を読んでもわかりにくい・・・
2 DFA と NFA の同等性
形式言語とオートマトン
1. の状態の集合に応じての状態をつくるa
aasr
b
t 𝑴 𝒅= {{𝒓 , 𝒔 ,𝒕 } , {𝒓 , 𝒔 }, {𝒔 ,𝒕 } , {𝒕 ,𝒓 } , {𝒓 } , {𝒔 }, {𝒕 } ,∅ }
2. において入力を読まずに遷移できる状態を 初期状態とする
3. の受理状態を含む状態をの受理状態とする
4. 教科書を読んでもわかりにくい・・・
a b
{r} {r,s} {r}
{r,s} {r,s,t} {r}
{r,s,t} {r,s,t} {r}
2 DFA と NFA の同等性
形式言語とオートマトン
t
a
aasr
b
t
要は入力によって何処に遷移するかを見るだけ !!r に a が入力された場合 r 又は s に遷移する
⇒ {r,s} という名前を持つ状態に遷移
すると考える
a b
{r} {r,s} {r}
{r,s} {r,s,t} {r}
{r,s,t} {r,s,t} {r}
t
a
aasr
b
2 DFA と NFA の同等性
形式言語とオートマトン
要は入力によって何処に遷移するかを見るだけ !!r に a が入力された場合 r 又は s に遷移する
t
t
a
aasr
b
t
⇒ {r,s} という名前を持つ状態に遷移
すると考える
2 DFA と NFA の同等性
形式言語とオートマトン
a b
{r} {r,s} {r}
{r,s} {r,s,t} {r}
{r,s,t} {r,s,t} {r}
要は入力によって何処に遷移するかを見るだけ !!{r,s} に a が入力された場合 r 又は s 又は t に
遷移する
t
a
aasr
b
t
⇒ {r,s,t} という名前の状態に遷移すると考える
t
a
aasr
b
t
初期状態から到達できる状態だけで良い
2
形式言語とオートマトン
NFA→DFA遷移先がない場合も複数ある場合もあるa
aasr
b
t
遷移先が一意に決定
b
b
b
a a{r,s}{r} {p,q,r}
a
a b
{r} {r,s} {r}
{r,s} {r,s,t} {r}
{r,s,t} {r,s,t} {r}
a b
r r, s r
s t --
t -- --
nδ
2 NFA を同等な DFA に書き換えるアルゴリズム
形式言語とオートマトン
教科書 P.50 【例 2.7 】を読みましょう。実際に図 2.11 を図 2.14 に変換してみよう。
※ アルゴリズム 2.2 をじっくり読めば理解できます。
0
qp
1
r
2 空動作のある場合
形式言語とオートマトン
1. 初期状態の構成
{p,q,r}
入力を読まなくても q, r に遷移可能 初期状態
0
qp
1
r
2 空動作のある場合
形式言語とオートマトン
1. 初期状態の構成
{p,q,r}
DFA の初期状態は{p.q.r} となる
NFA の初期状態 p から入力なしで q または r に遷移できる
0
qp
1
r
2 空動作のある場合
形式言語とオートマトン
1. 初期状態の構成NFA の初期状態 p から入力なしで q または r に遷移できる
DFA の初期状態は{p.q.r} となる
{p,q,r}
0
qp
1
r
2
形式言語とオートマトン
2. アルゴリズム 2.1 と同様に状態遷移をつくる
空動作のある場合
{p,q,r}
0
qp
1
r
2
形式言語とオートマトン
2. アルゴリズム 2.1 と同様に状態遷移をつくる
∅
0
1
1
0
0
1
0,1
{q}
{r}
{p,q,r}
空動作のある場合
0
qp
1
r
2
形式言語とオートマトン
3. 受理状態を含む部分集合に対応する状態を 受理状態とする
∅
0
1
1
0
0
1
0,1
{q}
{r}
{p,q,r}
空動作のある場合
0
qp
1
r
2
形式言語とオートマトン
3. 受理状態を含む部分集合に対応する状態を 受理状態とする
∅
0
1
1
0
0
1
0,1
{q}
{r}
{p,q,r}
空動作のある場合
0 1
{p,q,r} {q} {r}
{q} {q} Φ
{r} Φ [r]
Φ Φ Φ
ε 0 1
p q,r
q r
p -- q --
r -- -- r
2
形式言語とオートマトン
NFA→DFA遷移先が不確定 遷移先が一意に決
定
nδ
0
qp
1
r∅
0
1
1
0
0
1
0,1
{q}
{r}
{p,q,r}
dδ
2 DFA と NFA の同等性まとめ
形式言語とオートマトン
・決定性有限オートマトン (DFA)
同等(同じ仕事をする)
・非決定性有限オートマトン (NFA) ・空動作を許す非決定性有限オートマトン( NFA)
アルゴリズム 2.1 や 2.2 を使って書き換えられる
3
形式言語とオートマトン
頭の整理のために
小テストを行いましょう。