35
計計計計計 計計計計計 II II Turing Turing 計計 計計 計計 4 計計 計計計計

計算の理論 II Turing 機械

  • Upload
    hollis

  • View
    69

  • Download
    0

Embed Size (px)

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 Presentation

Citation preview

Page 1: 計算の理論  II Turing 機械

計算の理論 計算の理論 IIIITuringTuring 機械機械

月曜 4 校時大月美佳

Page 2: 計算の理論  II Turing 機械

講義の前に

補講について– 今日と 1/6 は補講

レポートについて– 今日帰りに大レポート (20 点配点 )– 1/6 に小レポート (10 点配点 )

試験– 2/10 に試験 (40 点配点 )

Page 3: 計算の理論  II Turing 機械

今日の講義

1. 前回のおさらい1. Turing 機械の合成

1. 小さなものを組み上げて複雑なものへ2. 残り: T, S, C, Kn

2. 帰納的関数を計算する Turing 機械の合成1. 合成の仕方と例2. ミニテスト3. レポート

Page 4: 計算の理論  II Turing 機械

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

Page 5: 計算の理論  II Turing 機械

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

Page 6: 計算の理論  II Turing 機械

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

Page 7: 計算の理論  II Turing 機械

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

有限制御部

有限制御部

Page 8: 計算の理論  II Turing 機械

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

有限制御部

有限制御部

Page 9: 計算の理論  II Turing 機械

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

Page 10: 計算の理論  II Turing 機械

合成

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 の結合と呼ぶ。

Page 11: 計算の理論  II Turing 機械

結合のバリエーション

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 Σ}∈

Page 12: 計算の理論  II Turing 機械

簡易表記

F1={q} であるとき、単に M1M2 と書ける。

M が <a> のとき、qh, q1 を yes, no のように書ける。

<a> M1

M2

qh

q1

<a> M1

M2

yes

no→

M2M1q

M1 M2→

Page 13: 計算の理論  II Turing 機械

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

Page 14: 計算の理論  II Turing 機械

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}

Page 15: 計算の理論  II Turing 機械

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

Page 16: 計算の理論  II Turing 機械

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}

Page 17: 計算の理論  II Turing 機械

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

Page 18: 計算の理論  II Turing 機械

Turing 機械 T

1 の連続したかたまりを 1 こまづつ左へ移す。

~ BWB├T ~ WBB

ここで、~:任意の記号W : 1 の連続したかたまり (下線):ヘッドの位置

~ BWB=q0 ~ BWB

~ WBB= ~ WqhBB

rr<B>no

yes

l

Bl1

*

Page 19: 計算の理論  II Turing 機械

T の計算例

~ B11B ├* ~ B11B(rr<B>)

├* ~ 1B1B (Bl1)

├* ~ 1B1B (rr<B>)

├* ~ 11BB (Bl1)

├* ~ 11BB (rr<B>)

├* ~ 11BB (l)

rr<B>no

yes

l

Bl1

Page 20: 計算の理論  II Turing 機械

Turing 機械 S

1 のかたまり W1, W2 に対して以下の処理を

行う。BW1BW2B├S BW2BB…B

ここで、W1, W2 : 1 の連続したかたまり

 (下線):ヘッドの位置Ll<B>no

yes

T

BT

*

Page 21: 計算の理論  II Turing 機械

S の計算例

B11B111B ├* B11B111B(Ll<B>)

├* B1B111BB (BT)

├* B1B111BB(Ll<B>)

├* BB111BBB (BT)

├* BB111BBB(Ll<B>)

├* B111BBBB (T)

Ll<B>no

yes

T

BT

Page 22: 計算の理論  II Turing 機械

Turing 機械 C

1 のかたまり W1, W2, …, Wn, W に対して

以下の処理を行う。~ BBW1BW2B…BWnBWB ├c ~ WBB…B

Ll<B>no

yes

TLlT

rRS

*

Page 23: 計算の理論  II Turing 機械

C の計算例

~ BB11B1B111B ├* ~ BB11B1B111B (Ll<B>)

├* ~ BB11B111BBB (rRS)

├* ~ BB11B111BBB (Ll<B>)

├* ~ BB111BBBBBB (rRS)

├* ~ BB111BBBBBB (Ll<B>)

├* ~ 111BBBBBBBB (TLlT)

Ll<B>no

yes

TLlT

rRS

Page 24: 計算の理論  II Turing 機械

Turing 機械 Kn

n 個の 1 のかたまり W1, W2, …, Wn に対して

以下の処理を行う。BW1BW2B…BWnB ├kn BW1BW2B…BWnBW1B

Lnr<B>no

yes

Rn

BRn+11Ln+11

*

Page 25: 計算の理論  II Turing 機械

Kn の計算例(n=2 の場合 )

B11B111B ├* B11B111B(L2r<B>)

├* BB1B111B1 (BR31)

├* B11B111B1 (L31)

├* B11B111B1 (r<B>)

├* B1BB111B11 (BR31)

├* B11B111B11 (L31)

├* B11B111B11 (r<B>)

├* B11B111B11B (R2)

Page 26: 計算の理論  II Turing 機械

帰納的関数と 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 のとき )

Page 27: 計算の理論  II Turing 機械

初期関数の Turing 機械

Z(x)→r1r BWB├* BWB1B

S(x)→K11r BWB├* BWBW1B

Uni (x1, …, xn)

→Kn-i+1

BW1B…BWiB…BWnB├* BW1B…BWiB…BWnBWiB

Page 28: 計算の理論  II Turing 機械

合成関数と 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 とする。

Page 29: 計算の理論  II Turing 機械

原始帰納で定義される関数と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

Page 30: 計算の理論  II Turing 機械

原始帰納関数の例

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))

Page 31: 計算の理論  II Turing 機械

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

Page 32: 計算の理論  II Turing 機械

合成関数の計算

xByBzB

├* xByBzB1B (r1r) 引数保存├* xByBzB1BxByBzB (K4

3) 引数コピー

├* xByBzB1BxByBzB (L3)

├* xByBzBBBxByBzB (lBR) 分離├* xByBzBBBxByBzBzB (K1) H1 適用

├* xByBzBBBxByBzBzBzB (K1) H1 結果の取り出し

├* xByBzBBBxByBzBzBzBz+1B (K11r) G 適用

├* xByBzBz+1B (C) 途中クリア

Page 33: 計算の理論  II Turing 機械

求める Turing 機械は

さっき定義した G と H を使用して、n=1 より、以下のように書ける。

r1rK2K4L2lBR GK3lBl<B>

rK3r1rK4HK5lBl<B> rK52

Cyes

yes

no

no

Page 34: 計算の理論  II Turing 機械

ミニテスト

テスト時間 20 分 誰かと交換採点 最後に回収

Page 35: 計算の理論  II Turing 機械

最後に

レポート– 1/6 に回収 (遅れは基本的に認めない)– 1/6 に小レポートがある

補講– 1/6 は補講日なので来ること