촘스키 위계(Chomsky hierarchy)
문법을 규칙의 모양에 따라 정규·문맥 자유·문맥 의존·무제한의 네 층으로 나눈 위계. 층마다 그 언어를 알아보는 기계(유한 오토마톤(finite automaton), 푸시다운 오토마톤(pushdown automaton), 선형 유계 오토마톤(linear bounded automaton), 튜링 기계(Turing machine))가 짝을 이룬다.
언어를 수학의 대상으로 다루는 형식 언어(formal language) 이론에서 언어란 어떤 글자들(알파벳 Σ)로 만든 문자열들의 집합(set)입니다. '짝수 개의 a', 'a 몇 개 다음에 같은 수의 b', '멈추는 프로그램의 소스 코드' 모두 언어입니다. 문법은 이런 집합을 유한한 규칙으로 적는 방법이고, 1950년대 후반 노엄 촘스키는 규칙의 모양을 얼마나 제한하느냐에 따라 문법을 네 층으로 나누었습니다. 규칙이 자유로울수록 더 많은 언어를 적을 수 있고, 그 언어를 알아보는 기계에게는 더 많은 기억이 필요합니다.
그림의 점을 누르거나 여기서 언어를 고르세요:
층을 가르는 것은 기억입니다. 가장 안쪽의 정규 언어(regular language)는 상태만 기억하는 유한 오토마톤이 알아보고, 정규 표현식(regular expression)으로 적을 수 있습니다. 여기에 스택(접시 더미처럼 맨 위에만 넣고 꺼낼 수 있는 기억 장치) 하나를 더하면 문맥 자유 문법(context-free grammar)의 언어를 알아보는 푸시다운 오토마톤이 됩니다. 입력이 적힌 칸만큼의 테이프를 읽고 쓸 수 있게 하면 선형 유계 오토마톤, 테이프에 끝이 없으면 튜링 기계가 됩니다. 여기서 기계들은 갈림길에서 여러 길을 동시에 시도할 수 있는(비결정적) 기계로 봅니다. 유한 오토마톤과 튜링 기계에서는 갈림길이 힘을 늘리지 않지만, 푸시다운 오토마톤에서는 늘리고, 선형 유계 오토마톤에서는 늘리는지 아직 모릅니다.
한 층이 바로 아래 층보다 정말 큰지는 따로 증명해야 합니다. aⁿbⁿ이 정규가 아니라는 증명에는 펌핑 보조정리(pumping lemma)를 씁니다. 상태가 k개인 기계가 k글자 이상을 읽으면 비둘기집 원리(pigeonhole principle)에 따라 같은 상태를 두 번 지나고, 그 사이에 읽은 조각은 몇 번을 되풀이해도 기계의 판정이 바뀌지 않습니다.
가장 바깥 층 너머에도 언어가 있습니다. 문법은 유한한 글자로 적히니 모두 합쳐도 가산 개입니다. 반면 언어는 Σ*(Σ의 글자로 만들 수 있는 모든 유한 문자열의 집합)의 부분집합(subset)이라 멱집합(power set)만큼, 곧 대각선 논법(diagonal argument)에 따라 셀 수 없이 많습니다. 따라서 어떤 문법으로도 적을 수 없는 언어가 셀 수 없이 많고, 문법으로 적을 수 있는 언어는 가산개뿐입니다. 가장 바깥 층인 재귀 열거(recursively enumerable) 언어는 '입력이 그 언어에 속하면 언젠가 멈춰 받아들이는' 튜링 기계가 있는 언어이고, 제한 없는 문법이 적는 언어와 정확히 같습니다. 구체적인 예가 정지 문제(halting problem)에서 나옵니다. 멈추는 프로그램들의 코드를 모은 언어는 재귀 열거이지만(돌려 보다가 멈추면 받아들이면 됩니다), 멈추지 않는 프로그램들의 언어는 가장 바깥 층에도 들지 못합니다. 또 재귀 열거 층 안에는 튜링 기계가 언제나 멈추며 '예·아니요'를 답하는, 곧 결정 가능(decidable)한 언어들의 층이 따로 있고, 문맥 의존 언어(context-sensitive language)는 모두 그 안에 들어갑니다. '기계적으로 계산할 수 있는 것'을 가장 바깥 층의 기계, 곧 튜링 기계로 정의해도 된다는 주장이 처치–튜링 논제(Church–Turing thesis)입니다. 증명된 정리가 아니라 증거로 받아들이는 논제입니다.
자연어는 어디쯤일까요? 촘스키는 영어가 유한 상태 모형으로는 설명되지 않는다고 주장했고, 앞 단어 몇 개만 보는 n-그램(n-gram) 모형이 바로 그런 유한 상태 모형입니다. 1985년 미국의 컴퓨터 언어학자 스튜어트 시버는 스위스 독일어의 교차 의존(cross-serial dependency) 구문을 들어 자연어가 문맥 자유 층도 조금 넘어선다고 논증했습니다. 스위스 독일어에서는 '우리가 한스가 집을 칠하도록 도왔다'를 '우리 한스에게 집을 도왔다 칠하다' 순서로 말할 수 있습니다. 명사들이 먼저 나오고 동사들이 같은 순서로 뒤따라서, 첫 명사는 첫 동사와, 둘째 명사는 둘째 동사와 짝을 이룹니다. 짝들이 괄호처럼 안쪽으로 겹치지 않고 서로 엇갈리는 것인데, 형식 언어로 쓰면
이어지는 곳. 사람이 쓴 프로그램 소스 코드를 기계가 실행할 명령으로 옮기는 컴파일러(compiler)는 이 위계를 그대로 씁니다. 소스 코드를 낱말로 자르는 단계는 정규 표현식, 낱말을 그래프인 구문 트리(parse tree)로 묶는 단계는 문맥 자유 문법입니다. 층마다 '알아볼 수 있는가'뿐 아니라 '얼마나 빨리 알아볼 수 있는가'도 물을 수 있고, 이렇게 계산에 드는 시간을 따지는 물음의 대표가 P 대 NP 문제(P versus NP problem)입니다. 가장 바깥 층의 기계인 튜링 기계와 같은 힘을 기계 대신 함수(function)로 적은 것이 람다 계산(lambda calculus)입니다.
이 개념이 나오는 긴 글
이 개념 위에 세워진 것
이 개념을 언급하는 페이지
- 가산 집합
… 만큼뿐이고 언어는 셀 수 없이 많으니, 어떤 문법이나 프로그램으로도 적을 수 없는 언어가 반드시 있습니다(촘스키 위계, 튜링 기계).
- 튜링 기계
… a, b, c 세 덩어리의 길이가 모두 같은 문자열들을 알아봅니다. 기계의 힘에 따라 나뉘는 이 층들이촘스키 위계입니다. 같은 1936년 알론조 처치는 전혀 다른 람다 계산으로 같은 개념에 이르렀고, 둘이 같다는 …
- 처치–튜링 논제
… 기계는 맨 위에 있고, 기억이 유한한 유한 오토마톤은 맨 아래에 있습니다. 문법으로 본 같은 사다리가촘스키 위계입니다. 세포 자동자의 무늬는 규칙이 결정론적인데도 앞날을 알려면 한 걸음씩 돌려 보는 수밖에 없어 보이는 …
- 유한 오토마톤
… 허용한(비결정적) 푸시다운 오토마톤이 인식하는 언어가 정확히 문맥 자유 문법의 언어입니다. 이 층들이촘스키 위계이고, 유한 오토마톤은 맨 아래층입니다. 이어지는 곳. 유한 오토마톤은 입력을 한 번 훑으면 반드시 …
- 문맥 자유 문법
… 규칙을 적용하는 과정을 유도라 하고, 이 문법이 유도할 수 있는 문자열들의 집합이 문법의 언어입니다.촘스키 위계의 둘째 층(유형 2)입니다. 보기: 파란 글자는 비단말 기호, 노란 글자는 단말 기호입니다. 청록 고리는 …
- 정규 표현식
… 맞춰야 하는 언어는 적을 수 없고(비둘기집 원리), 이런 언어에는 문맥 자유 문법이 필요합니다.촘스키 위계의 가장 안쪽 층입니다. 다만 프로그래밍 언어의 '정규식'은 되참조 같은 기능을 더해서 이론상의 정규 …
- n-그램 언어 모델
… 또 n-그램은 앞 몇 개만 보는 유한 상태 모형이라, 멀리 떨어진 주어와 동사의 일치나 괄호 같은 중첩은촘스키 위계의 더 바깥 층이 필요합니다. 이어지는 곳. 맞춤법 교정과 음성 인식은 '들린 소리가 이러할 때 원래 …
- 비교 언어학
… 첫머리'('낱말 첫머리에서 p를 f로 바꾼다') 같은 소리 변화 규칙은 문맥을 적는 다시 쓰기 규칙이라촘스키 위계의 문맥 의존 규칙 모양을 하고 있습니다. 하지만 실제로 쓰이는 음운 규칙들은 그보다 훨씬 약한 기계, 곧 …