테스트에서 버그가 없음을 확인할 수 있습니까?


18

n(n+1)차수 의 다항식을 고유하게 결정하려면 점이 필요합니다 . 예를 들어 평면의 두 점이 정확히 하나의 선을 결정합니다.n

고정 언어로 를 계산하는 프로그램의 길이를 고려할 때 계산 가능한 함수 을 고유하게 결정하려면 몇 개의 포인트가 필요 합니까? (즉, Kolmogorov의 복잡성 에 대한 경계 ).f ff:NNff

아이디어는 최소한 이론적으로는 충분한 테스트를 통해 프로그램의 정확성을 입증 할 수 있다는 것입니다.

를 계산 하는 길이 의 프로그램 가있는 경우 , 소스 길이가 최대 계산할 수있는 함수의 수에는 한계가 있습니다 .L f LPLfL

그러므로 다음과 같은 것을 증명할 필요가있다.

  • Lf 소스 길이 로 계산 가능L
  • LP 는 바이트 이하로 계산 가능한 다른 함수를 계산하지 않습니다 (테스트)L

이 아이디어는 아마도 실질적인 결과는 없을 것입니다.


4
함수에 대한 설명이 2 진으로 제공되고 최대 의 설명 길이가 합니다. 그러나 이제 문제는 다항식과 달리 두 개의 고유 한 계산 함수가 무한한 수의 입력에서 동일한 값을 쉽게 취할 수 있다는 것입니다. 따라서 당신의 문제는 저에게 불가능 해 보입니다. L2L+11L
Bruno

나는 당신의 생각을 이해합니다. 그러나 설명 길이 <= L의 두 가지 별개의 계산 가능한 함수는 어떤 시점에서 (어떤 n0에 대해) 달라야합니다. L이 주어지면 n0의 값을 찾을 수 있습니까?
pbaren

4
그런 점이 있으면 더브 테일링을 사용하여 모든 값에 대한 함수를 계산하면되지만 그 점을 알 수 없다면 절대 결정할 수 없으며 프로그램 크기의 길이 상한을 갖는 것이 아무것도 변하지 않습니다.
Kaveh

7
실제로 @Kaveh는 자신의 주장에 따라 의 상한 은 계산할 수있는 것이 아니라 차이점 이 무엇 인지 알려줍니다 . 만약 K ( F ) LF gK ( X ) 2 L + C C는 하면 (@Kaveh)에 설명 된 알고리즘의 길이와 X 되는 제 문자열 Fg는 다르다. 특히 xK(f)K(f)LfgK(x)2L+ccxfgx 의 Busy-beaver-like 함수에 의해 제한됩니다 . 그러나 K ( x ) 2 L + c 또는 계산 BB 와 같은 모든 x를 찾는 것은 여전히 ​​계산할 수 없습니다. @pbaren : 한계가 있지만 지수보다 훨씬 뛰어나며 계산할 수 없습니다. 2L+cxK(x)2L+c
Joshua Grochow

6
@Kaveh : "Busy-beaver-like"함수의 의미는 다음과 같습니다. 을 Kolmogorov의 복잡성 (범용 기계 수정)이 최대 n 인 가장 긴 문자열의 길이로 둡니다 . 그러한 문자열은 유한하게 많기 때문에 범용 기계의 선택에 따라 잘 정의됩니다. 이어서 B B ' ( 2 L + C는 ) 인 상한 대부분의 콜 모고 로프 복잡도 두 (총 계산 가능) 함수 경우 L은 길이 모든 점에 닫 동의 B에서 B ' ( 2 L + C )BB(n)nBB(2L+c)LBB(2L+c)그러면 그들은 같습니다.
Joshua Grochow

답변:


9

(이것은 주석으로 의도되었지만 오래 걸렸습니다.) 매우 흥미로운 질문입니다. Kolmogorov 외에 다른 복잡성 측정 방법에 대해 기꺼이 생각하면 학습 이론에 만족할만한 몇 가지 답변이 있습니다. 나는 지역의 전문가들을 위해 그것을 떠난다.

예를 들어, 내가 실수하지 않으면, "학습 가능한 이론"에서 Valiant는 k-CNF 공식의 크기에 대한 다항식 수의 "긍정적 인 점"이 주어지면 부울 함수를 재구성 할 수 있음을 증명했습니다 (고정 k에 대해 , 그리고 나는 "양의 포인트"라는 형식을 의미합니다 ).(x1,,xn,1)

Knuth의 TAOCP 7.2.1.6에서는 놀라운 부울 함수 (크리스마스 트리 패턴 사용)를 사용하여 단일 부울 함수 (즉, 각 변수의 비 감소)를 재구성하려면 정확히 포인트.(n+1n/2+1)


7

Deigo의 답변을 계속 따르기 위해 학습 이론의 표준 샘플 복잡도 범위는 "대략적으로 올바른"프로그램을 찾는 데 만족한다면 매우 많은 포인트를 전혀 시도 할 필요가 없다는 것을 알려줍니다. 프로그램을 2 진법으로 인코딩 하여 길이 d의 프로그램 만 있다고 가정 해 봅시다 . 입력 예제 대해 약간의 분포가 있다고 가정 합니다. 아마도 당신의 목표는 당신이 거의 옳다고 확신하는 프로그램을 찾는 것입니다 (예 : Valiants PAC 학습 모델에서와 같이 "아마 대략"). 즉, 적은 수의 샘플 를 와 함께 사용 하고 적어도 확률로 알고리즘을 실행하려고합니다. D x ~ D f ( x ) ( 1 δ ) P f ( 1 ϵ ) D2dDxDf(x)(1δ) 에서 가져온 입력의 적어도 부분에 대해 와 일치하는 일부 프로그램 를 출력 합니다 . Pf(1ϵ)D

우리는 단순히 예제 를 그리고 모든 예제에서 와 일치하는 길이 의 프로그램 를 출력 할 것이다. ( 는 Kolmogorov 복잡도를 최대 라고 가정하기 때문에 존재한다는 것이 보장됩니다 ) ...x ~ D P d f f dmxDPdffd

예제 의 보다 더 많은 부분에서 에 동의하지 않는 특정 프로그램 가 선택한 예제 와 일치 할 확률은 얼마입니까? 최대 입니다. 이 확률을 최대 하여 모든 프로그램에 대해 결합 된 결합을 취하고 적어도 확률로 "나쁜"프로그램이 일관성이 없다고 말합니다. 우리가 그린 예제와 함께. 해결하면 예제 만으로도 충분하다는 것을 알 수 있습니다 . (즉, Kolmogorov 복잡성에서 선형 적으로 만 많음f ϵ m ( 1 ϵ ) m δ / 2 d 2 d 1 δ m 1Pfϵm(1ϵ)mδ/2d2d1δf

m1ϵ(d+log1/δ)
f...)

BTW, 이와 같은 주장은 "Occam 's Razor"를 정당화하는 데 사용될 수 있습니다.이를 설명하는 모든 이론 중에서 고정 된 수의 관측이 주어지면 과적 합의 가능성이 가장 적기 때문에 Kolmogorov 복잡도가 가장 낮은 것을 선택해야합니다.

물론 이런 방식으로 단일 고정 프로그램 만 확인하려면 예제 만 있으면됩니다 .O(log(1/δ)/ϵ)


3

간단한 대답은 다음과 같습니다., 다음의 값을 알 필요가 전혀를 를 유일하게 결정하는 포인트 . 따라서 프로그램 의 길이 이 매우 짧다는 것을 알지 않는 한 스케치 방식은 전혀 도움이되지 않습니다 .비트.f | N | f L lg | N |Llg|N|f|N|fLlg|N|

F={fi:iN}fifi(x)=1i=xfi(x)=0ixfilg|N|iO(1)

fiififjijf|N|fi|N|1


0

프로그램을 임의로 길게 만들 수 있습니다. 따라서 모든 프로그램에서 해당 언어가이 프로그램의 언어와 같은지 여부를 결정할 수 있습니다. 라이스 정리로는 그렇게 할 수 없습니다.


1
여러 인스턴스에서 프로그램을 실행하여 프로그램을 검사한다는 아이디어가 일반적으로 작동하지 않는다는 올바른 지적이 있습니다.
이토 쓰요시
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.