나는 Kolmogorov Complexity에 대한 Wikipedia의 항목을 읽었습니다 ( 이 질문 덕분에 ).
어떤 문자열의 Kolmogorov 복잡도는 문자열 자체의 길이보다 몇 바이트 이상 클 수 없다는 것을 알 수 있습니다.
문자열을 설명하기 위해 왜 문자열 자체보다 더 필요한 것이 있습니까?
나는 Kolmogorov Complexity에 대한 Wikipedia의 항목을 읽었습니다 ( 이 질문 덕분에 ).
어떤 문자열의 Kolmogorov 복잡도는 문자열 자체의 길이보다 몇 바이트 이상 클 수 없다는 것을 알 수 있습니다.
문자열을 설명하기 위해 왜 문자열 자체보다 더 필요한 것이 있습니까?
답변:
Kolmogorov 복잡성의 정확한 값은 문자열을 나타 내기 위해 선택한 언어에 따라 다릅니다. 이 언어는 튜링이 완전해야하므로 모든 문자열을 그대로 나타내는 것은 선택 사항이 아닙니다.
최대 길이 적어도 하나 개의 캐릭터가있는 경우 비둘기 집 원리에 의해, 표현 자체보다 짧은이, 기껏해야 길이가 적어도 하나의 문자열도있다 표현 자체보다 더 이상은. (표현은 압축 알고리즘입니다.)n
각 문자열의 표현이 최대 1 비트 이상인 설명 언어를 사용할 수 있습니다. 각 문자를 "인쇄 적으로"또는 "해석"으로 나타내는 비트로 시작하십시오. 모든 설명 언어가 그렇게 간단한 것은 아닙니다.
보다 공식적인 설명은 Wikipedia 기사의 불변성 정리 섹션 에 자세히 설명되어 있습니다. 있다 최적의 주어진 언어에 대해, 일정의이되도록 기술 언어, 최적의 언어 문자열에 대한 설명 (길이 무엇인지 상관없이) 가장에되도록 더 이상 다른 언어에 비해 비트. 직관적으로 다른 언어에 대한 통역사를 최적의 언어로 작성하십시오.C
여기에서 고려되는 문자열에 대한 설명은 일부 범용 Turing 기계에 대한 입력입니다. C 프로그램으로 생각할 수 있습니다. 문자열 hello world
자체는 C 프로그램을 형성하지 않지만 다음과 같이 C 프로그램을 구성합니다 int main(int argc, char *argv[]) { printf("hello world"); }
. 보시다시피 오버 헤드는 일정하지만 0은 아닙니다.