촘스키 위계 (Chomsky hierarchy)는 형식 언어 를 생성하는 형식 문법 의 클래스 사이의 위계를 말한다. 노엄 촘스키 가 1956년에 제시하였다.
언어
언어는 형식적으로 문장들의 집합으로 정의될 수 있고, 문장은 형식적으로 기호들의 연쇄로 정의될 수 있다.
알파벳
T
{\displaystyle T}
는 기호들의 유한 집합 이다.
언어
L
{\displaystyle L}
은
T
∗ ∗ -->
{\displaystyle T^{*}}
의 부분집합 이다.
예를 들어,
T
=
{\displaystyle T=}
{ㄱ, ㄴ, ㄷ, ㄹ, ..., ㅎ, ㅏ, ㅑ, ㅓ, ㅕ, ..., ㅡ, ㅣ}라고 했을 때 다음과 같은 언어들이 있을 수 있다.
L
1
=
{\displaystyle L_{1}=}
{ㄱㅏ, ㄴㅏ, ㄷㅏ, ㄹㅏ, ..., ㅎㅏ}
L
2
=
{\displaystyle L_{2}=}
{ㄱㅏㄷㅏ, ㅅㅏㄷㅏ, ㅈㅏㄷㅏ, ㅊㅏㄷㅏ, ㅌㅏㄷㅏ, ㅍㅏㄷㅏ, ㅎㅏㄷㅏ}
L
3
=
{\displaystyle L_{3}=}
{ㄱㄱㅏㄷㅏ, ㄷㄷㅏㄷㅏ, ㅅㅅㅏㄷㅏ, ㅈㅈㅏㄷㅏ}
문법
문법은 형식적으로 기호들의 집합에 그 기호들로부터 문장을 만드는 규칙이 부여된 것으로 정의될 수 있다.
G
=
(
V
N
,
V
T
,
P
,
S
)
{\displaystyle G=(V_{N},V_{T},P,S)}
V
N
{\displaystyle V_{N}}
: 비말단 기호의 유한 집합
V
T
{\displaystyle V_{T}}
: 말단 기호의 유한 집합
P
{\displaystyle P}
: 생성규칙의 유한 집합
S
{\displaystyle S}
:
V
N
{\displaystyle V_{N}}
에 속하는 기호로 시작 기호 또는 문장 기호
형식문법을 기술하는 데 있어서 몇가지 기호 사용의 관례가 있다.
V
N
{\displaystyle V_{N}}
의 원소인 비말단 기호는
A
,
B
,
C
{\displaystyle A,B,C}
등의 영문자 대문자로 표기한다.
V
T
{\displaystyle V_{T}}
의 원소인 말단 기호는
a
,
b
,
c
{\displaystyle a,b,c}
등의 영문자 소문자로 표기한다.
V
(
=
V
N
∩ ∩ -->
V
T
)
{\displaystyle V(=V_{N}\cap V_{T})}
의 원소는
α α -->
,
β β -->
,
γ γ -->
{\displaystyle \alpha ,\beta ,\gamma }
등 그리스문자로 표기한다. 즉, 비말단과 말단을 구별하지 않을 때이다.
빈 문자열은
ϵ ϵ -->
{\displaystyle \epsilon }
로 표기한다.
위계
촘스키 위계의 포함 관계
이렇게 정의된 형식문법은 생성규칙에 어떠한 제약이 있는가에 따라서 다음과 같이 나눌 수 있다.
제0유형 문법
무제약 문법 (UG, unrestricted grammar)은 생성규칙(production rule)에 아무런 제약을 두지 않으나, 좌변이 공집합이 되는 경우만은 없다(즉
α α -->
→ → -->
β β -->
{\displaystyle \alpha \rightarrow \beta }
에서
α α -->
≠ ≠ -->
ϵ ϵ -->
{\displaystyle \alpha \neq \epsilon }
). 이들은 모든 종류의 형식 문법을 포함한다. 이는 튜링 기계 가 인식가능한 모든 언어를 생성하는데, 이를 재귀적 열거 가능 언어 (recursively enumerable set)라 한다.
제1유형 문법
문맥 의존 문법 (CSG, context-sensitive grammar)은 문맥 의존 언어 를 생성한다. 생성 규칙은
α α -->
A
β β -->
→ → -->
α α -->
γ γ -->
β β -->
{\displaystyle \alpha A\beta \rightarrow \alpha \gamma \beta }
이며, 이들은 항상
α α -->
→ → -->
β β -->
{\displaystyle \alpha \rightarrow \beta }
에서
|
α α -->
|
≤ ≤ -->
|
β β -->
|
{\displaystyle |\alpha |\leq |\beta |}
이다. 선형 구속 오토마타 로 인식할 수 있다.
제2유형 문법
문맥 자유 문법 (CFG, context-free grammar)은 문맥 자유 언어 를 생성한다. 모든 생성 규칙은
A
→ → -->
α α -->
{\displaystyle A\rightarrow \alpha }
형태를 갖는다. (
A
{\displaystyle A}
는 하나의 비말단(nonterminal)이고,
α α -->
{\displaystyle \alpha }
는
V
∗ ∗ -->
{\displaystyle V^{*}}
에 속하는 문자열.) 푸시다운 오토마타 로 인식할 수 있다.
제3유형 문법
정규 문법 (RG, regular grammar)은 오른쪽 정규 문법과 왼쪽 정규 문법의 총칭이다. 다음은 각 생성규칙:
(오른쪽 정규 문법)
A
→ → -->
t
B
{\displaystyle A\rightarrow tB}
또는
A
→ → -->
t
{\displaystyle A\rightarrow t}
, 여기서
t
∈ ∈ -->
V
T
∗ ∗ -->
{\displaystyle t\in {V_{T}}^{*}}
이고,
A
,
B
∈ ∈ -->
V
N
{\displaystyle A,B\in V_{N}}
이다.
(왼쪽 정규 문법)
A
→ → -->
B
t
{\displaystyle A\rightarrow Bt}
또는
A
→ → -->
t
{\displaystyle A\rightarrow t}
, 여기서
t
∈ ∈ -->
V
T
∗ ∗ -->
{\displaystyle t\in {V_{T}}^{*}}
이고,
A
,
B
∈ ∈ -->
V
N
{\displaystyle A,B\in V_{N}}
이다.
이로부터 모든 정규 언어 를 기술할 수 있으며, 정규 표현식 과 등가이기에 유한 상태 기계 가 인식할 수 있다.
형식문법의 촘스키 위계
유형
문법
언어
인식 오토마타
생성규칙
언어의 예
제0유형
제약없는 문법
귀납적 가산 언어
튜링 기계
α α -->
A
β β -->
→ → -->
β β -->
{\displaystyle \alpha A\beta \rightarrow \beta }
-
제1유형
문맥의존문법
문맥의존언어
선형 구속형 비결정론적 튜링 기계
α α -->
A
β β -->
→ → -->
α α -->
γ γ -->
β β -->
{\displaystyle \alpha A\beta \rightarrow \alpha \gamma \beta }
a
n
b
n
c
n
{\displaystyle a^{n}b^{n}c^{n}}
제2유형
문맥자유문법
문맥자유언어
비결정론적 푸시다운 오토마타
A
→ → -->
α α -->
{\displaystyle A\rightarrow \alpha }
a
n
b
n
{\displaystyle a^{n}b^{n}}
제3유형
정규문법
정규언어
유한 상태 기계
A
→ → -->
a
B
{\displaystyle A\rightarrow aB}
A
→ → -->
a
{\displaystyle A\rightarrow a}
a
n
{\displaystyle a^{n}}
참고 문헌
Noam Chomsky: Three models for the description of language , IRE Transactions on Information Theory, 2 (1956), pages 113-124
Noam Chomsky: On certain formal properties of grammars , Information and Control, 1 (1959), pages 91-112
각 언어 및 문법은 바로 윗줄의
진부분집합 이다. 또한 각 기계와 문법은 바로 윗줄의 기계와 문법으로 동등하게 기술될 수 있다.