Kolmogorov 복잡성 : 왜 문자열 자체보다 많은 바이트가 필요합니까?


답변:


13

Kolmogorov 복잡성의 정확한 값은 문자열을 나타 내기 위해 선택한 언어에 따라 다릅니다. 이 언어는 튜링이 완전해야하므로 모든 문자열을 그대로 나타내는 것은 선택 사항이 아닙니다.

최대 길이 적어도 하나 개의 캐릭터가있는 경우 비둘기 집 원리에 의해, 표현 자체보다 짧은이, 기껏해야 길이가 적어도 하나의 문자열도있다 표현 자체보다 더 이상은. (표현은 압축 알고리즘입니다.)nnn

각 문자열의 표현이 최대 1 비트 이상인 설명 언어를 사용할 수 있습니다. 각 문자를 "인쇄 적으로"또는 "해석"으로 나타내는 비트로 시작하십시오. 모든 설명 언어가 그렇게 간단한 것은 아닙니다.

보다 공식적인 설명은 Wikipedia 기사의 불변성 정리 섹션 에 자세히 설명되어 있습니다. 있다 최적의 주어진 언어에 대해, 일정의이되도록 기술 언어, 최적의 언어 문자열에 대한 설명 (길이 무엇인지 상관없이) 가장에되도록 더 이상 다른 언어에 비해 비트. 직관적으로 다른 언어에 대한 통역사를 최적의 언어로 작성하십시오.CCC


6

여기에서 고려되는 문자열에 대한 설명은 일부 범용 Turing 기계에 대한 입력입니다. C 프로그램으로 생각할 수 있습니다. 문자열 hello world자체는 C 프로그램을 형성하지 않지만 다음과 같이 C 프로그램을 구성합니다 int main(int argc, char *argv[]) { printf("hello world"); }. 보시다시피 오버 헤드는 일정하지만 0은 아닙니다.


3
미묘한 추가로, C (또는 이상적인 Turing-complete C)에서는 문자열 리터럴의 일부 문자에 따옴표가 필요하기 때문에 O (1) 공간 오버 헤드가있는 임의의 문자열을 인쇄 할 수 없습니다.
Gilles 'SO- 악의를 멈춰라'
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.