跳到主要内容

大阪大学 情報科学研究科 情報工学 2020年度 計算理論

Author

祭音Myyura (co-authored with GPT 5.6 SOL)

Description

(1) anbna^nb^n の認識

L={anbnn1}L=\{a^nb^n\mid n\ge1\} とする。

  • (1-1) PDAの開始状態 q0q_0(a,Z)/0Z(a,Z)/0Z で自己遷移し、q1q_1 から最終状態 q2q_2 へは (ε,Z)/ε(\varepsilon,Z)/\varepsilon で移る。q0q_0 の追加自己遷移(A)、q0q1q_0\to q_1 の遷移(B)、q1q_1 の自己遷移(C)を示せ。スタック記号は Z,0Z,0 で、初期スタックは ZZ。遷移 (r,s)/t(r,s)/t は入力 rr を読み、先頭記号 ss を列 tt に置換する。tt の左端が新しいスタック先頭となり、t=εt=\varepsilon なら取り出すだけ、r=εr=\varepsilon なら入力を消費しない。
  • (1-2-1) L2={anbnn=2}L_2=\{a^nb^n\mid n=2\}L3={anbnn=3}L_3=\{a^nb^n\mid n=3\} のDFAを、全入力の遷移を含めて示せ。
  • (1-2-2) 次の背理法の空欄(D)を埋めよ。LL を認識するDFAが存在すると仮定し、その状態数を kk とする。入力 akbka^kb^k のうち aaii 個(0ik0\le i\le k)読み終えた状態を pip_i とすると、[(D)]。よって仮定と矛盾し、そのようなDFAは存在しない。
  • (1-3) L={anbmn,m1}L'=\{a^nb^m\mid n,m\ge1\} のDFAを全遷移付きで示せ。

(2) CYK法

文法 G=(V,T,P,S)G=(V,T,P,S) は非終端記号集合 VV、終端記号集合 TT、生成規則 PP、開始記号 SS からなる。Chomsky標準形では規則は XYZX\to YZ または XaX\to aX,Y,ZVX,Y,Z\in V, aTa\in T)に限る。入力 w=a1anw=a_1\cdots a_n に対し、M[i,j]M[i,j]1ijn1\le i\le j\le n)を部分語 aiaja_i\cdots a_j を導出できる非終端記号の集合とする。次のアルゴリズムを用いる。

すべての M[i,j] (1 ≤ i ≤ j ≤ n) ← 空集合
for i = 1 to n do
規則 X → a_i が P にある全 X を M[i,i] に追加
end for
for ℓ = 2 to n do
for i = 1 to n-ℓ+1 do
j ← i+ℓ-1
for k = i to j-1 do
Y ∈ M[i,k], Z ∈ M[k+1,j], X → YZ ∈ P
を満たす全 X を M[i,j] に追加
end for
end for
end for
S ∈ M[1,n] なら Yes、そうでなければ No を出力

(2-1) 規則

SAB,ACAAAa,BDBb,Ca,DbS\to AB,\quad A\to CA\mid AA\mid a,\quad B\to DB\mid b,\quad C\to a,\quad D\to b

を持ち、V={A,B,C,D,S}V=\{A,B,C,D,S\}T={a,b}T=\{a,b\}、開始記号 SS の文法を考える。入力 aaab の全ての M[i,j]M[i,j] を表で示せ。

参考として、同じ文法で入力 bab を処理すると、次の表となり SM[1,3]S\notin M[1,3] のため No を出力する。

M[i,j]M[i,j]j=1j=1j=2j=2j=3j=3
i=1i=1{B,D}\{B,D\}\varnothing\varnothing
i=2i=2{A,C}\{A,C\}{S}\{S\}
i=3i=3{B,D}\{B,D\}

(2-2) 文法 SABSABSεS\to AB\mid SA\mid BS\mid\varepsilon, AaA\to a, BbB\to b に上記アルゴリズムをそのまま適用すると誤判定する長さ2以上の語を示し、理由を説明せよ。

Kai

(1)

(1-1)

(A):(a,0)/00,(B):(b,0)/ε,(C):(b,0)/ε.\boxed{(A):(a,0)/00,\quad(B):(b,0)/\varepsilon,\quad(C):(b,0)/\varepsilon}.

(1-2-1) LrL_rr=2,3r=2,3)について状態を q0,,q2r,dq_0,\ldots,q_{2r},d とする。開始は q0q_0、最終は q2rq_{2r} だけ。次の規則で全遷移が定まる。

状態abqi (0i<r)qi+1dqi (ri<2r)dqi+1q2rddddd\begin{array}{c|cc} \text{状態}&a&b\\\hline q_i\ (0\le i<r)&q_{i+1}&d\\ q_i\ (r\le i<2r)&d&q_{i+1}\\ q_{2r}&d&d\\ d&d&d \end{array}

図の主経路以外の遷移は表の通り死状態 dd へ移る。

(1-2-2) aa を0個から kk 個まで読んだ時点の k+1k+1 状態のうち、ある 0i<jk0\le i<j\le k で状態が一致する。その区間の ajia^{j-i} をもう1回読むと、同じ状態へ戻るので ak+jibka^{k+j-i}b^k も受理される。しかしこれは LL に属さず矛盾する。

(1-3)

(2)

(2-1)

M[i,j]M[i,j]j=1j=1j=2j=2j=3j=3j=4j=4
i=1i=1{A,C}\{A,C\}{A}\{A\}{A}\{A\}{S}\{S\}
i=2i=2{A,C}\{A,C\}{A}\{A\}{S}\{S\}
i=3i=3{A,C}\{A,C\}{S}\{S\}
i=4i=4{B,D}\{B,D\}

SM[1,4]S\in M[1,4] なので Yes

(2-2) w=aa\boxed{w=aa} を選ぶ。文法では

SSASAAAAaaS\Rightarrow SA\Rightarrow SAA\Rightarrow AA\Rightarrow aa

と導出できる。一方、アルゴリズムは M[1,1]=M[2,2]={A}M[1,1]=M[2,2]=\{A\} とし、右辺が AAAA の規則がないので M[1,2]=M[1,2]=\varnothing としてNoを返す。空語を生成する SS による長さ0の部分語を処理しないことが原因である。