跳到主要内容

神戸大学 システム情報学研究科 2018年8月実施 専門科目 計算機科学 [1]

Author

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

Description

a,ba,b を記号とする。a,ba,b の記号列 ww に対し,逆順の記号列を wRw^Rwwnn 個並べた記号列を wnw^n と表す。

つぎの DFA を AA とし,AA の受理言語を KK とする。

  • 入力記号:a,ba,b
  • 状態:p,q,rp,q,r
  • 開始状態:pp
  • 受理状態:rr
状態aabb
ppppqq
qqrrqq
rrqqpp

また,

L={wwRwK}L=\{ww^R\mid w\in K\}

とする。CFG を答える問いでは,変数記号,開始記号,生成規則をそれぞれ示せ。

  1. AA の遷移図を描け。
  2. KK を表す正規表現を書け。
  3. KK を生成する CFG を書け。
  4. LL を生成する CFG を書け。
  5. LL を受理言語とする PDA の遷移図を描け。最初にスタックの底にある記号は Z0Z_0 とする。
  6. 正規言語の反復補題を用いて,LL は正規言語ではないことを示せ。

题目描述

字母表为 {a,b}\{a,b\}。对字符串 ww,以 wRw^R 表示逆序串,以 wnw^n 表示重复 nn 次所得字符串。DFA AA 的初态为 pp、唯一终态为 rr,转移表如下。

状态aabb
ppppqq
qqrrqq
rrqqpp

K=L(A)K=L(A),并定义

L={wwRwK}.L=\{ww^R\mid w\in K\}.
  1. 画出 AA 的状态转移图。
  2. 写出表示 KK 的正则表达式。
  3. 给出生成 KK 的上下文无关文法。
  4. 给出生成 LL 的上下文无关文法。
  5. 画出接受 LL 的下推自动机;栈底符号为 ZZ
  6. 用正则语言的泵引理证明 LL 不是正则语言。

Kai

(1)

(2)

pp から初めて rr に到達する語は abbaa^*bb^*a である。また,rr から途中で rr を通らずに rr に戻る語は

abaまたはbabbaab^*a\quad\text{または}\quad ba^*bb^*a

である。よって,例えばつぎの正規表現が KK を表す。

abba(aba+babba).\boxed{a^*bb^*a\left(ab^*a+ba^*bb^*a\right)^*}.

(3)

変数記号を {P,Q,R}\{P,Q,R\},開始記号を PP とし,生成規則を

PaPbQ,QaRbQ,RεaQbP\boxed{ \begin{aligned} P&\to aP\mid bQ,\\ Q&\to aR\mid bQ,\\ R&\to \varepsilon\mid aQ\mid bP \end{aligned}}

とすればよい。各変数は DFA の同名状態に対応する。

(4)

変数記号を {P,Q,R}\{P,Q,R\},開始記号を PP とし,

PaPabQb,QaRabQb,RεaQabPb\boxed{ \begin{aligned} P&\to aPa\mid bQb,\\ Q&\to aRa\mid bQb,\\ R&\to \varepsilon\mid aQa\mid bPb \end{aligned}}

とする。外側から読んだ前半で DFA の遷移を模擬し,状態 rr に達したときだけ ε\varepsilon で中央を閉じるので,生成語はちょうど wwRww^RwKw\in K)となる。

(5)

Γ={Z0,a,b}\Gamma=\{Z_0,a,b\} をスタック記号の集合とする。状態 P,Q,RP,Q,R では前半を読みながら DFA を模擬し,読んだ記号をスタックに積む。RR から UU への ε\varepsilon 遷移で中央を非決定的に選び,UU では後半とスタックを照合する。

ここで積む遷移の γ\gamma は任意の γΓ\gamma\in\Gamma を表す。入力をすべて読み,スタックが Z0Z_0 に戻ったとき FF で受理する。

(6)

LL が正規言語であると仮定し,反復補題の定数を mm とする。

w=ambaK,s=wwR=amba2bamLw=a^mba\in K,\qquad s=ww^R=a^mba^2ba^m\in L

を選ぶ。任意の分解 s=xyzs=xyzxym|xy|\le my>0|y|>0 を満たすものについて,y=aky=a^k1km1\le k\le m)である。i=0i=0 として反復すると

xy0z=amkba2bam.xy^0z=a^{m-k}ba^2ba^m.

この語は先頭と末尾の aa の連続長が異なるため回文ではない。一方,LL のすべての語 vvRvv^R は回文であるから xy0zLxy^0z\notin L。これは反復補題に矛盾する。したがって

L は正規言語ではない。\boxed{L\text{ は正規言語ではない。}}