본문으로 건너뛰기
161 / CODING LAB
먼저 알아두면 좋아요 · 연결된 선수 단원의 확률·이진 연산·논리와 부호 표기
단원 목록 (600) · 설명 언어와 알고리즘 정보
이해하는 속도로 읽으세요.개념도이론실험확인 문제
BUILD YOUR INTUITION

먼저 그림으로 이해하기

한 번에 한 단계씩 살펴보세요.

고정한 작은 언어에서 가장 짧은 설명을 찾아 언어 의존성을 이해합니다.

Eight-bit target 01010101. Fixed finite prefix decoder, not universal Kolmogorov complexity; family level=3. Decoder is shared and is not charged to these finite code lengths.

029.450
가로: 대상 출력 프로그램 순번 · 세로: 명령 비트 수
family (0 literal,1 uniform,2 period2,3 period4)programbitsdecoded byte
0001010101985
211001585
311100101885

shortest finite description bits = 5

고정 기준 예제의 그림과 수치입니다. 각 단계에서 같은 그림의 의미를 차례로 살펴보세요. 고정된 기준 예제이며 아래 실험의 설정과 독립적입니다.
1 / 4

대상

Shannon 엔트로피는 분포의 양이고 알고리즘 정보는 개별 문자열의 설명 길이입니다.

x=01010101

실험에서 확인하기 →
이 단원 목차

분포의 엔트로피에서 개별 대상의 설명으로

Shannon 엔트로피는 확률분포에 대한 평균 불확실성입니다. 반면 알고리즘 정보는 주어진 문자열 하나를 출력할 가장 짧은 프로그램을 묻습니다. 동전으로 생성했는지 모르더라도 01010101에는 “01을 네 번 반복”이라는 설명이 있습니다. 생성 이력과 설명 가능성은 다르며, 짧은 한 문자열만 보고 강한 무작위성 결론을 내리지 않습니다.

보편 prefix 기계 U를 고정하면 Kolmogorov 복잡도는 다음과 같습니다. 프로그램은 출력 후 종료해야 합니다.

KU(x)=min⁡p:U(p)=x∣p∣.K_U(x)=\min_{p:U(p)=x}|p|.

직접 계산 가능한 작은 설명 언어

실습은 보편 기계 대신 고정한 유한 복호기 D를 사용합니다. 모든 출력은 정확히 8비트이고 모든 명령은 즉시 종료합니다. 헤더를 포함한 길이를 비교합니다.

문법 출력 전체 길이
0 + 8비트 x x 그대로 9
10 + 비트 b b를 8번 3
110 + 2비트 ab ab를 4번 5
1110 + 4비트 abcd abcd를 2번 8

명령 집합은 prefix-free입니다. 헤더로 어느 명령인지 알면 남은 payload 길이가 정해집니다. 전체 Kraft 합은 256×2⁻⁹ + 2×2⁻³ + 4×2⁻⁵ + 16×2⁻⁸ = 15/16입니다.

예제: 같은 출력의 여러 프로그램

85는 이진수 01010101입니다. literal 설명 001010101은 9비트, period2 설명 11001은 5비트, period4 설명 11100101은 8비트입니다. 최솟값은 5입니다. 0의 상수 설명 100은 3비트입니다. 언어 수준 0에서는 literal만 허용하므로 두 대상 모두 9비트가 됩니다.

KD(x)=min⁡p:D(p)=x∣p∣.K_D(x)=\min_{p:D(p)=x}|p|.

파란 막대는 같은 대상의 가능한 설명 길이입니다. 실습이 계산하는 것은 이 유한 K_D이며 보편 K_U가 아닙니다. 긴 설명을 발견하는 것은 상한을 주고, 여기서 최적임을 아는 것은 고정한 모든 후보를 전수 조사했기 때문입니다.

언어 선택과 해석기 비용

보편 기계 U가 D를 해석하는 고정 프로그램을 포함할 수 있으므로 K_U(x)≤K_D(x)+c_D입니다. c_D에는 복호기를 지정하는 비용이 들어갑니다. 서로 다른 보편 기계의 복잡도는 대상과 무관한 가산 상수 범위에서 비교할 수 있지만, 아주 짧은 문자열에서는 그 상수가 중요합니다.

KU(x)≤KD(x)+cD.K_U(x)\le K_D(x)+c_D.

AI 모형이 데이터를 압축한다고 말할 때도 디코더·사전·아키텍처가 무료인지 점검해야 합니다. 학습 후 특정 데이터만 짧게 출력하는 새 언어를 만들고 그 언어의 비용을 빼면 공정한 비교가 아닙니다.

확인 문제와 해설

  1. 11111111은 몇 비트인가요? 현재 언어에서 101의 3비트입니다. 원본 8비트와 명령 길이를 구분합니다.
  2. 이 최솟값을 모든 알고리즘 중 최적이라고 부를 수 있나요? 아니요. 허용한 278개 명령에 대해서만 최적입니다.
  3. “별도 명령 하나로 대상 출력”을 추가하면 항상 유리한가요? 공유 복호기 비용을 숨기면 그렇게 보일 수 있습니다. 비교의 조건이 달라집니다.

추가 읽기: Grünwald and Vitányi, Algorithmic Information Theory.

CHECK YOUR UNDERSTANDING

설명할 수 있나요?

실험 설정과 무관한 기준 예제를 묻습니다. 답을 고르고 설명을 확인해보세요.

1. 실습의 최솟값은 보편 K인가요?
2. 설명 언어를 바꾸면 길이가 달라질 수 있나요?

선택한 답과 학습 표시는 이 브라우저에 저장됩니다. 다시 풀거나 표시를 해제할 수 있습니다.