大阪大学 情報科学研究科 情報工学 2019年度 計算理論
Author
祭音Myyura (co-authored with GPT 5.6 SOL)
Description
(1) 回文
アルファベットを {a,b} とし、空語も回文とする。
- (1-1),(1-2) 長さ2、長さ3の回文をそれぞれ認識するDFAを示せ。
- (1-3) 全ての回文の言語が正規でないことを、次の反復補題を用いた背理法で示せ。
正規言語 L に対し正整数 n が存在し、任意の v∈L, ∣v∣≥n は v=xyz, ∣xy∣≤n, ∣y∣≥1 と分解でき、すべての整数 k≥0 について xykz∈L となる。
- (1-4) 開始状態 q0、初期スタック記号 Z のPDAで、q0 の自己遷移は (a,s)/0s,(b,s)/1s(s∈{Z,0,1})である。q1 で (a,0)/ε,(b,1)/ε により取り出し、(ε,Z)/Z で最終状態 q2 へ移る。中央位置を推測する q0→q1 の遷移をすべて示せ。スタック記号は Z,0,1 とする。遷移 (r,s)/t は入力 r を読み、スタック先頭 s を列 t で置き換えることを表す。t の左端を新しいスタック先頭とし、t=ε なら取り出すだけ、r=ε なら入力を消費しない。解答もこの形式を用いよ。
(2) 文脈自由文法
A→aAbA∣bAaA∣ε
を生成規則、A を開始記号とする言語 L を考える。
∣w∣ は語長、∣w∣a,∣w∣b はそれぞれ a,b の個数、α⇒β は生成規則を1回適用する導出を表す。
- (2-1) 次の空欄[ア]を埋め、w∈L なら ∣w∣a=∣w∣b を示せ。規則適用回数 k について帰納法を用いる。k=1 なら A⇒ε なので両者0である。k>1 とし、k−1 回以下の適用で得られる任意の語は両者の個数が等しいと仮定する。k 回で得られる語も両者の個数が等しい理由は[ア]である。
- (2-2) 次の空欄[イ]~[エ]を埋め、∣w∣a=∣w∣b なら w∈L を示せ。∣w∣ は0以上の偶数である。基底 ∣w∣=0 で成立する理由は[イ]である。∣w∣>0 では、それより短い、a,b の個数が等しい語はすべて L に属すると仮定する。先頭が a なら、より短い v1,v2∈L によって w=av1bv2 と分解できることを用いてよい。このとき A⇒[ウ]⇒⋯⇒av1bv2=w。先頭が b なら同様に w=bv1av2 と分解でき、A⇒[エ]⇒⋯⇒bv1av2=w。
Kai
(1)
(1-1) 未記載の遷移は全て非受理の死状態へ移り、死状態は全入力で自己遷移する。
(1-2) 同じく未記載の遷移は死状態へ移る。
(1-3) 正規と仮定し、反復長を n とする。回文 anban を xyz、∣xy∣≤n, ∣y∣≥1 と分割すると y=ak(k≥1)。y を0回反復した xz=an−kban は回文でなく、反復補題に矛盾する。
(1-4) T∈{Z,0,1} のそれぞれについて
(ε,T)/T,(a,T)/T,(b,T)/T
の計9個。最初は偶数長の中央、残りは奇数長の中央の1文字を読み飛ばす遷移である。
(2)
(2-1) [ア]:1回の導出では A⇒ε で両者0個。非空語は最初の規則により av1bv2 または bv1av2 となる。v1,v2 には帰納法の仮定を適用でき、そこに a,b を各1個加えるので個数は等しい。
(2-2) [イ]:空語は A⇒ε で生成できる。[ウ]は aAbA、[エ]は bAaA である。非空語の先頭が a のとき、先頭から数えた a と b の個数差が初めて0となる位置を選ぶ。この位置の文字は b であり、w=av1bv2 と書け、v1,v2 はともに a,b を同数含む。帰納法により
A⇒aAbA⇒∗av1bv2=w.
先頭が b の場合も w=bv1av2 と分解し
A⇒bAaA⇒∗bv1av2=w.
したがって所要の言語をちょうど生成する。