1. 다음 언어를 생성하는 문맥 민감 문법은 각각 무엇인가?
L_1 = { a^(n^2) | n ≥ 1 }
L_2 = { w^2 | w ∈ {a, b}^* }
L_3 = { (a^n)(b^m)(c^n)(d^m) | n, m ≥ 1 }
여기서 a, b, c, d는 심벌이다.
2. L_1, L_2 ⊆ {a, b}^*이고,
n_a(w)와 n_b(w)가 각각 문자열 w에 있는 a와 b의 개수일 때,
다음 언어를 생성하는 문맥 자유 문법을 고안하시오.
L_1 = { w | n_a(w) = n_b(w) }
L_2 = { w | n_a(w) = 2 * n_b(w) }
답은 밑에 있음. 물론 내가 생각한 답이어서 틀렸을 수도 ...
답:
1.1) P:
S → a
S → BA'
B → BC
B → C'
Caa → aaC
CA → aaAC
CA' → aaAA'
C'aa → aaC'
C'A → aaaC'
C'A' → aaaa
1.2) P:
S → aCS
S → bDS
S → aA
S → bB
Ca → aC
Cb → bC
Da → aD
Db → bD
CA → AA
CB → AB
DA → BA
DB → BB
A → a
B → b
1.3) P:
S → XY
X → aXC
X → aC
Y → BYd
Y → Bd
CB → BC
aB → ab
bB → bb
Cd → cd
Cc → cc
2.1) P:
S → aSbS | bSaS | λ
2.2) P:
S → aSaSbS | aSbSaS | bSaSaS | λ
여기서 λ는 빈 문자열이다.
댓글 0