跳到主要内容

東京大学 情報理工学系研究科 コンピュータ科学専攻 2024年8月実施 専門科目 問題1

Author

vv (co-authored with GPT 5.2 extended thinking, finalized by 祭音Myyura)

Description

Σ={a,b,c}\Sigma = \{a, b, c\} とする.Σ\Sigma 上の言語 LΣL \subseteq \Sigma^* に対して,言語 H(L)Σ\mathcal{H}(L)\subseteq \Sigma^* を以下によって定義する.

H(L)={wΣwwL}\mathcal{H}(L) = \{ w \in \Sigma^* \mid ww \in L \}

例えば,L1={aa,abc,abab,baab,cca}L_1 = \{aa, abc, abab, baab, cca\} ならば,H(L1)={a,ab}\mathcal{H}(L_1) = \{a, ab\} である.以下の問いに答えよ.

(1) L2L_2 を正規表現 a(a+b)c(a+b)bca(a+b)^*c(a+b)^*bc で表される言語とする.H(L2)\mathcal{H}(L_2) を正規表現として表せ.

(2) 以下の有限オートマトンによって受理される言語を L3L_3 とする.ただし,初期状態は q0q_0 であり,受理状態の集合は {q1}\{q_1\} である.H(L3)\mathcal{H}(L_3) を受理する状態数最小の決定性有限オートマトンを構成せよ.

(3) 以下の命題 1 が真であるか否かを答え,真であればその証明を,そうでなければ簡単な説明とともに反例を示せ.

  • 命題 1: Σ\Sigma 上のすべての正規言語 LΣL \subseteq \Sigma^* について,H(L)\mathcal{H}(L) も正規言語である.

(4) 以下の命題 2 が真であるか否かを答え,真であればその証明を,そうでなければ簡単な説明とともに反例を示せ.

  • 命題 2: Σ\Sigma 上のすべての文脈自由言語 LΣL \subseteq \Sigma^* について,H(L)\mathcal{H}(L) も文脈自由言語である.

题目描述

Σ={a,b,c}\Sigma=\{a,b,c\}。对语言 LΣL\subseteq\Sigma^*,定义其“平方根”语言

H(L)={wΣwwL}.\mathcal H(L)=\{w\in\Sigma^*\mid ww\in L\}.

例如 L1={aa,abc,abab,baab,cca}L_1=\{aa,abc,abab,baab,cca\} 时, H(L1)={a,ab}\mathcal H(L_1)=\{a,ab\}。回答下列问题。

(1)语言 L2L_2 由正则表达式

a(a+b)c(a+b)bca(a+b)^*c(a+b)^*bc

表示。用正则表达式表示 H(L2)\mathcal H(L_2)

(2)L3L_3 是题图有限自动机识别的语言,其中初始状态为 q0q_0,接受状态集为 {q1}\{q_1\}。构造识别 H(L3)\mathcal H(L_3) 的状态数最少的 DFA。

(3)判断命题 1 是否成立:对 Σ\Sigma 上每个正则语言 LLH(L)\mathcal H(L) 也为正则语言。若成立则证明;否则给出反例并简要说明。

(4)判断命题 2 是否成立:对 Σ\Sigma 上每个上下文无关语言 LLH(L)\mathcal H(L) 也为上下文无关语言。若成立则证明;否则给出反例并简要说明。

Kai

(1)

先把 L2L_2 的形状写清楚:任意 sL2s\in L_2 都可写成

s=a,x,c,y,b,c,x,y{a,b}s = a,x,c,y,b,c,\quad x,y\in\{a,b\}^*

因此 ss 中的字母 cc 恰好出现两次(中间一次、末尾一次)。

wwL2ww\in L_2,设 wwcc 的个数为 #c(w)\#_c(w)。则

#c(ww)=2#c(w)=2\#_c(ww)=2\#_c(w)=2

所以 #c(w)=1\#_c(w)=1。又因为 wwww 以 “bcbc” 结尾,所以第二个 ww 也以 “bcbc” 结尾,从而 ww 必须以 “bcbc” 结尾。结合 #c(w)=1\#_c(w)=1,可知 ww 唯一的 cc 就是在末尾,于是

w{a,b}bcw \in \{a,b\}^*bc

另外 wwL2ww\in L_2 还要求整个串以 aa 开头,所以 ww 也必须以 aa 开头。

再看 L2L_2 中“中间那次 cc”的位置:在 wwww 中第一处 cc 必然出现在第一个 ww 的末尾(因为 ww 唯一的 cc 在末尾),所以该 cc 正好落在两个 ww 的拼接边界处。于是第一个 ww 必须形如

w=axcw = axc

并且为了末尾是 bcbc,这里的 xx 必须以 bb 结尾,即 x(a+b)bx\in (a+b)^*b。令 x=ubx=u b(其中 u(a+b)u\in(a+b)^*),则

w=aubcw = aubc

反过来,任意 w=aubcw=aubcu(a+b)u\in(a+b)^*)都有

ww=a(ub)c(au)bca(a+b)c(a+b)bc=L2ww = a(ub)c(a u)bc \in a(a+b)^*c(a+b)^*bc = L_2

所以都属于 H(L2)\mathcal{H}(L_2)

因此

H(L2)={a(a+b)bc}\mathcal{H}(L_2)=\{a(a+b)^*bc\}

用正则表达式表示为

a(a+b)bc\boxed{a(a+b)^*bc}

(2)

先总结原 DFA 的关键性质(从图直接读出):

  • 读到 aa:无论在 q0q_0 还是 q1q_1,都会到 q0q_0(相当于“重置到 q0q_0”)。
  • 读到 bb:无论在 q0q_0 还是 q1q_1,都会到 q1q_1(“重置到 q1q_1”)。
  • 读到 cc:在 q0q1q_0\leftrightarrow q_1 间切换(“翻转”)。

对任意串 ww,令它在状态集合 {q0,q1}\{q_0,q_1\} 上诱导的状态变换为

fw(q)=δ^(q,w)f_w(q)=\hat\delta(q,w)

那么

wwL3    δ^(q0,ww)=q1    fw(fw(q0))=q1ww\in L_3 \iff \hat\delta(q_0,ww)=q_1 \iff f_w(f_w(q_0))=q_1

注意:一旦 ww 中出现过 aabb,最后一次出现的 a/ba/b 会把状态“重置”为常量(全映到 q0q_0 或全映到 q1q_1),之后末尾若干个 cc 只会在这两个常量间来回翻转。因此:

  • ww 不含 a,ba,b,即 w=ckw=c^k,则 fwf_w 是“恒等”(k 偶)或“交换”(k 奇),都满足 fw2(q0)=q0f_w^2(q_0)=q_0,所以不在 H(L3)\mathcal{H}(L_3)
  • ww 含有 aabb,则 fwf_w 必为常量变换:要么把两状态都送到 q0q_0,要么都送到 q1q_1。只有当 fwf_w 是“常量 q1q_1”时,才有 fw(fw(q0))=q1f_w(f_w(q_0))=q_1

所以

wH(L3)    读完 w 后,无论从 q0 还是 q1 出发都到 q1.w\in\mathcal{H}(L_3)\iff \text{读完 }w\text{ 后,无论从 }q_0\text{ 还是 }q_1\text{ 出发都到 }q_1.

把它翻译成“末尾结构”的条件:设 ww 的最后一个属于 {a,b}\{a,b\} 的字母为 ss,其后有 ttcc(即 w=sctw=\cdots s c^t 且之后不再有 a,ba,b)。

  • s=bs=b,读到 bb 重置到 q1q_1,再读 ttcc 翻转 tt 次;要最终在 q1q_1,需 tt 为偶数。
  • s=as=a,读到 aa 重置到 q0q_0,再读 ttcc;要最终在 q1q_1,需 tt 为奇数。

并且必须“出现过 aabb”(排除纯 ckc^k)。

接下来构造最小 DFA。只需要记住三种情况:

  • SS:至今还没见过 aabb(只读到若干个 cc)。这是初态,非接受。
  • RR:已经见过 a/ba/b,但当前处于“拒绝型”(对应“末尾情况不满足”)。
  • AA:已经见过 a/ba/b,且当前处于“接受型”(对应“末尾情况满足”)。这是唯一接受态。

转移规则由上面的“重置/翻转”直接给出:

  • SScc 仍在 SS;读到 aa 进入拒绝型 RR;读到 bb 进入接受型 AA
  • RR: 读 aa 重置回 RR;读 bb 重置到 AA;读 cc 会翻转到 AA
  • AA: 读 aa 重置到 RR;读 bb 留在 AA;读 cc 翻转到 RR

用转移表表示(字母表 {a,b,c}\{a,b,c\}):

状态aabbcc
SS(初态)RRAASS
RRRRAAAA
AA(接受态)RRAARR

这台 DFA 的接受态集合为 {A}\{A\}

最小性说明:三状态不可再合并。因为

  • ε\varepsilon(停在 SS)不被接受,但串 bb(停在 AA)被接受,故 S≁AS\not\sim A
  • aa(停在 RR)不被接受,但 acac 被接受,且 εc=c\varepsilon c=c 不被接受,故 S≁RS\not\sim R
  • RRAA 一个拒绝一个接受,显然可区分。

因此最少需要 3 个状态,上述构造即为最小 DFA。

(3) 结论:真

LL 是正则语言,被某个 DFA

M=(Q,Σ,δ,q0,F)M=(Q,\Sigma,\delta,q_0,F)

识别。对任意串 wΣw\in\Sigma^*,定义它在状态集合上的“整体迁移函数”

τw:QQ,τw(q)=δ^(q,w)\tau_w:Q\to Q,\qquad \tau_w(q)=\hat\delta(q,w)

那么

wH(L)    wwL    δ^(q0,ww)F    δ^(δ^(q0,w),w)F    τw(τw(q0))F\begin{aligned} w\in \mathcal{H}(L) &\iff ww\in L\\ &\iff \hat\delta(q_0,ww)\in F\\ &\iff \hat\delta(\hat\delta(q_0,w),w)\in F\\ &\iff \tau_w(\tau_w(q_0))\in F \end{aligned}

关键点:τw\tau_w 只是 QQQQ 的函数,而 QQ 有限,因此所有函数 QQQ\to Q 的集合

T=QQT = Q^Q

是有限集合(大小为 QQ|Q|^{|Q|})。

据此构造一个新的 DFA MM' 来识别 H(L)\mathcal{H}(L)

  • 状态集合:TT(所有函数 QQQ\to Q)。
  • 初态:恒等函数 idQ\mathrm{id}_Q(对应空串的迁移)。
  • 读入一个字母 xΣx\in\Sigma 时的更新:令 τx(q)=δ(q,x)\tau_x(q)=\delta(q,x)(单字母的迁移),则 δ(φ,x)=τxφ\delta'(\varphi,x)=\tau_x\circ \varphi. 这样读完 ww 后,φ\varphi 恰为 τw\tau_w
  • 接受态集合:F={φTφ(φ(q0))F}F'=\{\varphi\in T\mid \varphi(\varphi(q_0))\in F\}.

于是对任意 wwMM' 读完 ww 后所在状态为 τw\tau_w,而接受条件正是 τw(τw(q0))F\tau_w(\tau_w(q_0))\in F,等价于 wwLww\in L。因此 L(M)=H(L)L(M')=\mathcal{H}(L)

由于 MM' 是有限自动机(状态数有限),H(L)\mathcal{H}(L) 是正则语言。命题 1 成立。

(4) 结论:假

给出一个上下文无关语言 LL,使得 H(L)\mathcal H(L) 不是上下文无关语言。

L=L1L2,L1={anbnckn,k0},L2={aibmcmi,m0}.L=L_1L_2, \qquad L_1=\{a^n b^n c^k\mid n,k\ge0\}, \qquad L_2=\{a^i b^m c^m\mid i,m\ge0\}.

也就是

L={anbnckaibmcmn,k,i,m0}.L=\{a^n b^n c^k a^i b^m c^m\mid n,k,i,m\ge0\}.

说明 LL 是 CFL:

  • L1L_1 是 CFL,例如可由 S1aS1bT, TcTεS_1\to aS_1b\mid T,\ T\to cT\mid\varepsilon 生成;
  • L2L_2 也是 CFL,例如可由 S2AB, AaAε, BbBcεS_2\to AB,\ A\to aA\mid\varepsilon,\ B\to bBc\mid\varepsilon 生成。

CFL 对连接封闭,所以 L=L1L2L=L_1L_2 是 CFL。

接下来证明 H(L)\mathcal H(L) 不是 CFL。考虑正则语言

R=a+b+c+.R=a^+b^+c^+.

H(L)\mathcal H(L) 是 CFL,则由于 CFL 与正则语言的交仍为 CFL, H(L)R\mathcal H(L)\cap R 也应是 CFL。

计算 H(L)R\mathcal H(L)\cap R。设 wRw\in R,则

w=apbqcr(p,q,r1),w=a^p b^q c^r\qquad(p,q,r\ge1),

从而

ww=apbqcrapbqcr.ww=a^p b^q c^r a^p b^q c^r.

断言

wwL    p=q=r.ww\in L\iff p=q=r.

理由如下。

  • wwL=L1L2ww\in L=L_1L_2,则存在分割 ww=xyww=xy,使得 xL1abcx\in L_1\subseteq a^*b^*c^*yL2abcy\in L_2\subseteq a^*b^*c^*。 串 ww=apbqcrapbqcrww=a^pb^qc^ra^pb^qc^r 中,两个拷贝的交界处出现因子 caca。 因为 xx 不可能越过该因子,而 yy 若从该因子之前开始就会包含它, 分割点只能恰在两个 ww 之间。因此 x=y=wx=y=w。 由 xL1x\in L_1p=qp=q,由 yL2y\in L_2q=rq=r,故 p=q=rp=q=r
  • 反过来,若 p=q=rp=q=r,则 ww=(apbpcp)(apbpcp)ww=(a^p b^p c^p)(a^p b^p c^p)。前一项属于 L1L_1,后一项属于 L2L_2,所以 wwLww\in L

因此,对于 wRw\in R

wH(L)    wwL    p=q=r    w{anbncnn1}.\begin{aligned} w\in\mathcal H(L) &\iff ww\in L\\ &\iff p=q=r\\ &\iff w\in\{a^n b^n c^n\mid n\ge1\}. \end{aligned}

也就是说

H(L)R={anbncnn1}.\mathcal H(L)\cap R =\{a^n b^n c^n\mid n\ge1\}.

右侧是经典的非上下文无关语言,矛盾。因此 H(L)\mathcal H(L) 不是 CFL, 命题 2 为假。