...

任意の言語

by user

on
Category: Documents
20

views

Report

Comments

Transcript

任意の言語
1. 以下の言語を認識する書き込み可能faを設計せよ.
L1 = {xx | x ∈ {a, b}*}
アルゴリズム論
レポート課題第1回の解説
e.g.
abbabb ∈ L1
aaaaaa ∈ L1
2005/12/8
TA 玉置卓
基本的なアルゴリズム
• 入力を前半と後半に
分ける
• 入力長が奇数なら
受理しない
$babbbabb&
$b’abbbabb&
$b’abbbabb”&
$b’a’bbbabb”&
$b’a’bbbab”b”&
…
• 前半部と後半部の
1文字目から一致するか
どうかチェック
全て一致なら受理
$b’a’b’b’b”a”b”b”&
$#a’b’bb”#ab”b”&
$##b’b’##b”b”&
…
$########&
abaa ∉ L1
aaa ∉ L1
入力を分割するfaの記述
1. 現在位置の記号(a or b)に’を
付けヘッドを右へ
2. ’’の付いた記号が来たら入力列は
奇数長なので非受理
それ以外は’’か&を読むまで右へ
3. ’’か&を読むと左へ移動し現在
位置の記号(a or b)に’’を付け
ヘッドを左へ
4. ’,’’の付いていない最も左のa or b
まで移動
なければ$の右まで移動
$babbbabb&
$b’abbbabb&
$b’abbbabb”&
$b’a’bbbabb”&
$b’a’bbbab”b”&
…
$b’a’b’b’b”a”b”b”&
入力を分割するfaの状態遷移図
a’,b’/R
a”,b”/R
s5
a,b/R
a/a’,R
b/b’,R
s1
s2
a”,b”,&/L
a’,b’/R
$/R
s4
s6
s3
a/a”,L
b/b”,L
前半と後半の一致をチェックする
faの記述
1. 現在位置の記号(a’ or b’)を
$b’a’b’b’b”a”b”b”&
記憶し#に書き換えヘッドを右へ
2. a” or b” が見つかるまで
ヘッドを右へ
見つかったら記憶と比較し一致
すれば#に書き換えヘッドを右へ
そうでなければ非受理
3. 現在位置の記号が&なら受理
そうでなければ最も左のa’ or b’
まで移動し1へ
$#a’b’bb”#ab”b”&
$##b’b’##b”b”&
…
$########&
a,b/L
$b’abbbabb”&
前半と後半の一致をチェックする
faの状態遷移図
a’,b’,#/R
s7
a’/#,R
s6
b’/#,R
• 入力の分割
a”/#,R
b”/#,R
s9
s8
$#a’b’bb”#ab”b”&
a’,b’,#/R
#/R
s10
a’,b’/L
計算時間の解析
&
a”,b”,#/L
a’,b’/L
f
$b’abbbabb”&
先頭と最後尾i番目の文字に印をつけて次の文字に戻るのに
(2n-4i+5)ステップだからi=1からn/2まで和をとって
n2/2+O(n)
• 前半と後半の一致をチェック $#a’b’bb”#ab”b”&
ひとつのペアの比較して戻ってくるのに(n+3)ステップで
n/2ペアについて行うから
n2/2+O(n)
合計 n2+O(n) ステップで終了する
拡張
以下の言語を認識する書き込み可能faを設計せよ.
L1 ' = {xxx | x ∈ {a, b}*}
基本的なアルゴリズム
• 入力を3分割
• 各部分の先頭から比較
$babbabbab&
$b’abbabab&
$b’abbaba”b”&
…
$b’a’b’b”a”b”a”b”&
…
$b’a’b’b”a”b”b”’a”’b”’&
$#a’b’#a”b”#a”’b”’&
…
$#########&
採点基準
• アルゴリズムの正しさ (2点)
• 書き込み可能faとしての設計 (2点)
– アルゴリズムのfaとして実現
– 状態遷移関数/図の概略
• 計算時間の解析 (2点)
– きちんと理由をつけて
× Aの部分はkステップ,…
○ Aの部分でBの操作がi回あるのでkステップ,…
• L1’ についても解いた (1点)
2. 以下の言語を認識するTMを設計せよ.
L2 = {1x | xは素数}
e.g.
11111∈ L2
11 ∈ L2
111111 ∉ L2
1 ∉ L2
前処理を行うTMの記述
基本的なアルゴリズム
• 入力xを2からx-1で
割り切れるかチェック
• カウンタに割る数kを保存
• xからkを繰り返し引き算し
0になれば非受理
引き算できなくなれば
カウンタの値kを1増やす
新たにxからの引き算を
開始
$11111BB…
$1’1’1’1’1’$’11111BB…
$1’1’1’1’1’$’11$”11BB…
$1’1’1’1’1$’11’$”11BB…
$1’1’1’11$’1’1’$”11BB…
$1’1’1’11$’11$”11BB…
$1’1’111$’11’$”11BB…
…
$11111$’11’$”11BB…
$1’1’1’1’1’$’1’1’1’$”1BB…
…
$11111$’11111’$”BB…
前処理を行うTMの状態遷移図
1,$’/R
1/R
s1
s4
$/R
B/1,L
s5
s3
$’/R
s7
1/R
s6
f1
s9
xが現在のカウンタの値kで
割り切れず,かつk=x-1
B
1/R
s8
1/$”,L
f2
$11111$’11111’$”BB…
s9
$1’1’1’1’1’$’11111BB…
1/L
割り算を行うTMの状態遷移図
引き算のループが続行可能
1,$’/L
1’/R
1/1’,R
s2
$11111BB…
$1’1’1’1’1’$’11111BB…
$1’1’1’1’1’$’11$”11BB…
$1’1’1’11$’1’1’$”11BB…
$11111BB…
B/$’,L
1. 空白記号までヘッドを
移動し$’を付け列の先頭へ
2. 1を1’に書き換え空白
記号まで移動し1を書く
3. $’まで左に移動しさらに
一番左の1まで移動して
2.へ戻る
1がなければ4.へ
4. $’から3つ目の1を$”に書き
換え左へ移動
$1’1’1’1’1’$’11$”11BB…
引き算のループが続行不能
カウンタkの値を+1して
次の引き算ループ開始
$11111$’11’$”11BB…
計算時間の解析
• 前処理が O(n2) であることは簡単にわかる
• カウンタの値がkのときの割り算ループの
計算時間はO(n3/k) なのでkについて和をとると
3
O(n logn)
これが主な計算時間
3. どんなTMによっても認識されない
{1}上の言語が存在することを示せ.
L3 = {11,111,11111,..., ?, ?, ?,...}
採点基準
• アルゴリズムの正しさ (2点)
• TMとしての設計 (2点)
– アルゴリズムのTMとして実現
– 状態遷移関数/図の概略
• 計算時間の解析 (2点)
– きちんと理由をつけて
× Aの部分はkステップ,…
○ Aの部分でBの操作がi回あるのでkステップ,…
証明方針
背理法で示す.
1. “どんなTMによっても認識されない{1}上の言語が
存在する”の否定は“{1}上の任意の言語Lに対し
Lを認識するTM M(L)が存在” (背理法の仮定)
2. 仮定のもとで“{0,1}上の任意の言語L’に対し
L’を認識するTM M’(L’)が存在”を示す
3. “どんなTMによっても認識されない{0,1}上の言語
が存在する”ことに矛盾するので仮定は誤り.
“{1}上の任意の言語Lに対し
Lを認識するTM Mが存在”
するなら“{0,1}上の任意の
言語L’に対しL’を認識する
TM M’が存在”を示す
M’は{0,1}上の言語L’を{1}上
の言語 L = {Enc( x) | x ∈ L'}
に変換してMを利用して解く
M’ の動作
入力xをEnc()で符号化
Enc(x)に対するMの動作を
模倣しMが受理/非受理に
応じてM’も受理/非受理
Enc( x) : {0,1}* → {1} *
ε →ε
0 →1
1 → 11
00 → 111
01 → 1111
10 → 11111
11 → 111111
000 → 1111111
Μ
⎧ x ∈ L' ⇔ Enc( x) ∈ L
⎨
⎩ x ∉ L' ⇔ Enc( x) ∉ L
• 総得点は
(?/20点満点)=
(?/7点満点)+(?/6点満点)+(?/6点満点)+1
採点基準
• 方針の正しさ (3点)
• 証明の正しさ (3点)
Fly UP