수학 개념 지도
정보 이론

콜모고로프 복잡도(Kolmogorov complexity)

어떤 문자열을 출력하고 멈추는 가장 짧은 프로그램의 길이. '무작위'를 '더 줄일 수 없음'으로 정의하지만, 정지 문제⁠(halting problem)⁠ 때문에 계산할 수 없다.

K(x)=min⁡{ ∣p∣:U(p)=x }K(x) = \min \{\, |p| : U(p) = x \,\}
먼저 보면 좋은 개념튜링 기계정보 엔트로피

0과 1을 번갈아 백만 번 적은 문자열은 '01을 50만 번 출력하라'는 짧은 프로그램으로 줄일 수 있습니다. 동전을 백만 번 던져 적은 문자열은 거의 틀림없이 그 문자열을 통째로 출력하는 것보다 크게 짧게 쓸 방법이 없습니다(얼마나 확실한지는 아래에서 셉니다). 1960년대 중반 미국의 레이 솔로모노프, 소련의 콜모고로프, 아르헨티나계 미국 수학자 그레고리 차이틴은 각자 이 차이를 수로 만들었습니다. 문자열 x의 콜모고로프 복잡도 K(x)K(x)는 고정된 보편 튜링 기계⁠(Turing machine)⁠ U에서 x를 출력하고 멈추는 가장 짧은 프로그램의 길이입니다. 보편 튜링 기계⁠(universal Turing machine)⁠는 다른 어떤 튜링 기계든 흉내 내는 기계이니, U를 고르는 일은 프로그래밍 언어 하나를 고르는 일에 해당합니다. 언어를 바꾸면 값이 달라지지 않을까요? 한 언어로 다른 언어의 해석기(그 언어로 쓴 프로그램을 읽어 그대로 실행해 주는 프로그램)를 짜 두면 되니, 차이는 해석기 길이만큼의 상수, 곧 x와 상관없는 상수를 넘지 않습니다(불변성 정리⁠, invariance theorem⁠). 이 정리는 보편 기계⁠(universal machine)⁠가 다른 기계를 흉내 낼 수 있다는 사실만으로 증명됩니다. 튜링 기계가 아닌 다른 합리적인 계산 모형으로 바꿔도 같은 결론이 나리라는 기대는 처치–튜링 논제⁠(Church–Turing thesis)⁠에 기댑니다.

진짜 K는 계산할 수 없으니(아래에서 봅니다) 아주 작은 언어로 흉내 내 봅시다. 이 언어의 프로그램은 0과 1, 그리고 괄호 안의 것을 k번 되풀이하라는 (…×k)(\ldots \times k)만 씁니다. 예를 들어 (01×3)1은 0101011을 출력합니다. 프로그램 길이는 글자 수입니다. 가장 짧은 프로그램은 부분 문자열마다의 최적 답을 표에 채워 가는 동적 계획법⁠(dynamic programming)⁠으로 정확히 찾을 수 있고, 답은 되풀이 안에 되풀이가 든 재귀⁠(recursion)⁠적인 모양입니다. 문자열: . 비트를 눌러 뒤집어 보세요.

파란 칸이 1, 어두운옅은 칸이 0입니다. 아래 괄호는 가장 짧은 프로그램에서 되풀이로 만든 부분과 되풀이 횟수입니다.

가장 짧은 프로그램: ()

대부분의 문자열은 줄어들지 않습니다. 길이가 n − c보다 짧은 이진 프로그램은 길이 0부터 n − c − 1까지 모두 합쳐 2n−c−12^{n-c} - 1개이고, 프로그램 하나는 문자열 하나만 출력합니다. 그러니 n비트 문자열 2n2^n개 가운데 K(x)<n−cK(x) \lt n - c인 것, 곧 c비트보다 많이 줄어드는 것은 2−c2^{-c}보다 적은 비율입니다(비둘기집 원리⁠, pigeonhole principle⁠). 동전을 던져 얻은 문자열이 10비트 넘게 줄어들 확률⁠(probability)⁠은 1,000분의 1도 되지 않습니다. 장난감 언어에서도 마찬가지입니다. 길이 12인 문자열 4096개를 모두 가장 짧게 적어 보면

길이 12인 비트열 4096개를 장난감 언어의 가장 짧은 프로그램 길이별로 센 것입니다. 세로축은 로그 눈금이고, 막대 위의 수가 실제 개수입니다.

그래서 콜모고로프 복잡도는 '무작위'의 정의가 됩니다. 상수 c를 하나 정해 두고 K(x)≥∣x∣−cK(x) \ge |x| - c인 문자열, 곧 c비트보다 많이 줄일 수 없는 문자열을 무작위라 부릅니다. 유한한 문자열에서 무작위는 이처럼 정도의 문제입니다. 계산 가능한 확률분포⁠(probability distribution)⁠에서 독립적으로 뽑은 기호들로 된 문자열이라면, K를 길이로 나눈 값이 길이가 길어질수록 확률 1로 그 분포의 엔트로피⁠(entropy)⁠로 수렴⁠(convergence)⁠합니다. 섀넌의 원천 부호화 정리⁠(source coding theorem)⁠를 문자열 하나에 대한 말로 옮긴 셈입니다. 렘펠–지브 압축⁠(Lempel–Ziv compression)⁠ 같은 압축기가 만든 파일 길이에 풀기 프로그램의 길이를 더하면 K의 위쪽 어림이 됩니다.

그런데 K는 계산할 수 없습니다. 복잡도가 백만보다 큰 문자열은 위의 셈에 따라 반드시 있습니다. 만약 K를 계산하는 프로그램이 있다면, '문자열을 짧은 것부터 차례로 훑으며 K를 계산해, 복잡도가 백만보다 큰 첫 문자열을 출력하라'는 프로그램을 만들 수 있습니다. 이 프로그램의 길이는 K를 계산하는 부분에 백만이라는 수를 적는 몇십 비트를 더한 것이라 백만보다 훨씬 짧으니, 복잡도가 백만보다 큰 문자열을 그보다 짧은 프로그램이 출력한 셈이 되어 모순입니다('백 글자 안으로 정의할 수 없는 가장 작은 자연수⁠(natural number)⁠'는 방금 백 글자 안으로 정의되었다는 베리 역설⁠(Berry paradox)⁠과 같은 모양입니다. 러셀이 옥스퍼드 도서관 사서 G. G. 베리에게서 들었다며 소개한 역설입니다). 이것은 정지 문제와 이어져 있습니다. 짧은 프로그램들을 모두 돌려 보면 되지 않느냐고 할 수 있지만, 어떤 프로그램이 끝내 멈출지 알 수 없습니다. 차이틴은 같은 논증으로 불완전성 정리⁠(incompleteness theorem)⁠의 한 판을 얻었습니다. 산수를 담을 만큼 강하고, 증명을 기계가 검사할 수 있는 무모순⁠(consistent)⁠ 형식 체계⁠(formal system)⁠에는 저마다 한계 L이 있습니다. 길이가 L보다 긴 문자열은 거의 전부 'K(x) > L'인데도, 그 체계는 어느 특정한 x에 대해서도 'K(x) > L'을 증명하지 못합니다. 그런 증명을 찾아 x를 출력하는 프로그램이 L보다 짧아질 수 있기 때문입니다. 이 모든 논증의 바탕은 짧은 프로그램이 몇 개 안 된다는 셈입니다. 같은 까닭으로 프로그램은 모두 합쳐 가산 개뿐이어서, 대부분의 실수⁠(real number)⁠는 어떤 프로그램으로도 적을 수 없습니다.

이어지는 곳. π의 이진 전개⁠(binary expansion)⁠나 망델브로 집합⁠(Mandelbrot set)⁠은 복잡해 보이지만 짧은 프로그램이 만들어 내니 K는 작습니다. 위의 'π의 이진 전개'는 장난감 언어로는 거의 줄지 않지만, 제대로 된 언어라면 앞 n자리를 출력하는 데 π를 계산하는 짧은 프로그램과 n을 적는 약 log⁡2n\log_2 n비트면 충분합니다. 이 위키의 그림들이 쓰는 '무작위' 수도 씨앗(난수 생성기에 처음 넣는 수) 하나에서 정해진 계산으로 나오니 K가 작습니다(무작위 알고리즘⁠(randomized algorithm)⁠, 몬테카를로 방법⁠(Monte Carlo method)⁠). '모형을 적는 길이 + 그 모형으로 데이터를 적는 길이'가 가장 짧은 모형을 고르라는 최소 기술 길이⁠(minimum description length)⁠ 원리(1978년 핀란드의 요르마 리사넨)는 이 생각을 학습에 옮긴 것입니다. 데이터를 통째로 외운 모형은 모형 자체가 길어지므로, 이 원리는 과적합⁠(overfitting)⁠을 막습니다. 설명이 같다면 가정이 적은 쪽을 택하라는 오컴의 면도날(14세기 영국 철학자 오컴의 윌리엄의 이름을 땀)을 수로 적은 셈입니다. 물리학에서는 비트를 지우는 데 드는 열의 최솟값이 란다우어 원리⁠(Landauer's principle)⁠로 정해집니다(무작위 비트 하나에 kBTln⁡2k_B T \ln 2. kBk_B는 볼츠만 상수⁠(Boltzmann constant)⁠, T는 절대 온도⁠(absolute temperature)⁠). 줄일 수 있는 비트열은 되돌릴 수 있는 방식으로 먼저 압축한 뒤 지우면 그만큼 덜 듭니다.

관련된 시대와 장소모스크바 수학 학파
이 개념이 나오는 큰 생각무작위성자기 참조와 대각선

이 개념이 나오는 긴 글

계산 이론 기계가 풀 수 없는 문제 모든 수학 문제를 기계적으로 풀 수 있을까? 러셀의 역설에서 괴델과 튜링까지, 그 질문에 대한 답은 '아니오'였고, 그 증명이 컴퓨터를 낳았다. 계산언어학 말을 세는 기계 문법은 규칙일까, 확률일까? 파니니의 문법에서 촘스키의 위계, 섀넌의 영어 엔트로피, 오늘날의 언어 모델까지. 램지 이론 완전한 무질서는 없다 여섯 명이 모이면 서로 아는 세 사람이나 서로 모르는 세 사람이 반드시 있다. 충분히 크면 어디에나 질서가 숨어 있다는 이론과, 그것을 동전 던지기로 증명한 에르되시. 알고리즘과 복잡도 줄 세우기의 한계 카드 천 장을 가장 빨리 줄 세우는 방법은? 인구조사의 천공 카드에서 퀵정렬까지, 그리고 어떤 방법도 넘을 수 없는 n log n의 벽. 정보 이론과 압축 짧게 보내기 모스 부호는 왜 E를 점 하나로 보낼까? 섀넌의 엔트로피가 정한 압축의 한계와, 허프만 부호에서 JPEG까지 그 한계에 다가간 방법들. 언어 모델 다음 단어를 맞히는 기계 다음 낱말을 짐작하는 일만으로 어디까지 갈 수 있을까? 마르코프의 글자 세기에서 섀넌의 추측 게임, 트랜스포머와 규모의 법칙, 사람의 선호까지. 밑바닥에는 확률의 곱셈 규칙과 로그 하나가 있고, 그 수학은 모델이 왜 그럴듯하게 틀리는지도 말해 준다. 불가능성 정리 불가능의 증명 각의 삼등분, 5차방정식의 근의 공식, 모든 파일을 줄이는 압축, 멈춤을 판정하는 프로그램, 공정한 투표 규칙. 없다는 것은 어떻게 증명할까? 서로 먼 분야의 불가능성 증명들은 거의 모두 불변량, 세기, 대각선이라는 세 가지 무기 가운데 하나를 쓴다. 압축과 과학 압축하는 것이 이해하는 것이다 튀코 브라헤가 20년 동안 적은 행성의 위치를 케플러는 법칙 세 줄로 줄였다. 짧게 적는 일과 이해하는 일은 정말 같은 일일까? 오컴의 면도날을 비트로 재는 법, 과적합을 압축의 실패로 읽는 법, 그리고 그 말이 정리인 곳과 철학인 곳.

이 개념 위에 세워진 것

이 개념을 언급하는 페이지

이 페이지가 가리키는 개념