文字列 x と文字列 y に対して, #y(x) を x における y の部分文字列としての出現回数とする.例えば、文字列x=abbbabbと文字列y=bbについて、#y(x)=3である. また、文字列xの反転文字列をxRと表す. 以下の言語を考える:
L1={x∈{a,b}∗∣#a(x)=#b(x)},L2={x∈{a,b}∗∣#ab(x)=#ba(x)},L3={x∈{a,b}∗∣#aa(x)=#bb(x)=0},L4={xxR∣x∈{a,b}∗},L5={aibjck∣i,j,k≥0,j=i+k}.
言語 L1,L2,L3,L4,L5 のそれぞれについて:
- 正則であれば正規表現を与えよ.
- 正則でなければ文脈自由文法を与えよ.
设 #y(x) 表示字符串 x 中子字符串 y 出现的次数. 例如, #y(x)=3 表示字符串 x=abbbabb 和 y=bb. 字符串 x 的反转字符串用 xR 表示. 考虑以下语言:
L1={x∈{a,b}∗∣#a(x)=#b(x)},L2={x∈{a,b}∗∣#ab(x)=#ba(x)},L3={x∈{a,b}∗∣#aa(x)=#bb(x)=0},L4={xxR∣x∈{a,b}∗},L5={aibjck∣i,j,k≥0,j=i+k}.
对语言 L1,L2,L3,L4,L5:
- 如果是正则语言, 请给出正则表达式.
- 如果不是正则语言, 请给出生成它的文法.