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


18

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

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

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

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

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

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

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


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

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

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

7
실제로 @Kaveh는 자신의 주장에 따라 의 상한 은 계산할 수있는 것이 아니라 차이점 이 무엇 인지 알려줍니다 . 만약 K ( F ) ≤ L 및 F ≠ g 후 K ( X ) ≤ 2 L + C C는 하면 (@Kaveh)에 설명 된 알고리즘의 길이와 X 되는 제 문자열 F 및 g는 다르다. 특히 xK(f)K(f)≤Lf≠gK(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+1⌊n/2⌋+1)


7

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

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

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

m≥1ϵ(d+log⁡1/δ)
f...)

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

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


3

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

F={fi:i∈N}fifi(x)=1i=xfi(x)=0i≠xfilg⁡|N|iO(1)

fiififjijf|N|fi|N|−1


0

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


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