跳到主要内容

京都大学 情報学研究科 知能情報学専攻 2025年8月実施 専門科目 S-5

Author​

itsuitsuki

Description​

大学公表の原題 文法 G=(Σ,N,P,S)G = (\Sigma, N, P, S) を考える。ここで、 Σ,N,P,S\Sigma, N, P, S はそれぞれ終端記号の有限集合、非終端記号の有限集合、生成規則の有限集合、開始記号である。 ϵ\epsilon は空文字列を表す。 以下の設問では Σ={a,b}\Sigma = \{a, b\} とする。

設問 1 言語 LL をすべての回文からなる集合とする。回文とは前向きに読んだ場合と後ろ向きに読んだ場合とで同じになる文字列である。 LL は ϵ\epsilon を含むとする。 LL を生成する文脈自由文法の PP を示せ。ただし N={S}N = \{S\} とする。

設問 2 N={S},P={S→aS∣Sb∣a∣b}N = \{S\}, P = \{S \to aS \mid Sb \mid a \mid b\} とする文脈自由文法 GG について、 GG が生成するどの文字列も部分列として baba を含まないことを証明せよ。

設問 3 言語 LL を aa の数が bb の数よりも多いすべての文字列の集合とする。

  1. LL を生成する文脈自由文法の NN と PP を示せ。
  2. その文法の健全性(この文法が生成する文字列はすべて LL に含まれること)を証明せよ。
  3. その文法の完全性(LL に含まれる文字列はすべてこの文法が生成できること)を証明せよ。

設問 4 L={anbn∣n≥0}L = \{a^n b^n | n \geq 0\} の補集合が文脈自由言語であることを証明せよ。

题目描述​

考虑文法 G=(Σ,N,P,S)G=(\Sigma,N,P,S),其中 Σ\Sigma、NN、PP、SS 分别表示有限终结符集、有限非终结符集、有限产生式集和开始符号,ϵ\epsilon 表示空串。以下各题均令 Σ={a,b}\Sigma=\{a,b\}。

  1. 令语言 LL 为所有回文组成的集合。回文是正向读取与反向读取完全相同的字符串,并规定 ϵ∈L\epsilon\in L。在 N={S}N=\{S\} 的条件下,给出生成 LL 的上下文无关文法的产生式集 PP。

  2. 考虑 N={S}N=\{S\}、产生式集

    P={S→aS∣Sb∣a∣b}P=\{S\to aS\mid Sb\mid a\mid b\}

    的上下文无关文法 GG。证明 GG 生成的任何字符串都不含连续子串 baba。

  3. 令语言 LL 为所有满足字符 aa 的个数多于字符 bb 的个数的字符串组成的集合。

    (1)给出生成 LL 的上下文无关文法的非终结符集 NN 与产生式集 PP。

    (2)证明该文法的可靠性,即该文法生成的每个字符串都属于 LL。

    (3)证明该文法的完备性,即 LL 中的每个字符串都能由该文法生成。

  4. 证明语言

    L={anbn∣n≥0}L=\{a^nb^n\mid n\geq0\}

    的补集是上下文无关语言。

Kai​

設問 1​

P={S→aSa∣bSb∣a∣b∣ϵ}.P=\{S\to aSa\mid bSb\mid a\mid b\mid\epsilon\}.

每次在两端添相同字符,故生成串均为回文。反之,对任意长度至少为 22 的回文,去掉相同的首尾字符后仍是回文;对长度归纳即可证明所有回文均可生成。

設問 2​

终结前的每个句型均为 aiSbja^iSb^j,其中 i,j≥0i,j\geq0。用最后一步 S→aS\to a 或 S→bS\to b 后,所得串必为 ambna^mb^n 且 m+n≥1m+n\geq1。这种串中不会有某个 bb 后面再出现 aa,因此不含 baba,无论把部分列理解为连续子串还是一般子序列。

設問 3​

(1) 取 N={S,E}N=\{S,E\},产生式为

S→EaE∣EaS,E→aEbE∣bEaE∣ϵ.S\to EaE\mid EaS,\qquad E\to aEbE\mid bEaE\mid\epsilon.

(2) EE 生成的每个串中 a,ba,b 数量相等。S→EaES\to EaE 的两者数量差为 11,S→EaSS\to EaS 则在其后一个正差值上再加 11,所以 SS 生成的串均满足 #a>#b\#a>\#b。

(3) 先证明 EE 生成所有数量相等的串。对非空平衡串 ww,若首字符为 aa,取其前缀中 a,ba,b 数量差首次回到 00 的位置,可分解为 w=aubvw=aubv,其中 u,vu,v 均平衡。若首字符为 bb,同理分解为 buavbuav。对子串长度归纳,分别用 E→aEbEE\to aEbE 或 E→bEaEE\to bEaE 即可;空串由 E→ϵE\to\epsilon 生成。

再对正差值 h=#a−#bh=\#a-\#b 归纳。取 ww 的前缀差值首次达到 11 的位置,可以写作 w=uavw=uav,其中 uu 平衡,vv 的差值为 h−1h-1。当 h=1h=1 时,u,vu,v 都能由 EE 生成,故用 S→EaES\to EaE;当 h>1h>1 时,vv 按归纳假设能由 SS 生成,故用 S→EaSS\to EaS。这证明了完全性。

設問 4​

不属于 {anbn:n≥0}\{a^nb^n:n\geq0\} 的串恰好分为三类:含有 baba;形如 aibja^ib^j 且 i>ji>j;形如 aibja^ib^j 且 i<ji<j。取开始符号 SS 并给出文法

S→R∣A∣B,R→aR∣bR∣baT,T→aT∣bT∣ϵ,A→aAb∣C,C→aC∣a,B→aBb∣D,D→bD∣b.\begin{aligned} S&\to R\mid A\mid B,\\ R&\to aR\mid bR\mid baT,&T&\to aT\mid bT\mid\epsilon,\\ A&\to aAb\mid C,&C&\to aC\mid a,\\ B&\to aBb\mid D,&D&\to bD\mid b. \end{aligned}

R,A,BR,A,B 恰好分别生成上述三类串。若一个串不含 baba,它必有形式 aibja^ib^j;若又不属于原语言,则 i≠ji\ne j,所以三类已穷尽补集。该文法是上下文无关文法,故补集是上下文无关语言。