Transcript PDA(1)

形式言語 と オートマト
第6回
鳥取大学工学研究科
情報エレクトロニクス専攻
田中美栄子
本日の予定
形式言語とオートマト
本日の予定1
形式言語とオートマト
決定的プッシュダウンオートマトンとは?
+
→ プッシュダウンオートマトン(PDA)
(FSAのような単純な装置では扱えない入力の判断を扱える)
ポップアップ
後入れ先出し(LIFO:Last-In First-Out)
方式の記憶装置
形式言語とオートマト
決定性プッシュダウンオートマトン
M  Q, , ,  , q0 , Z0 , F 
Q



状態の有限集合
 (q,  , Y ) が定義されているときは,
入力記号の有限集合
どの a に対しても,
プッシュダウン記号の有限集合
 (q, a, Y ) は定義されていない。
動作関数
(動作の決定性が保証される。)
 : Q  ( { })  の部分集合  Q  
*
q0
Z0
F
初期状態
ボトムマーカー
受理状態の有限集合
q0  Q
Z0  
F Q
決定性プッシュダウンオートマトンの
1ステップの動作(1)
…
a
x
 (q, a, Y )  ( p,  )
有限制御部
q
状態
Y
$
のとき

Z0
…
a
x
$
有限制御部
状態
に遷移する。
p


Z0
決定性プッシュダウンオートマトンの
1ステップの動作(2)
…
a
x
 (q,  , Y )  ( p,  )
有限制御部
q
状態
Y
$
のとき

Z0
…
a
x
$
有限制御部
状態
p


Z0
(q0 , a1a2a3...an , Z0 )
初期様相
a1 a2 a3
…
an
$
有限制御部
状態
q0
Z0
 (q0 , a1 , Z0 )  (q1 ,1Z0 )
(q1 , a2a3...an ,1Z0 )
次の様相
a1 a2 a3
…
有限制御部
状態
q1
1
Z0
an
$
以下,ステップを繰り返して,
(qn ,  ,  n Z 0 )
動作停止時の様相
a1 a2 a3
…
q n  F

 n  
an $
のとき,
有限制御部
状態
入力語を受理。
qn
n
Z0
M 31  Q, , ,  , q0 , Z0 , F 
Q  {q0 , q1 , q2}
  {a, b}
  {A, Z0 }
 : Q  ( { })  の部分集合  Q  *
 (q0 , a, Z 0 )  (q0 , AZ0 ),
 (q0 , a, A)  (q0 , AA),
 (q0 , b, A)  (q1 ,  ),
 (q1 , b, A)  (q1 ,  ),
 (q1 ,  , Z 0 )  (q2 , Z 0 )
F  {q2 }
M 31の状態遷移図
F
{1q,2q}2}
q0{
Q
q0q, 0q
a, Z0 / AZ0
b, A / 
q0
b, A / 
q1
 , Z0 / Z0
a, A / AA
 (q(0q,(aq
()
AZ
), q
b,A
,)A
)Z0(,q
q,0AA
) )2), Z0 )
,0qZa,(1b0,q,),A
,q
q0(1,
1(
0(
1
0()
q2
入力語aaabbbに対する M 31の動作
a a a b b b
a, Z0 / AZ0
$
b, A / 
q0
b, A / 
q1
 , Z0 / Z0
a, A / AA
Z0
q2
a a a b b b
a, Z0 / AZ0
$
b, A / 
q0
b, A / 
q1
 , Z0 / Z0
a, A / AA
A Z0
q2
a a a b b b
a, Z0 / AZ0
$
b, A / 
q0
b, A / 
q1
 , Z0 / Z0
a, A / AA
A A Z0
q2
a a a b b b
a, Z0 / AZ0
$
b, A / 
q0
b, A / 
q1
 , Z0 / Z0
a, A / AA
A A A Z0
q2
a a a b b b
a, Z0 / AZ0
$
b, A / 
q0
b, A / 
q1
 , Z0 / Z0
a, A / AA
A A Z0
q2
a a a b b b
a, Z0 / AZ0
$
b, A / 
q0
b, A / 
q1
 , Z0 / Z0
a, A / AA
A Z0
q2
a a a b b b
a, Z0 / AZ0
$
b, A / 
q0
b, A / 
q1
 , Z0 / Z0
a, A / AA
Z0
q2
a a a b b b
a, Z0 / AZ0
入力語を読み終えたとき,
受理状態に遷移し,
その時プッシュダウンスタックは空
(ボトムマーカーのみ)なので,
M31 は入力語 aaabbb を受理する。
$
b, A / 
q0
b, A / 
q1
 , Z0 / Z0
a, A / AA
Z0
q2
入力語aaabbに対する M 31の動作
a a a b b
a, Z0 / AZ0
$
b, A / 
q0
b, A / 
q1
 , Z0 / Z0
a, A / AA
Z0
q2
a a a b b $
a, Z0 / AZ0
b, A / 
q0
b, A / 
q1
 , Z0 / Z0
a, A / AA
A Z0
q2
a a a b b $
a, Z0 / AZ0
b, A / 
q0
b, A / 
q1
 , Z0 / Z0
a, A / AA
A A Z0
q2
a a a b b
a, Z0 / AZ0
$
b, A / 
q0
b, A / 
q1
 , Z0 / Z0
a, A / AA
A A A Z0
q2
a a a b b
a, Z0 / AZ0
$
b, A / 
q0
b, A / 
q1
 , Z0 / Z0
a, A / AA
A A Z0
q2
a a a b b $
入力語は読み終えたが,
受理状態ではなく,
プッシュダウンスタックも空ではない。
これ以上遷移できないので M31 は入力語
aaabb を拒否する。
a, Z0 / AZ0
b, A / 
q0
b, A / 
q1
 , Z0 / Z0
a, A / AA
A Z0
q2
入力語aaabbbbに対する M 31の動作
a a a b b b b
a, Z0 / AZ0
$
b, A / 
q0
b, A / 
q1
 , Z0 / Z0
a, A / AA
Z0
q2
a a a b b b b
a, Z0 / AZ0
$
b, A / 
q0
b, A / 
q1
 , Z0 / Z0
a, A / AA
A Z0
q2
a a a b b b b $
a, Z0 / AZ0
b, A / 
q0
b, A / 
q1
 , Z0 / Z0
a, A / AA
A A Z0
q2
a a a b b b b $
a, Z0 / AZ0
b, A / 
q0
b, A / 
q1
 , Z0 / Z0
a, A / AA
A A A Z0
q2
a a a b b b b $
a, Z0 / AZ0
b, A / 
q0
b, A / 
q1
 , Z0 / Z0
a, A / AA
A A Z0
q2
a a a b b b b $
a, Z0 / AZ0
b, A / 
q0
b, A / 
q1
 , Z0 / Z0
a, A / AA
A Z0
q2
a a a b b b 入力語を読み終えることができ
b $
ない(これ以上遷移できない)の
で,M31 は入力語 aaabbbb を
拒否する。
a, Z0 / AZ0
b, A / 
q0
b, A / 
q1
 , Z0 / Z0
a, A / AA
Z0
q2
同様に,
・ M31 は,a だけから成る入力語は読み終えることはできるが,
読み終えて遷移する状態は受理状態ではなく,かつその時
のプッシュダウンスタックは空でない。
また,
・いくつかの a の後にいくつかの b が来てさらに a が来るような入力語
・ b から始まる入力語
は,いずれも M31 はその入力語を読み終えることができない。
形式言語とオートマト
a, Z0 / AZ0
b, A / 
q0
b, A / 
q1
 , Z0 / Z0
a, A / AA
よって,
L(M 31 )  {a b | n  1}
n n
である。
q2
本日の予定2
形式言語とオートマト
dpda M 33  Q, , ,  , q0 , Z0 , F 
Q  {q0 , q1 , q2}
  {0,1, # }
  { A, B, Z 0 }
 : Q  ( { })  の部分集合  Q  *
 (q0 ,0, Z 0 )  (q0 , AZ0 ), (q0 ,1, Z 0 )  (q0 , BZ0 ),
 (q0 ,0, A)  (q0 , AA), (q0 ,0, B )  (q0 , AB),
 (q0 ,1, A)  (q0 , BA), (q0 ,1, B )  (q0 , BB),
 (q0 , # , A)  (q1 , A), (q0 , # , B )  (q1 , B ),
 (q1 ,0, A)  (q1 ,  ), (q1 ,1, B )  (q1 ,  ),
 (q1 ,  , Z 0 )  (q2 , Z 0 )
F  {q2 }
M 33の状態遷移図
0, A / 
1, B / 
0, Z0 / AZ0
1, Z0 / BZ0
q0
0, A/ AA
0, B / AB
1, A/ BA
1, B / BB
# , A/ A
#, B / B
q1
 , Z0 / Z0
q2
M 33の動作例
0 1 0 0 # 0 0 1 0 $
0, A / 
1, B / 
0, Z0 / AZ0
1, Z0 / BZ0
q0
# , A/ A
#, B / B
q1
 , Z0 / Z0
0, A/ AA
0, B / AB
1, A/ BA
1, B / BB
Z0
q2
0 1 0 0 # 0 0 1 0 $
0, A / 
1, B / 
0, Z0 / AZ0
1, Z0 / BZ0
q0
# , A/ A
#, B / B
q1
 , Z0 / Z0
0, A/ AA
0, B / AB
1, A/ BA
1, B / BB
Z0
q2
0 1 0 0 # 0 0 1 0 $
0, A / 
1, B / 
0, Z0 / AZ0
1, Z0 / BZ0
q0
# , A/ A
#, B / B
q1
 , Z0 / Z0
0, A/ AA
0, B / AB
1, A/ BA
1, B / BB
A Z0
q2
0 1 0 0 # 0 0 1 0 $
0, A / 
1, B / 
0, Z0 / AZ0
1, Z0 / BZ0
q0
# , A/ A
#, B / B
q1
 , Z0 / Z0
0, A/ AA
0, B / AB
1, A/ BA
1, B / BB
B A Z0
q2
0 1 0 0 # 0 0 1 0 $
0, A / 
1, B / 
0, Z0 / AZ0
1, Z0 / BZ0
q0
# , A/ A
#, B / B
q1
 , Z0 / Z0
0, A/ AA
0, B / AB
1, A/ BA
1, B / BB
A B A Z0
q2
0 1 0 0 # 0 0 1 0 $
0, A / 
1, B / 
0, Z0 / AZ0
1, Z0 / BZ0
q0
# , A/ A
#, B / B
q1
 , Z0 / Z0
0, A/ AA
0, B / AB
1, A/ BA
1, B / BB
A A B A Z0
q2
0 1 0 0 # 0 0 1 0 $
0, A / 
1, B / 
0, Z0 / AZ0
1, Z0 / BZ0
q0
# , A/ A
#, B / B
q1
 , Z0 / Z0
0, A/ AA
0, B / AB
1, A/ BA
1, B / BB
A A B A Z0
q2
0 1 0 0 # 0 0 1 0 $
0, A / 
1, B / 
0, Z0 / AZ0
1, Z0 / BZ0
q0
# , A/ A
#, B / B
q1
 , Z0 / Z0
0, A/ AA
0, B / AB
1, A/ BA
1, B / BB
A B A Z0
q2
0 1 0 0 # 0 0 1 0 $
0, A / 
1, B / 
0, Z0 / AZ0
1, Z0 / BZ0
q0
# , A/ A
#, B / B
q1
 , Z0 / Z0
0, A/ AA
0, B / AB
1, A/ BA
1, B / BB
B A Z0
q2
0 1 0 0 # 0 0 1 0 $
0, A / 
1, B / 
0, Z0 / AZ0
1, Z0 / BZ0
q0
# , A/ A
#, B / B
q1
 , Z0 / Z0
0, A/ AA
0, B / AB
1, A/ BA
1, B / BB
A Z0
q2
0 1 0 0 # 0 0 1 0 $
0, A / 
1, B / 
0, Z0 / AZ0
1, Z0 / BZ0
q0
# , A/ A
#, B / B
q1
 , Z0 / Z0
0, A/ AA
0, B / AB
1, A/ BA
1, B / BB
Z0
q2
0 1 0 0 # 0 0 1 0 $
様相に到達することが
できた。
0, A / 
1, B / 
0, Z0 / AZ0
1, Z0 / BZ0
q0
受理条件を満たす
# , A/ A
#, B / B
q1
 , Z0 / Z0
0, A/ AA
0, B / AB
1, A/ BA
1, B / BB
Z0
q2
0, A / 
1, B / 
0, Z0 / AZ0
1, Z0 / BZ0
q0
# , A/ A
#, B / B
q1
 , Z0 / Z0
q2
0, A/ AA
0, B / AB
1, A/ BA
1, B / BB
なお,

L(M33 )  {w# w | w {0,1} }
R
である。
非決定性PDAで判別できる入力
• 真ん中に#を入れない場合でも、
nPDAなら判別できる
• これはdPDAにはない能力である
npda M 34  Q, , ,  , q0 , Z0 , F 
Q  {q0 , q1 , q2}
  {0,1}
  { A, B, Z 0 }
 : Q  ( { })  の部分集合  2
Q*
 (q0 ,0, Z 0 )  {( q0 , AZ0 )}, (q0 ,1, Z 0 )  {( q0 , BZ0 )},
 (q0 ,0, A)  {( q0 , AA), (q1 ,  )}, (q0 ,0, B)  {( q0 , AB)},
 (q0 ,1, A)  {( q0 , BA)}, (q0 ,1, B )  {( q0 , BB), (q1 ,  )},
 (q1 ,0, A)  {( q1 ,  )}, (q1 ,1, B )  {( q1 ,  )},
 (q1 ,  , Z 0 )  {( q2 , Z 0 )}
F  {q2 }
M 34の状態遷移図
0, A / 
1, B / 
0, Z0 / AZ0
1, Z0 / BZ0
q0
0, A/ AA
0, B / AB
1, A/ BA
1, B / BB
0, A / 
1, B / 
q1
 , Z0 / Z0
q2
0 1 0 0 0 0 1 0 $
0, A / 
1, B / 
0, Z0 / AZ0
1, Z0 / BZ0
q0
M 34の動作例
0, A / 
1, B / 
q1
 , Z0 / Z0
0, A/ AA
0, B / AB
1, A/ BA
1, B / BB
Z0
q2
0 1 0 0 0 0 1 0 $
0, A / 
1, B / 
0, Z0 / AZ0
1, Z0 / BZ0
q0
0, A / 
1, B / 
q1
 , Z0 / Z0
0, A/ AA
0, B / AB
1, A/ BA
1, B / BB
Z0
q2
0 1 0 0 0 0 1 0 $
0, A / 
1, B / 
0, Z0 / AZ0
1, Z0 / BZ0
q0
0, A / 
1, B / 
q1
 , Z0 / Z0
0, A/ AA
0, B / AB
1, A/ BA
1, B / BB
A
Z0
q2
0 1 0 0 0 0 1 0 $
0, A / 
1, B / 
0, Z0 / AZ0
1, Z0 / BZ0
q0
0, A / 
1, B / 
q1
 , Z0 / Z0
0, A/ AA
0, B / AB
1, A / BA
1, B / BB
B A Z0
q2
0 1 0 0 0 0 1 0 $
0, A / 
1, B / 
0, Z0 / AZ0
1, Z0 / BZ0
q0
0, A / 
1, B / 
q1
0, A/ AA
0, B / AB
1, A / BA
1, B / BB
A B
 , Z0 / Z0
q2
2通りの遷移の可能性が
あるが,ここではこちらの
遷移を選ぶ。
A Z0
0 1 0 0 0 0 1 0 $
0, A / 
1, B / 
0, Z0 / AZ0
1, Z0 / BZ0
q0
0, A / 
1, B / 
q1
0, A/ AA
0, B / AB
1, A / BA
1, B / BB
 , Z0 / Z0
q2
ここでも2通りの遷移の可能性
があるが,
今度はこちらの遷移を選ぶ。
A
A B
A Z0
0 1 0 0 0 0 1 0 $
0, A / 
1, B / 
0, Z0 / AZ0
1, Z0 / BZ0
q0
0, A / 
1, B / 
q1
 , Z0 / Z0
0, A/ AA
0, B / AB
1, A / BA
1, B / BB
A B
A Z0
q2
0 1 0 0 0 0 1 0 $
0, A / 
1, B / 
0, Z0 / AZ0
1, Z0 / BZ0
q0
0, A / 
1, B / 
q1
 , Z0 / Z0
0, A/ AA
0, B / AB
1, A / BA
1, B / BB
B A Z0
q2
0 1 0 0 0 0 1 0 $
0, A / 
1, B / 
0, Z0 / AZ0
1, Z0 / BZ0
q0
0, A / 
1, B / 
q1
 , Z0 / Z0
0, A/ AA
0, B / AB
1, A / BA
1, B / BB
A Z0
q2
0 1 0 0 0 0 1 0 $
0, A / 
1, B / 
0, Z0 / AZ0
1, Z0 / BZ0
q0
0, A / 
1, B / 
q1
 , Z0 / Z0
0, A/ AA
0, B / AB
1, A / BA
1, B / BB
Z0
q2
0 1 0 0 0 0 1 0 $
0, A / 
1, B / 
0, Z0 / AZ0
1, Z0 / BZ0
q0
0, A / 
1, B / 
q1
受理条件を満たす様相
に到達することができた。
 , Z0 / Z0
0, A/ AA
0, B / AB
1, A / BA
1, B / BB
Z0
q2
0, A / 
1, B / 
0, Z0 / AZ0
1, Z0 / BZ0
q0
0, A / 
1, B / 
q1
 , Z0 / Z0
q2
0, A/ AA
0, B / AB
1, A/ BA
1, B / BB
なお,

L(M 34 )  {ww | w {0,1} }
R
である。