『言語理論とオートマトン』(ISBN4-7819-0250-2)の演習問題を何題か解いてみました。
S → ε S → 1A A → 0S S → 0S S → 1
S → ε S → SS S → abb S → aSbb S → abSb S → bab S → bSab S → baSb S → bba S → bSba S → bbSa
S→ε AB→BA BA→AB A→a S→SS AC→CA CA→AC B→b S→ABC CB→BC BC→CB C→c
S→ε CB→BC A→1
S→ACS DA→AD B→0
S→BDS CA→AC C→1
DB→BD D→0
T0 = {S}
T1 = T0 ∪ {aAS, a}
T2 = T1 ∪ {aSbAS, abaS, aSSS, aAsAS, aAa}
T3 = T2 ∪ {aSbAa, abaa, aaSS, aSaS, aSSa, aAaAa, aSbAa, abaa, aSSa}
T4 = T3 ∪ {aabAa, aaaS, aaSa, aSaa, aabAa}
T5 = T4 ∪ {aaaa}
T6 = T5 ∪ φ
ゆえに、T5 = T6 が、
L(G)の長さが5以下のすべての文字列である。
a) ababab b) bbbaabaa c) aabbaabb
S
/ \
a B
/ \
b S
/ \
a B
/ \
b S
/ \
a B
|
b
S
/ \
b A
/|\
b A \
/|\ \
b A A \
| | A
a a /|\
b A A
| |
a a
S
/ \
a B
/|\
a B B
| |\
b b S
/ \
a B
/|\
a B B
| |
b b
L(G)が空であることを証明できるか?S → 0AB B → 01 B → 0 A1 → SB1 B → SA A0 → S0B
証明できる。
記号Sに適用可能な規則は S→0AB だけであり、これは記号Aを導入する。 ところで、Aに適用可能な規則は A1→SB1 と A0→S0B であり、共にSを導入する。 したがって、Sから導出される記号列にはSまたはAが含まれ、 ゆえにGは端記号列を導出しない。
よって、L(G)=φ
G={VN, VT, P, S}の導出の木を示した。
xの長さが2以上である規則のそれぞれについて以下のように書き換えることで、 等価な正規文法を生成できる。
x = x1 x2 x3 x4 … xn と置くと、新たな変数 X1, X2, X3, X4, …, Xnを導入して、
A→x1X1 X1→x2X2 X2→x3X3 … Xn→xnB (もしくは Xn→xn )
等価であることの証明は省略。
({q0, q1, q2}, {0,1}, δ, q0, {q0})
δ(q0, 1) = q0
δ(q0, 0) = q1
δ(q1, 1) = q0
δ(q1, 0) = q2
δ(q2, 1) = q2
δ(q2, 0) = q2
|
|
({q0, q1, q2}, {0,1}, q0, P)
P: q0 → ε
q0 → 1q0
q0 → 0q1
q1 → 1q0
q1 → 0q2
q2 → 1q2
q2 → 0q2
δ(q0, a) = {q1, q2}
δ(q1, a) = {q0, q1}
δ(q2, a) = {q0, q2}
δ(q0, b) = {q0}
δ(q1, b) = φ
δ(q2, b) = {q1}
T(M)を受理する決定性有限オートマトンを作れ。
LR = {w|wの記号を逆順に並べたものが、Lに属する}もまた、3型言語である。
Lを受理するオートマトンを M = (S, Σ, δ, q0, F) と置き、以下のような新しいオートマトンを構成する。
M' = (S, Σ, δ, q0, F')
F' = F ∪ {q | δ*(q,y)∈F}
すると、このオートマトンは明らかに、Init(L)を受理する。 したがって、Init(L)は3型言語。
P: S→T+S T→L×T L→[S] S→T-S T→L/T L→a S→T T→L L→bを考える。L(G)がどんなものか、簡単に説明せよ。L(G)を生成するChomsky標準形文法を示せ。
P: S→TD1 S→TD2 T→TD2 S→C3D3 T→C3D3 L→C3D3 S→α T→α L→α S→β T→β L→β C1 → + C1 → - C2 → × C2 → / C3 → [ C4 → ]
P: A→0A1 B→1C0 A→0AC B→AC A→0 C→1CB A→aB0 C→AB次の条件を満たす等価な文法G1を見つけよ; もし、DがG1の変数なら、ある終端記号列wについて、D ⇒*wとなっている。
はじめの記号列は、文記号一個だけからなる記号列であり、長さ1、変数の数1である。
A→BC型の規則によって変数の数が1増え、A→aの形の規則の適用によって変数の数が1減る。最初にある変数は文記号の1個だけであるから、wの導出にはn回のA→BC型の規則と、n+1回のA→a型の規則が使われていることになる。
n+(n+1)=p
n=(p-1)/2
ところで、A→BC型の規則によって記号列の長さは1増え、A→aの形の規則の適用によっては長さは変化しない。したがって、wの長さは 1+n=(p+1)/2