Kolmogorov 복잡성의 효율적으로 계산 가능한 변형


28

Kolmogorov 접두사 복잡성 (즉, K(x) 를 출력하는 최소 자체 구분 프로그램의 크기입니다 x)에는 몇 가지 멋진 기능이 있습니다.

  1. 그것은 패턴이있는 문자열이나 구조가없는 문자열보다 복잡성이 낮은 문자열을 제공하는 직감에 해당합니다.
  2. 이를 통해 일부 오라클 O 에 대해 조건부 복잡성 K(x|y) 또는 더 나은 를 정의 할 수 있습니다 .K(x|O)O
  3. 하위 첨가제 K(x,y)K(x)+K(y) 입니다.

그러나 끔찍한 단점을 가지고 리턴 K(x) 주어진 x 결정 불가능하다.

콜 모고 로프 복잡도의 변형이있는 경우 나 궁금 K(x) 연산의 제한된 모델을 사용하여가 (어느 자원이 제한된 TM을 TM이보다 약한 언어를 사용하거나 사용하여) 그 보존 기능 (1), (2) (피쳐 ( 3) 보너스이지만 필수는 아닙니다) 효율적으로 계산할 수 있습니까?

이 질문에 대한 동기는 다양한 장난감 모델의 진화에 대한 시뮬레이션 연구에 사용하기위한 것입니다. 따라서 수치 연산에서 Kolmogorov 복잡성에 대한 '거친 근사'로 사용 된 답이 선호됩니다. 그러나, 목표는 완전히 실험 갈 비교적 간단한 / 청정 기술 언어 / 모델의-계산을위한 그렇게하지됩니다 K 이 얼마나 크게에 대한 몇 가지 합리적인 정리 입증 할 수있을 정도로 바람직하다 에서 다릅니다 와 어떤 종류의 줄. KKK

질문 관련

설명 언어가 약한 Kolmogorov의 복잡성

결정 불가능한 문제에 대한 근사 알고리즘에 대한 합리적인 개념이 있습니까?

답변:


10

Gzip. Cilibrasi와 Vitanyi는 Kozipgorov 복잡성의 근사치로 gzip을 사용하여 클러스터링을 수행하는 훌륭한 기사를 가지고 있습니다. 압축에 의한 클러스터링


1
조건부 복잡성을 어떻게 정의합니까?
Artem Kaznatcheev

1
A와 B를 두 개의 문서로 만들고 AB를 두 개의 문서로 만듭니다. 그들은 SIZE (gzip (A) + gzip (B)) 대 SIZE (gzip (AB))의 비율을 봅니다.
Chad Brewbaker

1
Kolmogorov의 복잡성을 근사하기 위해 gzip (및 유사)을 사용하면 단점이 있다는 것을 알고 있어야합니다 ( bactra.org/notebooks/cep-gzip.html) . 그것은 실제 데이터 세트를 클러스터링하는 데 유용하지 않다고 말하지는 않지만 실제 데이터 세트를위한 유틸리티는 이러한 데이터 세트가 의사 난수 생성기의 출력과 어떻게 다른지에 대해 알려줍니다. ...
Joshua Grochow

3

내 질문에 대해 더 많이 생각하고 가능한 해결책에 도달했습니다. 그것은 길이가 문자열에만 정의되며 (이에 대해 더 논의 할지라도) 보편적 인 Turing 기계에 대해서는 이야기하지 않고 대신 이전 질문에 따르고 대체 계산 모델을 사용합니다.n=2m


기본적으로 문자열 | x | 함수 x = 2 m f x : { 0 , 1 } m{ 0 , 1 } . 그런 다음 복잡도 측정 값 K ' ( x )f x를 나타내는 고유 한 감소 된 이진 결정 다이어그램 (ROBDD; 표준 순서가 고정 된)의 크기 (가장자리 수)입니다 . 조건 [1]을 만족시킵니다. 또한, 사람은 시간 ROBDDs 다항식으로 계산 될 수 2 mx|x|=2mfx:{0,1}m{0,1}K(x)fx2m효과적인 측정 방법이 있습니다.

조건 [2]를 만족 시키려면 노드에 특수 유형을 허용하여 표준 BDD를 수정해야합니다. 일반적으로 노드는 인덱스 , 우리는 특별한 오라클 노드를 포함 할 것입니다. 들어 K ( X | Y ) 어디에 | y | = 2 m 다음과 같이 우리는 BDD 계열의 특수 노드 수 :i{1,...,m}K(x|y)|y|=2m

우리는 입력에 BDD 실행하는 경우 ( | | = m ) 다음으로 표시된 정상 노드 나는 단순히 레이블 가장자리 아래 우리를 보내 . 오라클 노드 대신 라벨 에지 아래 우릴 보낼 f를 Y ( ) . 따라서, K ' ( X | X ) = 2 및 높은 확률로 K ' ( X | Y ) K ( X ) A에 대한 Y는 임의로 고른.a|a|=miaify(a)K(x|x)=2K(x|y)K(x)y

[참고 : 조건부 복잡도를 여전히 효율적으로 계산할 수 있는지 확실하지 않습니다 :(]

설득력있게, 우리는 대한 OBDD를 빌드 한 이후에 하위 -additivity도 가지고 있습니다 . Y는 우리는 첫 번째 비트과에 쿼리를 가질 수 0 의 ROBDD로 이동 X 와에 1 에 대한 ROBDD에 y를 . 따라서 우리는 K ' ( x . y ) K ' ( x ) + K ' ( y )를 갖습니다 .x.y0x1yK(x.y)K(x)+K(y)


하위 -additivity의 잠재적 비용으로, 우리는 단지 2의 거듭 제곱을 취하고 그들의 복잡성을 더함으로써 임의의 길이 x 에 대해 를 정의 할 수있다 . 예를 들어 | x | = 2 m| y | = 2 LM > L 우리가 정의 할 수 K를 ' ( X . Y ) = K ' ( X ) + K ' ( Y ) .K(x)x|x|=2m|y|=2lm>lK(x.y)=K(x)+K(y)

불행히도 내 접근 방식에는 몇 가지 제한 사항이 있습니다. 최소한의 의사 결정 트리 또는 BDD 만 고려한다면 OBDD를 넘어 설 수는 없습니다 . 이 답변 에서 다루어 질 난치 문제에 얽매일 입니다. OBDD의 가변 순서에 대해서도 다루기 힘든 결과 가있는 것 같습니다 . 따라서 OBDD는 이와 유사하지 않은 표준-콜 모고 로프-복잡성 접근법의 한계 인 것 같습니다.


2

나는 전문가는 아니지만 문자열에 대한 실제 복잡성 측정 이 필요한 경우 Titchener T- 복잡성 측정을 살펴볼 수 있습니다 .

빠른 소개는 Titchener 웹 사이트 를 참조하십시오 . 그의 논문은 pdf 형식으로 다운로드 할 수 있습니다 .

초록 -유한 문자열에 대한 새로운 문자열 복잡성 측정은 특정 재귀 계층 문자열 생성 프로세스를 기반으로합니다 . 최대한의 범위에서 우리는 복잡성과 전체 정보 내용 사이의 관계를 추론합니다. .. 전체 기사 ...

실제 구현에 대한 논문도 발견했습니다 (예 : " Fast T-decomposition algorithm "참조).


2

기본적으로 거의 모든 기계 학습 또는 압축 방법은 Kolmogorov 복잡성에 대한 근사치입니다.

  • p(x)logp(x)
  • nK(x)n+sCsCx

따라서 컴프레서 또는 확률 분포가있는 패턴을 찾고 데이터를 더 잘 압축할수록 K (x)의 상한이 더 좋습니다. 압축기 자체의 크기를 압축 데이터의 크기에 추가하여 추정치를 얻으십시오.

K(x)

K(x)K

또한 시간 제한을 사용하여 모델 클래스를 정의하여 Suresh의 답변으로 이어질 수 있습니다. 기본적으로 데이터 소스에 다항식 시간 복잡성이 있다고 가정하고 모든 다항식 튜링 머신에서 압축을 시도하면 Kolmogorov 복잡도를 정확하게 추정 한 것입니다. 이것은 여전히 ​​실용적이지는 않지만 더 낮은 시간 한계에 대해 전체 베이지안 혼합을 근사치로 계산할 수 있습니다.

자세한 기술 정보는 이 백서를 참조하십시오 . 면책 조항 : 나는 저자 중 하나입니다.

K(x)K(x)


-1

당신은 자원 경계 Kolmogorov 복잡성을 찾고 있습니다. 이 용지로 시작하여 분기 할 수 있습니다 .


2
논문에 대한 링크 덕분에, 나는 문제에 대한 자원의 복잡성을 언급하지만 실제로 효율적으로 계산 가능한 조치에 관심이 있습니다. 이 모델의 '임의의 줄'은 복잡성이 높은 세트에 해당하는 것으로 논문이 보여줍니다. 이것은 이러한 모델에서 문자열의 복잡성을 결정하는 것이 효율적으로 계산할 수 없다는 것을 암시합니다.
Artem Kaznatcheev
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.