計算の理論 I
ー閉包性ー
月曜3校時
大月 美佳
連絡事項
 美化強化の通達
– 講義室
– 玄関前
今日の講義内容
1. 追加事項と前回のミニテスト
1.
2.
追加事項:正規表現のまとめ方
ミニテスト(演習問題 2.13のb )の解答例
2. 前回の復習
例3.2 ついて
3. 今日の新しいこと
閉包性(節3.2, p. 75)
→ 正則表現に対する各種演算のうち閉じてるものの話
→ 和、連接、Kleene閉包、補集合、共通部分、代入、準同型
写像、商
まとめ方が難しい?
 演習問題 2.16 を使う
rs  sr
(r  s)  t  r  ( s  t )
(rs )t  r ( st )
r ( s  t )  rs  rt
(r  s )t  rt  st
○*  
(r*)* r *
(  r )*  r *
(r * s*)* (r  s) *
プリントにミス
前回のミニテスト
(演習問題 2.13, p. 66)
下の状態図に対応する正則表現を求めよ。
b)
0
A
B
0
開始
1
1
C
0
1
とりあえず番号をつける
0
A
1
0
1
B
0
A
A
r110  
A
B
r120  0
A
C
r130  1
B
A
r210  0
B
B
r220  
C
r230  1
A
r310  1
B
r320  0
C
r330  
C
1
開始
A→1
B→2
C→3
B
C
C
C
状態Aが加わった
k=1 その1
r111  r110 (r110 *)r110  r110   ( *)    
ε
ε
A
ε
A
A
A
A
A
ε
ε
A
ε
A
A
A
A
ε
A
ε
A
A
r121  r110 (r110 *)r120  r120   ( *)0  0  0  0  0
ε
A
A
A
ε
A
A
ε
A
ε
A
B
ε
A
B
A
ε
A
ε
A
B
状態Aが加わった
k=1 その2
r131  r110 (r110 *)r130  r130   ( *)1 1  1  1  1
ε
ε
A
ε
A
A
A
C
A
ε
ε
A
ε
A
A
A
C
ε
A
ε
A
C
r211  r210 (r110 *)r110  r210  0(0*)  0  00* 0  00*
ε
A
B
A
ε
B
A
ε
A
ε
A
A
ε
B
A
A
ε
A
ε
A
A
状態Aが加わった
k=1 その3
r221  r210 (r110 *)r120  r220  0( *)0    00  
ε
ε
A
ε
B
B
A
B
A
ε
ε
A
ε
A
A
B
B
ε
A
ε
A
B
r231  r210 (r110 *)r130  r230  0( *)1 1  011
ε
ε
A
B
A
ε
B
A
ε
A
ε
A
C
ε
B
C
A
ε
A
ε
A
C
状態Aが加わった
k=1 その4
r311  r310 (r110 *)r110  r310  1( *)  1  1  1  1
ε
ε
A
ε
C
C
A
A
A
ε
ε
A
ε
A
A
C
A
ε
A
ε
A
A
r321  r310 (r110 *)r120  r320  1( *)0  0  10  0
ε
ε
A
B
A
ε
B
A
ε
A
ε
A
C
ε
B
C
A
ε
A
ε
A
C
状態Aが加わった
k=1 その5
r331  r310 (r110 *)r130  r330  1( *)1    11 
ε
ε
A
ε
C
C
A
C
A
ε
ε
A
ε
A
A
C
C
ε
A
ε
A
r 
r  00*
r311  1
r 0
r  00  
r321  10  0
r 1
r  01 1
r331  11 
1
11
1
12
1
13
1
21
1
22
1
23
C
さらに状態Bが加わった
k=2 例1
r112  r121 (r221 *)r211  r111  0((00   )*)00* 
 0(00) * 00* 
ε
ε
ε
A
B
ε
A
A
ε
ε
A
A
B
ε
ε
A
ε
ε
A
A
ε
A
A
A
ε
ε
B
ε
A
ε
A
A
ε
A
ε
ε
A
B
A
ε
A
A
ε
A
どんどん進める
k=2
r122  r121 (r221 *)r221  r121  0((00   )*)(00   )  0  0(00) * 0  0(00) *
r132  r121 (r221 *)r231  r131  0((00   )*)(01 1)  1  0(00) * (0   )1  1
 00*1  1  0 *1
r212  r221 (r221 *)r211  r211  (00   )((00   )*)00* 00*  (00) * 00* 00*
 (00) * 00*
r222  r221 (r221 *)r221  r221  (00   )((00   )*)(00   )  (00   )  (00) *
r232  r221 (r221 *)r231  r231  (00   )((00   )*)(01 1)  (01 1)
 ((00) *  )(01 1)  (00) * (0   )1  0 *1
r312  r321 (r221 *)r211  r311  (10  0)((00   )*)00* 1  (10  0)(00) * 00* 1
r322  r321 (r221 *)r221  r321  (10  0)((00   )*)(00   )  (10  0)
 (10  0)((00) *  )  (10  0)(00) *
r332  r321 (r221 *)r231  r331  (10  0)((00   )*)(01 1)  (11  )
 (10  0)(00) * (0   )1  11   (10  0)0 *1  11 
最終状態への道
k=3
r111  0(00) * 00* 
r122  0(00) *
r131  0 *1
r  r123  r133
r211  (00) * 00*
r123  r132 ( r332 *)r322  r122
r221  (00) *
r  r ( r *)r  r
r231  0 *1
3
13
2
13
2
33
2
33
2
13
r312  (10  0)(00) * 00* 1
r322  (10  0)(00) *
r332  (10  0)0 *1  11 
最終解
k=3
r122  0(00 ) *
r322  (10  0)( 00 ) *
r131  0 *1
r332  (10  0)0 *1  11  
r123  0 *1(((10  0)0 *1  11  )*)(10  0)(00) * 0(00) *
 0 *1((10  0)0 *1  11) * (10  0)(00) * 0(00) *
 0 *1(((10  0)0 *1) * (11)*)* (10  0)(00) * 0(00) *
r133  0 *1(((10  0)0 *1  11  )*)((10  0)0 *1  11  )  0 *1
 0 *1((10  0)0 *1  11) * 0 *1
 0 *1(((10  0)0 *1) * (11)*)* 0 *1
r123  r133  0(00) * 0 *1(  (((10  0)0 *1) * (11)*)* (  (10  0)(00)*))
前回の補足
 例3.2 (p. 74)
 n は状態数
…
q0
q1
…
qi
qi+1
…
qn-1
qn
例3.2
Step 1 調べたい言語 L
 1で始まる0と1の列で2進数としてみたとき
素数を表すものの集合
 10, 11, 101, 111, 1011…
2
3
5
7
11
Step 2~4
2. 補題の性質をもつnを仮定
正、×p
3. z を次のような記号列とする
n
2 より大きい素数 pの2進表記
4. z を |uv|≦nかつ|v|≧1であるようなu, v, w
に分解したとする。このu, v, wを2進数と
してみたとき、nu, nv, nwとおく。このとき仮
定から、
|v||w|
p  nu 2
 nv 2  nw
|w|
Step 5 その1
 以下のような素数qを考えることができる。
uv p w
q  nu 2
p|v||w|
 nv s 2  nw
s  1  2  ...  2
|v|
| w|
( p 1)|v|
 Fermat の定理 (p. 74にrefあり)
2
p 1
 1 mod p
Step 5 その2
 両辺を|v|乗
2( p 1)|v|  1 mod p
2
p | v|
 2 mod p
|v|
 (2  1)(s  1)  2
|v|
p|v|
 2  0 mod p
|v|
割り切れない
 s-1がpで割り切れる
 1 | v | nより 2  2  2  p
|v|
n
Step 5 その3
 q を pで割ると?
q  (nu 2|v||w|  nv 2|w|  nv (s - 1)2|w|  nw ) mod p
q  (nu 2
|v|| w|
 nv 2  nw ) mod p
| w|
q  p mod p  0 mod p
 これはqがpでない素数であるという仮定
に反するので、Lは正規集合ではない。
今日の新しいこと
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)
→最小化
閉包性
(closure property)
 閉包性とは?
– ある演算に対して閉じている(ある言語族へ
の演算の結果が同じ言語族に戻る)こと
– 例:2つの正則集合の和は正則集合
 有効的な閉包性
– 具体的な言語族が与えられたときに、実際に
結果を求める手続きがあること
– 例:和の正規表現の導出法は存在
和、連接、Kleene閉包
(p. 76 定理3.1)
定理3.1
正則集の族は和、連接、Kleene閉包の下
で閉じている。
定義より、r=s+t、r=st、r=s*
補集合
(p. 76 定理3.2)
定理3.2
正則集合の族は補集合に関して閉じてい
る。
=Lが正則集合でかつL⊆Σ*のとき、Σ*ー
Lも正則表現
Σ*
Σ*ーL
L
共通部分
(p. 76 定理3.3)
定理3.3
正則集合の族は共通部分に関して閉じて
いる。
Σ*
L1  L2
L1
 L1  L2
L2
L  *  L
代入
(p. 78 定理3.4)
定理 3.4
正則集合の族は代入に関して閉じている
=正則集合に正則集合を代入した結果は
正則集合
f ( )  
代入(substitution)

f
0
1
f ( xa)  f ( x) f (a)
2 *

f ( L)   f ( x )
a
b*
a
b
f (010)  ab * a
f (0 * (0  1)1*)  a * (a  b*)(b*)*
 a *b *
xL
準同型写像
(p. 79 定理3.5)
定理 3.5
正則集合の族は準同型写像およびその
逆写像に関して閉じている
準同型写像(homomorphism)

2 *

h
0
1
aa
aba
元が一つのもの
a
b
h(010)  aaabaaa
h((01)*)  (aaaba) *
逆準同型写像
(p. 79 定理3.5)
定理 3.5
正則集合の族は準同型写像およびその
逆写像に関して閉じている
逆準同型写像(inverse homomorphic image)
h 1 ( L)
L
h(x1)
x1
x2
h(x2)
h 1 ( L)  {x | h( x)  L}
h 1 ( w)  {x | h( x)  w}
h 1 (aaabaaa )  010
h 1 (( ab  ba ) * a )  1
言語の商
(p. 81 定理3.6)
定理 3.6
正則集合の、任意の言語による商は正則
有効的閉包性ではない
表現である
商(quontient)
L1 / L2  {x | ある L2の元yに対して xy  L}
例 3.6 (p. 80)
L1  0 *10*, L2  10*1のとき、 L1 / L2 ○
L1  0 *10*, L3  0 *1のとき、 L1 / L3  0 *
閉じた演算の利用法
(p. 79 例3.5)
ある言語が正則集合でないことを、
既に正則集合でないことが分かっている
言語を変換して求めることで示す。
例 3.5
h1 (a)  a
h2 (a)  0
h1 (b)  ba
h2 (b)  1
h1 (c)  a
h2 (c)  1
h2 (h11 ({anban | n  1}))  {0n1n | n  1}
今日のミニテスト
 ミニテスト
– 演習問題 3.13のa
– 教科書・資料を見ても良い
 資料、ミニテストがない人は前へ
 提出したら帰って良し
 次回
– 正則集合の決定性。
ダウンロード

正則集合の閉包性