計算の理論 ii turing 機械
DESCRIPTION
計算の理論 II Turing 機械. 月曜4校時 大月美佳. 講義の前に. 補講について 今日と1/6は補講 レポートについて 今日帰りに大レポート(20点配点) 1/6に小レポート(10点配点) 試験 2/10に試験(40点配点). 今日の講義. 前回のおさらい Turing 機械の合成 小さなものを組み上げて複雑なものへ 残り: T, S, C, K n 帰納的関数を計算する Turing 機械の合成 合成の仕方と例 ミニテスト レポート. Turing 機械の作り方. Turing 機械を 合成 して作る 単純な Turing 機械 - PowerPoint PPT PresentationTRANSCRIPT
計算の理論 計算の理論 IIIITuringTuring 機械機械
月曜 4 校時大月美佳
講義の前に
補講について– 今日と 1/6 は補講
レポートについて– 今日帰りに大レポート (20 点配点 )– 1/6 に小レポート (10 点配点 )
試験– 2/10 に試験 (40 点配点 )
今日の講義
1. 前回のおさらい1. Turing 機械の合成
1. 小さなものを組み上げて複雑なものへ2. 残り: T, S, C, Kn
2. 帰納的関数を計算する Turing 機械の合成1. 合成の仕方と例2. ミニテスト3. レポート
Turing 機械の作り方
Turing 機械を合成して作る1. 単純な Turing 機械
B, 1, r, l, <a>
2. 基本的な Turing 機械を合成R, L, R, T, S, C, Kn
3. 初期関数に対応する Turing 機械を合成Z(x), S(x), Un
i(x1,…, xn)
4. 原始帰納的関数関数の操作 I, II
Turing 機械 B
ヘッドが置かれています目に空白記号 B
を書き込む。
B=({q0, qh}, {B, 1}, K, q0, {qh})
K= { q01BNqh,
q0BBNqh } q0→qh
B 1 B
有限制御部
B
q0→qh
B B B
有限制御部
B
Turing 機械 1
ヘッドが置かれています目に 1 を書き込
む。B=({q0, qh}, {B, 1}, K,
q0, {qh})
K= { q011Nqh, q0B1Nqh }
q0→qh
B 1 B
有限制御部
1
q0→qh
B B B
有限制御部
1
Turing 機械 r
ヘッドを 1 こま右へ移す。B=({q0, qh}, {B, 1}, K,
q0, {qh})
K= { q011Rqh, q0BBRqh }
q0→qh
B 1 B
有限制御部
1
q0→qh
B B B
有限制御部
B
有限制御部
有限制御部
Turing 機械 l
ヘッドを 1 こま左へ移す。B=({q0, qh}, {B, 1}, K,
q0, {qh})
K= { q011Lqh, q0BBLqh }
q0→qh
B 1 B
有限制御部
1
q0→qh
B B B
有限制御部
B
有限制御部
有限制御部
Turing 機械 <a>
読み取られた記号が a であるか否かを判定する。
a であれば qh で停止し、a でなければ q1 で停止す
る。B=({q0, q1, qh}, {B, 1}, K,
q0, {q1 , qh})
K= { q0aaNqh, q0bbNq1 }
ここで、 a≠b
q0→qh
B a B
有限制御部
a
q0→q1
B b B
有限制御部
b
合成
2 つの Turing 機械M1=(Q1, Σ, K1, q0
1, F1), M2=(Q2, Σ, K2, q02, F2)
Q1∩Q2 = Φ と仮定できる。(できない場合は状態の名前を付け替える)
q F∈ 1 と q02 Q∈ 2 を同一視して得られる
以下の Turing 機械M1 ー q→M2 =(Q1 Q∪ 2, Σ, K, q0
1, F1 F∪ 2 - {q})K=K1 K∪ 2 {qaaNq∪ 0
2 | a Σ}∈
を q における M1 と M2 の結合と呼ぶ。
結合のバリエーション
Turing 機械 M, M1, M2
M M1
M2
p
qM q
(Q Q∪ 1 Q∪ 2, Σ, K, q0, F F∪ 1 F∪ 2 - {p, q})
K=K K∪ 1 K∪ 2 {paaNq∪ 01, qbbNq0
2 | a, b Σ}∈
(Q, Σ, K, q0, F - {q})
K=K {qaaNq∪ 0 | a Σ}∈
簡易表記
F1={q} であるとき、単に M1M2 と書ける。
M が <a> のとき、qh, q1 を yes, no のように書ける。
<a> M1
M2
qh
q1
<a> M1
M2
yes
no→
M2M1q
M1 M2→
Turing 機械 R
ヘッドの右側にある最初のB を探し、そこで止まる。
Turing 機械 r と <B> から合成。r=({q0, qh}, {B, 1}, K1, q0, {qh})
K1={q0BBRqh, q011Rqh}
<B>=({p0, p1, ph}, {B, 1}, K2, p0, {p1, ph})
K2={p0BBNph, p011Np1}
r<B>no
Turing 機械 R つづき
R=(Q, {B, 1}, K, q0, F)Q={q0, qh} {p∪ 0, p1, ph}={q0, qh, p0, p1, ph}
K=K1 K∪ 2 {q∪ hBBNp0, qh11Np0, p111Nq0}
= {q0BBRqh, q011Rqh, p0BBNph, p011Np1,
qhBBNp0, qh11Np0, p111Nq0}
F= {qh} {p∪ 1, ph} - {qh} - {p1}={ph}
Turing 機械 L
ヘッドの左側にある最初のB を探し、そこで止まる。
Turing 機械 lと <B> から合成。l=({q0, qh}, {B, 1}, K1, q0, {qh})
K1={q0BBLqh, q011Lqh}
<B>=({p0, p1, ph}, {B, 1}, K2, p0, {p1, ph})
K2={p0BBNph, p011Np1}
l<B>no
Turing 機械 L つづき
R=(Q, {B, 1}, K, q0, F)Q={q0, qh} {p∪ 0, p1, ph}={q0, qh, p0, p1, ph}
K=K1 K∪ 2 {q∪ hBBNp0, qh11Np0, p111Nq0}
= {q0BBLqh, q011Lqh, p0BBNph, p011Np1,
qhBBNp0, qh11Np0, p111Nq0}
F= {qh} {p∪ 1, ph} - {qh} - {p1}={ph}
Turing 機械 R
ヘッドの右側にある最初の連続した BB を探し、その左側の B の位置で止まる。
Turing 機械 R と r と <B> から合成。
r=({q0, qh}, {B, 1}, K1, q0, {qh})K1={q0BBRqh, q011Rqh}
<B>=({p0, p1, ph}, {B, 1}, K2, p0, {p1, ph})
K2={p0BBNph, p011Np1}
R=(Q, {B, 1}, K, q0, F)
Rr<B>no
lyes
Turing 機械 T
1 の連続したかたまりを 1 こまづつ左へ移す。
~ BWB├T ~ WBB
ここで、~:任意の記号W : 1 の連続したかたまり (下線):ヘッドの位置
~ BWB=q0 ~ BWB
~ WBB= ~ WqhBB
rr<B>no
yes
l
Bl1
*
T の計算例
~ B11B ├* ~ B11B(rr<B>)
├* ~ 1B1B (Bl1)
├* ~ 1B1B (rr<B>)
├* ~ 11BB (Bl1)
├* ~ 11BB (rr<B>)
├* ~ 11BB (l)
rr<B>no
yes
l
Bl1
Turing 機械 S
1 のかたまり W1, W2 に対して以下の処理を
行う。BW1BW2B├S BW2BB…B
ここで、W1, W2 : 1 の連続したかたまり
(下線):ヘッドの位置Ll<B>no
yes
T
BT
*
S の計算例
B11B111B ├* B11B111B(Ll<B>)
├* B1B111BB (BT)
├* B1B111BB(Ll<B>)
├* BB111BBB (BT)
├* BB111BBB(Ll<B>)
├* B111BBBB (T)
Ll<B>no
yes
T
BT
Turing 機械 C
1 のかたまり W1, W2, …, Wn, W に対して
以下の処理を行う。~ BBW1BW2B…BWnBWB ├c ~ WBB…B
Ll<B>no
yes
TLlT
rRS
*
C の計算例
~ BB11B1B111B ├* ~ BB11B1B111B (Ll<B>)
├* ~ BB11B111BBB (rRS)
├* ~ BB11B111BBB (Ll<B>)
├* ~ BB111BBBBBB (rRS)
├* ~ BB111BBBBBB (Ll<B>)
├* ~ 111BBBBBBBB (TLlT)
Ll<B>no
yes
TLlT
rRS
Turing 機械 Kn
n 個の 1 のかたまり W1, W2, …, Wn に対して
以下の処理を行う。BW1BW2B…BWnB ├kn BW1BW2B…BWnBW1B
Lnr<B>no
yes
Rn
BRn+11Ln+11
*
Kn の計算例(n=2 の場合 )
B11B111B ├* B11B111B(L2r<B>)
├* BB1B111B1 (BR31)
├* B11B111B1 (L31)
├* B11B111B1 (r<B>)
├* B1BB111B11 (BR31)
├* B11B111B11 (L31)
├* B11B111B11 (r<B>)
├* B11B111B11B (R2)
帰納的関数と Turing 機械
帰納的関数を計算する Turing 機械の合成1. 初期関数を計算する Turing 機械
Z(x), S(x), Uni(x1, …, xn)
2. 合成関数と Turing 機械f(x1, …, xn)=g(h1(x1, …, xn), …, hr(x1, …, xn))
3. 原始帰納で定義される関数と Turing 機械f(x1, …, xn)=g(x1, …,xn-1) (xn=0 のとき )f(x1, …, xn)=h(x1, …, xn-1, xn-1, f(x1, …, xn-1))(xn > 0 のとき )
初期関数の Turing 機械
Z(x)→r1r BWB├* BWB1B
S(x)→K11r BWB├* BWBW1B
Uni (x1, …, xn)
→Kn-i+1
BW1B…BWiB…BWnB├* BW1B…BWiB…BWnBWiB
合成関数と Turing 機械
合成関数f(x1, …, xn)=g(h1(x1, …, xn), …, hr(x1, …, xn))
→r1rKn+1nLnlBRH1Kn+1
nH2…Kn+1nHrKr+(r-1)n Kr+(r-
2)n…KrGCここで、 g, h1, …, hr を計算する Turing 機械をそれぞれ G, H1, …, Hr とする。
原始帰納で定義される関数とTuring 機械
原始帰納f(x1, … , xn, 0)=g(x1, …,xn)
f(x1, …, xn , y´)=h(x1, …, xn, y, f(x1, …, xn, y))ここで、 g, h を計算する Turing 機械をそれぞれ G, H と
する。
↓
r1rK2Kn+3nLn+1lBR GKn+2lBl<B> C
rKn+2nr1rKn+3HKn+4lBl<B> rKn+4
n+1
yes
yes
no
no
原始帰納関数の例
x+y (plus(x, y))plus(x, 0)=g(x)
plus(x, y)=h(x, y-1, plus(x, y-1))
g(x)=U11(x)
h(x, y, z)=S(U33(x, y, z))
g(x) と h(x, y, z)
g(x) を計算する Turing 機械を G とする。g(x) = U1
1(x) であるから、G は n=1, i=1 として K1
h(x, y, z) を計算する Turing 機械を H とする。h(x, y, z) = S(U3
3(x, y, z)) であるから、U3
3(x, y, z) に対する Turing 機械 K1 と
S(x) に対する Turing 機械 K11r を合成して、r1rK4
3L3lBRK1K1K11rC
合成関数の計算
xByBzB
├* xByBzB1B (r1r) 引数保存├* xByBzB1BxByBzB (K4
3) 引数コピー
├* xByBzB1BxByBzB (L3)
├* xByBzBBBxByBzB (lBR) 分離├* xByBzBBBxByBzBzB (K1) H1 適用
├* xByBzBBBxByBzBzBzB (K1) H1 結果の取り出し
├* xByBzBBBxByBzBzBzBz+1B (K11r) G 適用
├* xByBzBz+1B (C) 途中クリア
求める Turing 機械は
さっき定義した G と H を使用して、n=1 より、以下のように書ける。
r1rK2K4L2lBR GK3lBl<B>
rK3r1rK4HK5lBl<B> rK52
Cyes
yes
no
no
ミニテスト
テスト時間 20 分 誰かと交換採点 最後に回収
最後に
レポート– 1/6 に回収 (遅れは基本的に認めない)– 1/6 に小レポートがある
補講– 1/6 は補講日なので来ること