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
q0q, 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
である。