計算の理論 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 * 0 *10(0 *10) * 00* 0 * (0 *10(0 *10) * 0 )0 * r122 0 *1 3 11 2 13 2 33 2 31 00 A 2 11 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 r r (r *)r r 1( *)○○○ 2 14 1 12 1 22 1 24 1 14 r212 r221 (r221 *)r211 r211 ( *)○○○○○ r222 r221 (r221 *)r221 r221 ( *) ○ r232 r221 (r221 *)r231 r231 ( *)○○○○○ r r (r *)r r ( *)○○○○○ 2 24 1 22 1 22 1 24 1 24 どんどん進める 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 r144 r143 (r443 *)r443 r143 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の列で、長さが完全平方数であるものの 全体 L {0 | iは1以上の整数} 0, 0000, 000000000, 0000000000000000, … i2 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) uvi w L (i 0) Step 5 i=2のとき、 2 2 2 2 n | uv w | n n (n 1) これは完全平方数ではなく、Lに含まれな い。これは矛盾。 よってLは正則ではない。 今日のミニテスト ミニテスト – 演習問題 2.13のb – 教科書・資料を見ても良い 資料、ミニテストがない人は前へ 提出したら帰って良し 次回 – 閉包性。
© Copyright 2024 ExpyDoc