Transcript 反復補題
計算の理論 I
ー反復補題ー
月曜3校時
大月 美佳
連絡事項
ちょいまち。
今日の講義内容
1. 前回のミニテスト
1. ミニテスト(演習問題 2.13のa )の解答例
2. DFAから正則表現へ変換してみる
3. 今日の新しいこと
1. 正則表現とFAの等価性 つづき
1. 正則表現からのε-動作を含むNFAの作り方
→ 例2.12 (p. 42)
2. DFAからの正則表現の作り方
→ 例2.13 (p. 45)
前回のミニテスト
(演習問題 2.13, p. 66)
下の状態図に対応する正則表現を求めよ。
a)
0
1
A
0
B
C
1
開始
0
とりあえず番号をつける
r110 {a | (q1 , a) q1} 0
00
A
1
B
0
C
1
開始
0
A → q1
B → q2
C → q3
r120 {a | (q1 , a) q2 } 1
r130 {a | (q1 , a) q3 } ○
r210 {a | (q2 , a) q1} ○
r220 {a | (q2 , a) q2 }
r230 {a | (q2 , a) q3 } 0
r310 {a | (q3 , a) q1} 0
r320 {a | (q3 , a) q2 } 1
r330 {a | (q3 , a) q3}
どんどん進める
k=1
r111 r110 (r110 *)r110 r110 (0 )(( 0 )*)(0 ) (0 ) 0 *
r121 r110 (r110 *)r120 r120 (0 )(( 0 )*)1 1 0 *1 1 0 *1
r131 r110 (r110 *)r130 r130 (0 )(( 0 )*)○○○
r211 r210 (r110 *)r110 r210 ○((0 )*)(0 ) ○○○○
r221 r210 (r110 *)r120 r220 ○((0 )*)1 ○
r231 r210 (r110 *)r130 r230 ○((0 )*)○0 ○0 0
r311 r310 (r110 *)r110 r310 0((0 )*)(0 ) ○ 00 * ○ 00 *
r321 r310 (r110 *)r120 r320 0((0 )*)1 1 00 *1 1 0 *1
r331 r310 (r110 *)r130 r330 0((0 )*)○
どんどん進める
k=2
r112 r121 (r221 *)r211 r111 0 *1( *)○0* ○0* 0 *
r122 r121 (r221 *)r221 r121 0 *1( *) 0 *1 0 *1 0 *1 0 *1
r132 r121 (r221 *)r231 r131 0 *1( *)0 ○ 0 *10
r212 r221 (r221 *)r211 r211 ( *)○○○○○
r222 r221 (r221 *)r221 r221 ( *)
r232 r221 (r221 *)r231 r231 ( *)0 0 0 0 0
r312 r321 (r221 *)r211 r311 0 *1( *)○00* ○00* 00 *
r322 r321 (r221 *)r221 r321 0 *1( *) 0 *1 0 *1 0 *1 0 *1
r332 r321 (r221 *)r231 r331 0 *1( *)0 0 *10
最終状態への道
k=3
r r (r *)r r
r112 0 *
0 *10((0 *10 )*)00 * 0 *
r122 0 *1
3
11
2
13
2
33
2
31
2
11
0 *10(0 *10) * 00 * 0 *
(0 *10(0 *10) * 0 )0 *
00
A
r212 ○
r222
r232 0
1
B
0
C
1
開始
r132 0 *10
0
r312 00 *
r322 0 *1
r332 0 *10
前々回の例2.12
q0
ε
q1
ε
q3
q2
1
0
ε
01*+1
δ
q
9
q4
ε
ε
ε
q5
ε
q6
1 q7 ε
q8
ε
M(Q, {0, 1}, δ, q0, {q9})
Q={q1, q2, q3, q4, q5,
q6, q7, q8, q9}
δ は右表
0
1
ε
q0
-
-
{q1 }
q1
-
{q2 }
-
q2
-
-
{q9 }
q3
{q4 }
-
-
q4
-
-
{q5 }
q5
-
-
{q6 ,
q8 }
q6
-
{q7 }
-
q7
-
-
{q7,
q8 }
q8
-
-
{q9 }
q9
-
-
-
2.12から生成されたNFA
δ´
M´(Q´, {0,1},δ´,q0,{q9})
Q´={q0, q1, q2, q3, q4, q5, q6, q7,
q8, q9}
δ ´は右表
0
1
q0
{q4 , q5 , q6 , q8 , q9}
{q2 , q9}
q1
-
{q2 , q9}
q2
-
-
q3
{q4 , q5 , q6 , q8 , q9}
-
q4
-
{q6 , q7 , q8 , q9}
q5
-
{q6 , q7 , q8 , q9}
q6
-
{q6 , q7 , q8 , q9}
q7
-
{q6 , q7 , q8 , q9}
q8
-
-
q9
-
-
さらに変換されたDFA
δ´
δ´´
0
1
0
1
q0
{q4 , q5 , q6 , q8 ,
q9}
{q2 , q9}
[q0 ]
[q4 , q5 , q6 , q8 , q9]
[q2 , q9]
q1
-
{q2 , q9}
[q4 , q5 , q6 , q8 ,
q9]
-
[q6 , q7 , q8 , q9]
q2
-
-
[q2 , q9]
-
-
q3
{q4 , q5 , q6 , q8 ,
q9}
-
[q6 , q7 , q8 , q9]
-
[q6 , q7 , q8 , q9]
q4
-
{q6 , q7 , q8 ,
q9}
q5
-
{q6 , q7 , q8 ,
q9}
q6
-
{q6 , q7 , q8 ,
q9}
q7
-
{q6 , q7 , q8 ,
q9}
q8
-
-
q9
-
-
M´´ (Q´´, {0,1},δ´´,[q0 ],F)
Q´´={[q0 ], [q4, q5, q6, q8, q9 ],
[q2, q9 ], [q6, q7, q8, q9 ]}
δ´´は上表
F= {[q4, q5, q6, q8, q9 ], [q2, q9 ],
[q6, q7, q8, q9 ]}
DFAから正則表現へ
δ´´
[q2 , q9]
0
1
[q0 ]
[q4 , q5 , q6 , q8 , q9]
[q2 , q9]
[q4 , q5 , q6 , q8 ,
q9]
-
[q6 , q7 , q8 , q9]
[q2 , q9]
-
-
[q6 , q7 , q8 , q9]
-
[q6 , q7 , q8 , q9]
1
[q0 ]
0
[q4 ,q5 ,q6 ,q8 ,q9]
1
開始
[q6 ,q7 ,q8 ,q9]
1
[q0 ] → q1
[q2, q9] → q2
[q4 , q5 , q6 , q8, q9] → q3
[q6 , q7 , q8, q9] → q4
r110
r210 ○
r310 ○
r410 ○
r120 1
r220
r320 ○
r420 ○
r130 0
r230 ○
r330
r430 ○
r ○
r240 ○
r340 1
r440 1
0
14
どんどん進める
k=1 その1
r111 r110 (r110 *)r110 r110 ( *)
r121 r110 (r110 *)r120 r120 ( *)1 1 1 1 1
r131 r110 (r110 *)r130 r130 ( *)0 0 0 0 0
r141 r110 (r110 *)r140 r140 ( *)○○○
r211 r210 (r110 *)r110 r210 ○( *) ○○○○
r r (r *)r r ○( *)1 ○
1
22
0
21
0
11
0
12
0
22
r231 r210 (r110 *)r130 r230 ○( *)0 ○○○○
r241 r210 (r110 *)r140 r240 ○( *)○○○○○
どんどん進める
k=1 その2
r111 r110 (r110 *)r110 r110 ( *)
r311 r310 (r110 *)r110 r310 ○( *) ○○○○
r321 r310 (r110 *)r120 r320 ○( *)1 ○○○○
r331 r310 (r110 *)r130 r330 ○( *)0 ○
r341 r310 (r110 *)r140 r340 ○( *)○1 ○1 1
r411 r410 (r110 *)r110 r410 ○( *) ○○○○
r421 r410 (r110 *)r120 r420 ○( *)1 ○○○○
r431 r410 (r110 *)r130 r430 ○( *)0 ○○○○
r441 r410 (r110 *)r140 r440 ○( *)○1 ○1 1
どんどん進める
k=2 その1
r112 r121 (r221 *)r211 r111 1( *)○ ○
r122 r121 (r221 *)r221 r121 1( *) 1 1 1 1
r132 r121 (r221 *)r231 r131 1( *)○0 ○0 0
r142 r121 (r221 *)r241 r141 1( *)○○○
r212 r221 (r221 *)r211 r211 ( *)○○○○○
r222 r221 (r221 *)r221 r221 ( *) ○
r232 r221 (r221 *)r231 r231 ( *)○○○○○
r242 r221 (r221 *)r241 r241 ( *)○○○○○
どんどん進める
k=2 その2
r312 r321 (r221 *)r211 r311 ○( *)○○○○○
r322 r321 (r221 *)r221 r321 ○( *) ○○○○
r332 r321 (r221 *)r231 r331 ○( *)○
r342 r321 (r221 *)r241 r341 ○( *)○1 ○1 1
r412 r421 (r221 *)r211 r411 ○( *)○○○○○
r422 r421 (r221 *)r221 r421 ○( *) ○○○○
r432 r421 (r221 *)r231 r431 ○( *)○○○○○
r442 r421 (r110 *)r241 r441 ○( *)○1 ○1 1
どんどん進める
k=3 その1
r113 r132 (r332 *)r312 r112 0( *)○ ○
r123 r132 (r332 *)r322 r122 0( *)○1 ○1 1
r133 r132 (r332 *)r332 r132 0( *) 0 0 0 0
r143 r132 (r332 *)r342 r142 0( *)1 ○ 01 ○ 01
r213 r232 (r332 *)r312 r212 ○( *)○○○○○
r223 r232 (r332 *)r322 r222 ○( *)○ ○
r233 r232 (r332 *)r332 r232 ○( *) ○○○○
r243 r232 (r332 *)r342 r242 ○( *)1 ○○○○
どんどん進める
k=3 その2
r313 r332 (r332 *)r312 r312 ( *)○○○○○
r323 r332 (r332 *)r322 r322 ( *)○○○○○
r333 r332 (r332 *)r332 r332 ( *)
r343 r332 (r332 *)r342 r342 ( *)1 1 1 1 1
r413 r432 (r332 *)r312 r412 ○( *)○○○○○
r423 r432 (r332 *)r322 r422 ○( *)○○○○○
r433 r432 (r332 *)r332 r432 ○( *) ○○○○
r443 r432 (r332 *)r342 r442 ○( *)1 1 ○1 1
最終状態への道
k=4
r124 r143 (r443 *)r432 r123
01((1 )*)○1 1
r r (r *)r r
4
13
3
14
3
44
3
43
3
13
01((1 )*)○0 0
r r (r *)r r
4
14
3
14
3
44
3
44
3
14
01((1 )*)(1 ) 01 011*
r113
r123 1
r133 0
r143 ○
r213 ○
r223
r233 ○
r243 ○
r313 ○
r323 ○
r333
r343 1
r413 ○
r423 ○
r r r 1 0 011* 1 01*
4
12
4
13
4
14
r433 ○
r443 1
今日の新しいこと
1. 正則集合の性質(第3章, p. 71~)
1. 反復補題 (節3.1, p. 71)
→ある集合が正則でないことを示す
2. 閉包性 (節3.2, p. 75)
→正則表現に対する各種演算
3. 決定手続き (節3.3, p. 81)
→空、有限、無限、等価性
4. Myhill-Nerodeの定理 (節3.4, p. 84)
→最小化
反復補題
別名
– ポンプの定理 (pumping lemma)
何がしたいのか
– 何か言語が与えられたとき、正則でないことを示す。
– 例3.1 (p. 74)
0が2乗の個数であるような記号列の集合
– 例3.2 (p. 74)
0と1の記号列を2進数とみたとき、
素数であるような記号列の集合
反復補題とは
正則集合Lに対して次の条件を満たす定数nが
存在する。
zがLに属する語で|z|≧nならば、適当な語u, v, w
を選んで、
z uvw, | uv | n, | v | 1, uv w L(i 0)
i
を満たすようにすることができる。このnは、Lを
受理する最小の(すなわち状態数が最も少な
い)FAの状態数を超えない。
証明はp.73
正則でないことの示し方
(背理法)
1. 正則でないことを示す対象言語:L
2. Lに対して補題の性質をもつ数nを仮定する
(敵の仮定)。仮定後変更してはならない。
3. Lの元zをひとつ決める( |z|≧n) 。
4. z を、|uv|≦nかつ|v|≧1であるようなu, v, w に分
解する(敵の作業)
i
5. uv w がLに入らないようなiを指摘する。どの
ようなnに対してもこれを示す。
例3.1
Step 1 調べたい言語 L
0の列で、長さが完全平方数であるものの
全体
i2
L {0 | iは1以上の整数}
0, 0000, 000000000, 0000000000000000,
…
1の2乗 2の2乗 3の2乗
4の2乗
Step 2~4
補題の性質をもつnを仮定
n2
z 0 とおく
z を |uv|≦nかつ|v|≧1であるようなu, v, w
に分解したとする。このzは、
z uvw
1 | v | n (| uv | n)
uv i w L (i 0)
Step 5
i=2のとき、
2
2
2
2
n | uv w | n n (n 1)
これは完全平方数ではなく、Lに含まれな
い。これは矛盾。
よってLは正則ではない。
今日のミニテスト
ミニテスト
– 演習問題 2.13のb
– 教科書・資料を見ても良い
資料、ミニテストがない人は前へ
提出したら帰って良し
次回
– 閉包性。