スライド 1

形式言語 と オートマト
第4回
鳥取大学工学研究科
情報エレクトロニクス専攻
田中美栄子
本日の予定
形式言語とオートマト
本日の予定1
形式言語とオートマト
空動作とは?
空動作(ε-move)とは
入力記号を読まずに状態遷移できる
(つまりいつでも遷移してよい)
ε
S
ε
δ(S, ε) = P
形式言語とオートマト
P
Q
S
ε
δ(S, ε) = Q
R
δ(S, ε) = R
空動作を許す、とは?
0
p
ε
q
ε
r
1
入力無しでも二つの状態
形式言語とオートマト
q,rのどちらかに行ける
空動作を許す場合も動作関数を拡張して五字組で表
す
M  Q, , , q0 , F 
Q
状態の有限集合

入力記号の有限集合

動作関数
 : Q  ( { })  2
Q
q0  Q
q0
初期状態
F
受理状態の有限集合
形式言語とオートマト
注意
F Q
空動作を許す場合の五字組
M  Q, ,  , q0 , F 
Q  { p, q, r}
  {0,1}
0
 : Q  ( { })  2Q
 ( p,  )  {q, r},  ( p,0)   ( p,1)   ,
 (q,0)  {q},
 (q,1)   (q,  )   ,
 (r ,1)  {r},
 (r ,0)   (r ,  )  
q0  p
F  {q, r}
形式言語とオートマト
p

q

r
1
空動作を許す場合の動作例
・入力00に対するMの動作
0
0 $
ε
0
q
p
ε
r
1
形式言語とオートマト
空動作の動作例
・入力00に対するMの動作
0
場合1
0 $
0
ε
p
入力記号を読まずに状態遷移
2通り存在する
形式言語とオートマト
q
ε
場合2
r
1
空動作の動作例
・入力00に対するMの動作
0
場合1
0 $
0
ε
p
受理できる
q
ε
r
1
形式言語とオートマト
空動作の動作例
・入力00に対するMの動作
0
0 $
0
ε
p
これ以上遷移できない
→受理できない
形式言語とオートマト
q
ε
場合2
r
1
空動作の動作例
・入力00に対するMの動作
0
0
0 $
ε
q
ε
r
p
1
入力語を読み終えたとき受理状態に到達する遷移が可能なので
入力語 00 は受理される。
形式言語とオートマト
空動作の動作例
・入力110に対するMの動作
0
1 1 0 $
ε
q
p
ε
r
1
入力語を読み終えたとき受理状態に到達する遷移が不可能なので
入力語 110 は拒否される。
形式言語とオートマト
空動作のまとめ
空動作とは,入力記号を読まなくてもできる状態遷移
状態遷移は様々な場合が存在する
ε
Q
ε
R
S
(S, )  {Q, R}
形式言語とオートマト
形式言語とオートマト
本日の予定2
形式言語とオートマト
非決定性有限オートマトン(NFA)
→決定性有限オートマトン(DFA)
NFA(非決定性FSA)
a
a
b
a
r
DFA(決定性FSA)
s
a
t
b
{r}
a
{r,s}
b
δn
a
r
r, s r
s t
t -形式言語とオートマト
a
b
b
---
{p,q,r}
a
b
{r}
{r,s} {r}
{r,s} {r,s,t} {r}
{r,s,t} {r,s,t} {r}
非決定性有限オートマトン(NFA)
→決定性有限オートマトン(DFA)
NFA(非決定性FSA)
DFA(決定性FSA)
0
0

p

{q}
1
0
q
{∅}
{p,q,r}
r
1
1
形式言語とオートマト
0
{r}
1
0,1
DFAとNFAの同等性
教科書P.47
【例2.6】を読みましょう。
実際に図2.9を図2.13に変換してみよう。
※アルゴリズム2.1をじっくり読めば理解できます。
形式言語とオートマト
DFAとNFAの同等性
1. 𝑀𝑛 の状態の集合に応じて𝑀𝑑 の状態をつくる
a
a
r
s
a
t
𝑴𝒅 =
𝒓, 𝒔, 𝒕 , 𝒓, 𝒔 , 𝒔, 𝒕 , 𝒕, 𝒓 , 𝒓 , 𝒔 , 𝒕 , ∅
b
2. 𝑀𝑛 において入力を読まずに遷移できる状態を
𝑀𝑑 の初期状態とする
3. 𝑀𝑛 の受理状態を含む状態を𝑀𝑑 の受理状態とする
4. 教科書を読んでもわかりにくい・・・
形式言語とオートマト
DFAとNFAの同等性
1. 𝑀𝑛 の状態の集合に応じて𝑀𝑑 の状態をつくる
a
a
r
s
a
t
𝑴𝒅 =
𝒓, 𝒔, 𝒕 , 𝒓, 𝒔 , 𝒔, 𝒕 , 𝒕, 𝒓 , 𝒓 , 𝒔 , 𝒕 , ∅
b
2. 𝑀𝑛 において入力を読まずに遷移できる状態を
𝑀𝑑 の初期状態とする
3. 𝑀𝑛 の受理状態を含む状態を𝑀𝑑 の受理状態とする
4. 教科書を読んでもわかりにくい・・・
形式言語とオートマト
DFAとNFAの同等性
要は入力によって何処に遷移するかを見るだけ!!
rにaが入力された場合
r 又は sに遷移する
⇒ {r,s}という名前を
持つ状態に遷移す
ると考える
a
a
r
s
a
t
{r}
{r,s}
b
形式言語とオートマト
a
b
{r,s}
{r}
{r,s,t} {r}
{r,s,t} {r,s,t} {r}
DFAとNFAの同等性
要は入力によって何処に遷移するかを見るだけ!!
rにaが入力された場合
r 又は sに遷移する
a
a
r
s
a
⇒ {r,s}という名前を
持つ状態に遷移す
ると考える
t
a
b
a
r
b
形式言語とオートマト
a
s
a
tt
{r}
{r,s}
b
{r,s} {r}
{r,s,t} {r}
{r,s,t} {r,s,t} {r}
DFAとNFAの同等性
要は入力によって何処に遷移するかを見るだ
け!!にaが入力された場合
{r,s}
r 又は s 又は t に遷移する
⇒ {r,s,t}という名前の状態
に遷移すると考える
a
a
r
s
a
t
b
a
a
r
s
a
t
{r}
a
b
{r,s}
{r}
{r,s} {r,s,t} {r}
{r,s,t} {r,s,t} {r}
b
形式言語とオートマト
初期状態から到達できる状態だけで良
い
NFA→DFA
遷移先がない場合も
複数ある場合もある
遷移先が
一意に決定
a
a
r
a
b
s
a
t
b
{r}
b
δn
a
r
r, s r
s t
t -形式言語とオートマト
a
b
---
a
{r,s}
{p,q,r}
b
a
b
{r}
{r,s} {r}
{r,s} {r,s,t} {r}
{r,s,t} {r,s,t} {r}
NFAを同等なDFAに
書き換えるアルゴリズム
教科書P.50
【例2.7】を読みましょう。
実際に図2.11を図2.14に変換してみよう。
※アルゴリズム2.2をじっくり読めば理解できます。
形式言語とオートマト
空動作のある場合
1. 初期状態の構成
入力を読まなくてもq, rに遷移可能
初期状態 𝑭𝒅 = 𝒑, 𝒒, 𝒓
0
p

q

r
{p,q,r}
1
形式言語とオートマトン
空動作のある場合
1. 初期状態の構成
NFAの初期状態pから入力なし
で q または r に遷移できる
DFAの初期状態は
{p.q.r} となる
0
p

q

r
{p,q,r}
1
形式言語とオートマトン
空動作のある場合
1. 初期状態の構成
NFAの初期状態pから入力なし
で q または r に遷移できる
0
p

q

r
{p,q,r}
1
形式言語とオートマトン
DFAの初期状態は
{p.q.r} となる
空動作のある場合
2. アルゴリズム2.1と同様に状態遷移をつくる
0
p

q

r
{p,q,r}
1
形式言語とオートマト
空動作のある場合
2. アルゴリズム2.1と同様に状態遷移をつくる
0
0
p

q

r
{q}
1
0
∅
{p,q,r}
1
1
形式言語とオートマト
0
{r}
1
0,1
空動作のある場合
3. 受理状態を含む部分集合に対応する状態を
受理状態とする
0
0
p

q

r
{q}
1
0
∅
{p,q,r}
1
1
形式言語とオートマト
0
{r}
1
0,1
空動作のある場合
3. 受理状態を含む部分集合に対応する状態を
受理状態とする
0
0
p

q

r
{q}
1
0
∅
{p,q,r}
1
1
形式言語とオートマト
0
{r}
1
0,1
NFA→DFA
遷移先が一意に決定
遷移先が不確定
0

p
δn

ε
0
1
p
q,r
q
r
p
--
q
--
r
--
--
r
形式言語とオートマト
0
{q}
q
0
∅
{p,q,r
}
r
1
1
δd
1
{r}
0
1
0
1
{p,q,r}
{q}
{r}
{q}
{q}
Φ
{r}
Φ
[r]
Φ
Φ
Φ
0,
1
DFAとNFAの同等性まとめ
・決定性有限オートマトン(DFA)
同等(同じ仕事をする)
・非決定性有限オートマトン(NFA)
・空動作を許す非決定性有限オートマトン(NFA)
アルゴリズム2.1や2.2を使って書き換えられる
形式言語とオートマト
頭の整理のために
小テストを行いましょう。
形式言語とオートマト