λ¬Έλ§₯ μμ λ¬Έλ²μ μμ±κ·μΉμ μ°μΈ‘μ λμ€λ λ¬Έμμ΄μ ννμλ μ΄λ ν μ μ½λ μμ΅λλ€.
κ·Έλ¬λ μ€νλ € μ΄λ° μ νμΌλ‘ μΈν΄ 볡μ‘μ±μ΄ μ¦κ°νλ λ¨μ μ κ°μ§λλ€.
μ΄μ λΆν° μ ν¬λ μ΄λ¬ν μ μ½ μλ λ¬Έλ² λμ , μ νλ ννλ₯Ό λ§μ‘±νλ λμΉμΈ λ¬Έλ²μΌλ‘ λ³ννλ λ°©λ²μ μ΄ν΄λ³Ό κ²μ λλ€.
λ¬Έλ²μ λ³ν λ°©λ²
λΉ λ¬Έμμ΄(λ)μ΄ λνλλ λ¬Έλ²μ΄λ μΈμ΄λ λ€μ λ°λμ§νμ§ λͺ»ν©λλ€.
μ΄λ λ§μ μ 리μ μ¦λͺ μμ λ³κ°μ μν μ νλ©°, νΉλ³ν μ£Όμνμ¬μΌ ν©λλ€.
μ ν¬λ μ΄λ¬ν λΉ λ¬Έμμ΄μ κ³ λ €λμμμ μ κ±°νμ¬ μ€μ§ λλ₯Ό ν¬ν¨νμ§ μλ μΈμ΄λ§μ μ΄ν΄λ³΄λ € ν©λλ€.
Lμ λ¬Έλ§₯ μμ μΈμ΄λΌ νκ³ , Gλ₯Ό L-{λ}(L μμ λΉ λ¬Έμμ΄ μ κ±°)μ μμ±νλ λ¬Έλ§₯ μμ λ¬Έλ²μ΄λΌ νκ² μ΅λλ€.
μ¬κΈ°μ Vμ μλ‘μ΄ μμ μ¬λ²μ μΆκ°νκ³ λ€μμ μλ‘μ΄ μμ±κ·μΉμ Pμ μΆκ°ν¨μΌλ‘μ¨ Lμ μμ±νλ λ¬Έλ²μ μ»μ μ μμ΅λλ€.
$$S_0 \to S \;| \; \lambda$$
κ²°κ³Όμ μΌλ‘ λͺ¨λ μ€μ§μ μΈ μλ―Έμ λνμ¬, λλ₯Ό ν¬ν¨νλ λ¬Έλ§₯-μμ μΈμ΄μ ν¬ν¨νμ§ μμ λ¬Έλ§₯-μμ μΈμ΄ μ¬μ΄μλ μ°¨μ΄κ° μμ΅λλ€.
λ°λΌμ μμΌλ‘λ λλ₯Ό ν¬ν¨νμ§ μλ λ¬Έλ§₯ μμ μΈμ΄λ‘ κ·Έ λμμ μ’ν κ²μ λλ€.
μ μ©ν μΉν κ·μΉ
λ¨μνλ μ΄λ€ ννμ λ°λμ§νμ§ μμ μμ±κ·μΉλ€μ μ κ±°νλ κ²μ λλ€.
λ¬Έλ§₯-μμ λ¬Έλ² Gμ μμ±κ·μΉ Pκ° λ€μκ³Ό κ°μ κ²½μ°,
$$A \to x_1 B x_2$$
Aμ Bλ μλ‘ λ€λ₯Έ λ³μμμ κ°μ νλ©°, Bλ₯Ό μ’λ³μ κ°λ Pμ λͺ¨λ μμ±κ·μΉλ€μ΄ λ€μκ³Ό κ°λ€κ³ νλ©΄,
$$B \to y_1\;|\; y_2\; | \;...\; |\; y_n$$
$\hat{G} = (V, T, S, \hat{P})$ λ₯Ό $P$ μμ $A \to x_1 B x_2$ λ₯Ό μμ νκ³ , λ€μμ μμ±κ·μΉμ μΆκ°νμ¬ μ»μ΄μ§ μλ‘μ΄ μμ±κ·μΉλ€μ μ§ν© $\hat{P}$ λ₯Ό κ°λ λ¬Έλ²μ΄λΌ νκ² μ΅λλ€.
$$A \to x_1y_1x_2 \;|\;x_1y_2x_2 \;|\;...\;|\;x_1y_nx_2 $$
μ΄λ μμ λ μΈμ΄λ λμΉμ λλ€.
$$L(\hat{G}) = L(G)$$
Aμ Bκ° λ€λ₯Έ λ³μλΌλ μ¬μ€μ΄ κΌ νμν©λλ€.
μΈλͺ¨μλ(Useless) μμ±κ·μΉ
λ€μκ³Ό κ°μ μμ± κ·μΉμ μ΄ν΄λ³΄κ² μ΅λλ€.
$$S \to aSb\; | \;\lambda \;| \;A$$
$$A \to aA$$
λ³μ Aκ° λ¨λ§λ€μ λ¬Έμμ΄λ‘ λ³νλ μ μκΈ° λλ¬Έμ, μμ±κ·μΉ $S \to A$λ μλ¬΄λ° μν λ νμ§ λͺ»νλ κ²μ΄ λΆλͺ ν©λλ€.
Aλ λ¬Έμ₯ ννμλ λνλ μ μμΌλ, Aλ λ¬Έμ₯μΌλ‘λ λλ¬ν μ μμ΅λλ€.
μ΄λ° μμ±κ·μΉμ μ κ±°νλ κ²μ μμ±λλ μΈμ΄μ μλ¬΄λ° μν₯μ μ£Όμ§ μκΈ° λλ¬Έμ, νλμ λ¨μνλΌκ³ λ³Ό μ μμ΅λλ€.
$G = (V, T, S, P)$ λ₯Ό λ¬Έλ§₯-μμ λ¬Έλ²μ΄λΌ νκ² μ΅λλ€.
λ³μ $A \in V$ μ λνμ¬, λ€μ ννμ μ λκ° κ°λ₯ν λ¬Έμμ΄ $w \in L(G)$ κ° μ μ΄λ νλ μ‘΄μ¬νκ³ μ€μ§ κ·Έλ΄ λμλ§ Aκ° μΈλͺ¨μλ€κ³ ν©λλ€.
$$S \overset{*}{\Rightarrow} xAy \overset{*}{\Rightarrow} w$$
μ¬κΈ°μ xμ yλ $(V \cup T)$μ μν΄ μμ΅λλ€.
λ€μ λ§νλ©΄ λ³μκ° μ μ΄λ νλμ μ λμ λνλκ³ , μ€μ§ κ·Έλ΄ λμλ§ μΈλͺ¨κ° μμ΅λλ€.
μ΄λ μ§ μμ λ³μλ₯Ό μΈλͺ¨μλ€(useless)κ³ ν©λλ€.
μμ±κ·μΉμ΄ μΈλͺ¨μλ λ³μλ₯Ό ν¬ν¨νκ³ μμΌλ©΄ μμ μΈλͺ¨κ° μμ΅λλ€.
λ³μκ° μΈλͺ¨μμ΄μ§λ λ κ°μ§ μ΄μ λ λ€μκ³Ό κ°μ΅λλ€
ν΄λΉ λ³μκ° μμ μ¬λ²λ‘λΆν° λλ¬ν μ μμ΅λλ€.
ν΄λΉ λ³μκ° λ¨λ§(terminal) λ¬Έμμ΄μ μ λν΄λΌ μ μμ΅λλ€.
μ’ μ κ·Έλν (dependency graph)
μ’ μ κ·Έλνλ μΈλͺ¨μλ λ³μμ μμ±κ·μΉλ€μ μ κ±°νλ κ³Όμ μμ μ¬μ©λ μ μλ μ μ©ν λꡬμ λλ€.
λ¬Έλ§₯-μμ μΈμ΄μ λνμ¬ μ’ μ κ·Έλνλ λ³μλ€μ΄ λΌλ²¨λ‘ μ£Όμ΄μ§ μ μ λ€μ κ°μ§λ©°
μ μ λ€ Cμ D μ¬μ΄μλ λ€μκ³Ό κ°μ ννμ μμ±κ·μΉμ΄ μ‘΄μ¬νκ³ , μ€μ§ κ·Έλ΄ λμλ§ κ°μ μ΄ μ‘΄μ¬ν©λλ€.
$$C \to xDy$$
μΈλͺ¨μλ μμ±κ·μΉ μ κ±° μ μ°¨
$G = (V, T, S, P)$ λ₯Ό λ¬Έλ§₯-μμ λ¬Έλ²μ΄λΌ νλ©΄
μ΄λ€ μΈλͺ¨ μλ λ³μμ μμ±κ·μΉλ€μ ν¬ν¨νμ§ μκ³ Gμ λμΉμΈ λ¬Έλ²μ΄ μ‘΄μ¬νλ©°, μλμ κ°μ΅λλ€.
$$\hat{G} = (\hat{V}, \hat{T}, S, \hat{P})$$
μ΄λ μ λ¬Έλ²μ λ λΆλΆμΌλ‘ μ΄λ£¨μ΄μ§ μκ³ λ¦¬μ¦μ μν΄ Gλ‘λΆν° μμ±λ μ μμ΅λλ€.
첫 λΆλΆμμλ μ€κ° λ¨κ³μ λ¬Έλ² $G_1 = (V_1, T, S, P_1)$ μ ꡬμ±ν©λλ€.
μ¬κΈ°μ $V_1$ μ λ€μκ³Ό κ°μ μ λκ° κ°λ₯ν λ³μ Aλ€λ§μΌλ‘ ꡬμ±λ©λλ€.
$$A \overset{*}{\Rightarrow} w \in T^{*}$$
μ΄ν $G_1$ μ λν μ’ μ κ·Έλνλ₯Ό κ·Έλ¦° ν, κ·Έλνμμ Sλ‘λΆν° λλ¬λ μ μλ λ³μλ€μ μ°Ύμλ λλ€.
μ΄λ€μ λ³μλ€μ μ§ν©μμ μ κ±°λκ³ , λ§μ°¬κ°μ§λ‘ κ·Έ λ³μλ€μ ν¬ν¨νλ μμ±κ·μΉλ€λ μ κ±°λ©λλ€.
μ΄λ₯Ό ν΅ν΄ λ¨μνλ μ΅μ’ λ¬Έλ²μ μ»μ΄λ λλ€.
$G_1 = (V_1, T, S, P_1)$ μ ꡬμ±νλ λ°©λ²μ λ€μκ³Ό κ°μ΅λλ€.
1. $V_1$μ 곡μ§ν©μΌλ‘ λμ΅λλ€.
2. λ€μ λ¨κ³λ₯Ό $V_1$ μ μλ‘μ΄ λ³μλ€μ΄ μΆκ°λμ§ μμ λκΉμ§ λ°λ³΅ν©λλ€.
κ° $A \in V$ μ λν΄, Pκ° λ€μκ³Ό κ°μ ννμ μμ±κ·μΉμ ν¬ν¨νλ©΄ Aλ₯Ό $V_1$μ μΆκ°ν©λλ€.
$$A \to x_1 x_2 ... x_m$$
μ¬κΈ°μ λͺ¨λ $x_i$ λ $V_1 \cup T$ μ μν©λλ€.
3. P1μ Pμ μν μμ±κ·μΉ κ°μ΄λ° λͺ¨λ μ¬λ²λ€μ΄ $V_1 \cup T$ μ μνλ λͺ¨λ μμ±κ·μΉλ€λ‘ ꡬμ±ν©λλ€.
μμ
μ κ³Όμ μ μ€λͺ νλ©΄ λ€μκ³Ό κ°μ΅λλ€.
μ£Όμ΄μ§ λ¬Έλ²μ λν΄μ terminal symbolλ‘λ§ μ΄λ£¨μ΄μ§ λ¬Έμμ΄(λ¬Έμ₯)μ μ λν μ μλ μμ±κ·μΉμ μ κ±°ν©λλ€.
μμ μμμ κ²½μ° $C \to aCa$ μ΄λ―λ‘, Cλ λ¬Έμ₯μ μ λν μ μμΌλ©°, λ°λΌμ μ κ±°λ©λλ€.
λν Cλ₯Ό μ λν΄λ΄λ μμ±κ·μΉλ κ°μ΄ μ κ±°λμ΄ $S \to C$ μΈ μμ±κ·μΉμ΄ μ κ±°λ©λλ€.
μ΄λ κ² λ¬Έμ₯μ λ§λ€ μ μλ μμ±κ·μΉμ λͺ¨λ μ κ±°ν μ΄ν, μ’ μ κ·Έλνλ₯Ό κ·Έλ € μμ λ³μλ‘λΆν° λλ¬ν μ μλ μνλ€μ μ§μ°λ©΄ λμ λλ€.
$\lambda$ μμ±κ·μΉμ μ κ±°
λ€μκ³Ό κ°μ ννμ λ¬Έλ§₯-μμ λ¬Έλ²μ μμ±κ·μΉμ $\lambda$ -μμ±κ·μΉμ΄λΌ λΆλ¦ λλ€.
$$A \to \lambda$$
λ€μκ³Ό κ°μ΄ λΉ λ¬Έμμ΄λ‘ μ λκ° κ°λ₯ν λ³μλ₯Ό λκ°λ₯(nullable) λ³μλΌ λΆλ¦ λλ€.
$$ A \overset{*}{\Rightarrow} \lambda $$
μ΄λ€ λ¬Έλ²μ $\lambda$ λ₯Ό ν¬ν¨νμ§ μλ μΈμ΄λ₯Ό μμ±νμ§λ§, $\lambda$ -μμ±κ·μΉκ³Ό λκ°λ₯ λ³μλ€μ κ°κ³ μμ μ μμ΅λλ€.
μ΄λ° $\lambda$ -μμ±κ·μΉμ μ κ±°λ μ μμ΅λλ€.
μ΄λ μ°λ³μ λνλλ λκ°λ₯ λ³μλ€μ λͺ¨λ κ°λ₯ν μ‘°ν©μ λνμ¬,
λλ€λ‘ λ체νμ¬ μ»μ΄μ§λ λͺ¨λ μμ±κ·μΉλ€μ μΆκ°ν νμ μ κ±°νμ¬μΌ ν©λλ€.
$\lambda$ μμ±κ·μΉμ μ κ±° μ μ°¨
$V_N$ μ λκ°λ₯ λ³μλ€μ μ§ν©μ΄λΌ μ€μ ν©λλ€.
λ€μμ μμ± κ·μΉμ λνμ¬ $A$ λ₯Ό $V_N$ μ ν¬ν¨μν΅λλ€.
$A \to \lambda$
$A \to $ variables already in $V_N$
$V_N$ μ μλ‘μ΄ λ³μλ€μ΄ μΆκ°λμ§ μμ λκΉμ§ μμ κ³Όμ μ λ°λ³΅ν©λλ€.
μ΄ν λλ€ μμ±κ·μΉμ μ κ±°ν©λλ€.
μ΄λ μ°λ³μ μλ λκ°λ₯ λ³μλ€μ λλ€λ‘ λ체νμ¬ μ»μ΄μ§ μ μλ λͺ¨λ μμ±κ·μΉλ€μ μΆκ°ν©λλ€.
λ¨μ-μμ±κ·μΉμ μ κ±°
λ€μκ³Ό κ°μ ννμ λ¬Έλ§₯-μμ μΈμ΄μ μμ±κ·μΉμ λ¨μ-μμ±κ·μΉμ΄λΌ λΆλ¦ λλ€.
λ€μκ³Ό κ°μ ννμ λ¬Έλ§₯-μμ μΈμ΄μ μμ±κ·μΉμ λ¨μ-μμ±κ·μΉ(unit-promotion)μ΄λΌ λΆλ¦ λλ€.
$$A \to B$$
μ¬κΈ°μ A, B ∈ V μ λλ€.
λ¨μ-μμ±κ·μΉμ μ κ±° μ μ°¨
λ¬Έλ²μ λͺ¨λ $A \to B$ μμ±κ·μΉ(λ¨μ μμ±κ·μΉ)μ ν΄λΉνλ Aμμ BκΉμ§μ κ°μ μ κ°λ μ’ μ κ·Έλνλ₯Ό 그립λλ€.
λ¨μ μμ±κ·μΉμ μ μΈνκ³ μλ λ¬Έλ²μ λͺ¨λ μμ± κ·μΉμ ν¬ν¨νλ μλ‘μ΄ λ¬Έλ²μ ꡬμ±ν©λλ€.
μ’ μ κ·Έλνμ Aμμ Bλ‘μ κ²½λ‘κ° μμ λλ§λ€, μμμ μΈκΈν μ μ©ν μΉν κ·μΉμ μ¬μ©νμ¬ Bλ₯Ό λ°κΎΈκ³ μ λ¬Έλ²μ μμ± κ·μΉλ§ μ¬μ©ν©λλ€.
λ¨μν
μμμ λ°°μ΄ κ³Όμ λ€μ μ’ ν©νμ¬ μλ λ¨κ³λ₯Ό μμλλ‘ μ¬μ©νλ©΄ λ¬Έλ²μ λ¨μν ν μ μμ΅λλ€.
- λ-μμ±κ·μΉμ μ κ±°νλ€.
- λ¨μ-μμ±κ·μΉμ μ κ±°νλ€.
- μΈλͺ¨μλ μμ±κ·μΉμ μ κ±°νλ€.
- terminalμ λ§λ€μ§ λͺ»νλ μμ±κ·μΉμ μ κ±°νλ€
- λλ¬ λΆκ°λ₯ν μμ±κ·μΉμ μ κ±°νλ€
μ μμλ₯Ό μ§ν€μ§ μμ κ²½μ°, κ°λ΅ν κ³Όμ μμ μΈλͺ¨μλ κ·μΉλ€μ΄ λ€μ μμ±λ μ μμΌλ―λ‘, μ μμλλ‘ κ°λ΅νλ₯Ό μ§ννμ μΌ μ’μ΅λλ€.
Reference
https://www.youtube.com/watch?v=HqJHsnXxFhE&list=PLSN_PltQeOygPrInjCFdQM992AotARlFa&index=16