모든 계산 가능한 함수


19

모든 계산 가능한 함수 들어 f 에서 최상의 해결 될 수있는 문제가 존재 Θ(f(n)) 시간이나 계산 가능 함수가 f 등을 그 해결 될 수있는 모든 문제 O(f(n)) 과 같은 수 o(f(n)) 시간 안에 해결되어야 합니까?

이 질문은 어제 내 머리에 터졌습니다. 나는 지금 그것에 대해 조금 생각하고 있지만 이해할 수는 없습니다. 나는 이것을 어떻게 구글에하는지 알지 못하므로 여기에서 묻는다. 내가 생각해 낸 것은 다음과 같습니다.

모든 계산 가능한 함수의 : 내 첫번째 생각은 대답은 '예'이었다 f 문제 "출력 f(n) 점"(또는과 캐릭터 생성 f(n) 점 또는 무엇이든)를 분명히 해결 될 수없는 o(f(n)) 시간. 따라서 O(f(n)) 시간에 해결할 수 있음을 보여 주면 됩니다. 문제 없습니다. 다음 의사 코드 만 사용하십시오.

x = f(n)
for i from 1 to x:
    output(".")

분명히 그 알고리즘은 명시된 문제를 해결합니다. 그리고 런타임은 분명히 Θ(f(n)) 이므로 문제가 해결되었습니다. 쉬웠어요? 아니요를 제외하고 첫 번째 라인의 비용을 고려해야하기 때문이 아닙니다. 상기 알고리즘의 런타임에만이다 Θ(f(n)) 계산에 필요한 시간이 있으면 f(n)O(f(n)) . 모든 기능 1에 해당되는 것은 아닙니다 .

따라서이 접근 방식은 어디에서나 나를 얻지 못했습니다. 나는 올바른 방향으로 나를 가리키는 사람이 이것을 올바르게 알아낼 수있어서 감사합니다.


예 기능에 대한 고려 p(n)={1if n is prime2otherwise . 분명히 O(p(n))=O(1) 이지만 O ( 1 ) 시간 에서 를 계산하는 알고리즘은 없습니다 .pO(1)


1
첫 번째 단락의 두 문장이 반드시 서로의 반대되는 주장이라고 생각하지 않습니다. 가 있으면 o ( f ( n ) 가 아닌 O ( f ( n ) ) 에서 해결할 수있는 문제가있는 경우 ) ) ,도에서 Θ ( F ( N ) ) 시간? fO(f(n))o(f(n))Θ(f(n))
Alex ten Brink

@Alex 그것은 그것을 고려하지 않은 좋은 지적입니다.
sepp2k

답변:


13

바이 갭 이론 (상기 제형을 사용하여 여기에 임의의 계산 가능한 무한한 기능 들어, '갭'검색) 약간 증가 (사실, 임의의 큰) 계산 가능 함수가 존재 F : NN 되도록을 D T I M E ( f ( n ) ) = D T I M E ( g ( f ( n ) )) .g:NNf:NNDTIME(f(n))=DTIME(g(f(n))

이 같은이 존재 함을 귀하의 질문에 대한 대답 (사실 무한히 많은,) : 모든 계산 가능한 기능에 대한 g 있도록 g = O ( N ) , 일부 증가하는 기능이 존재 F 의 모든 문제를 풀 수 있도록 O ( F ( N을 ) ) 시간도 실밥에 O ( g ( F ( N ) ) = O ( F ( N ) ) 의 시간. 참고 F를fgg=o(n)fO(f(n))O(g(f(n))=o(f(n))f 반드시 시간 구성 가능한 것은 아닙니다. 시간 구성 가능한 경우는 @RanG의 답변을 참조하십시오.

(즉, 필요 위키 백과 제형에서 ), 다음 g f는 , 귀하의 예제되고 f를 요구 할 수 ω ( N ) 당신이 주변에 다른 길을 갈 수 있도록 (- '문제를 풀 수있는 O ( g를 ( F ( N ) ) 있고 실밥의 O ( g ( N은 ) ) ') 흥미로운 부분이다.g(x)xgffω(n)O(g(f(n))O(g(n))

Wikipedia 기사는 가 증가하고 있으며 실제로 임의로 클 수 있음을 언급하지 않습니다 (예 : f ( n ) g ( n ) ). 갭 정리를 증명 기사 않습니다 언급이 증명하십시오 ( 여기 예를 들어,).ff(n)g(n)


O를 ( N ) ? 이 필요는 없습니다 g ( X를 ) X ? 당신의 진술은 여전히 ​​정확하지만 증거는 다른 방향으로갑니다. go(n)g(x)x
Ran G.

@RanG. 두 제제에 대한 증거 (I 용지의 배합을 사용) : 제공하는 업데이트
알렉스 열 직전

"g = o (n)과 같은 모든 계산 가능한 함수 g에 대해, O (f (n)) 시간에서 해결할 수있는 모든 문제가 O (g (f (n)) = o ( f (n)) time "해당 g에 대해 존재하는 모든 fs가 O (1)에있는 경우 O (g (f (n))은 여전히 ​​O (1)이므로 o (1)은 아닙니다.
sepp2k

@ sepp2k : 잘 잡았습니다. 이것은 실제로 공식화 된 문제입니다. 내 답변을 업데이트했습니다.
Alex ten Brink

12

모든 계산 가능한 함수 들어 에서 최상의 해결 될 수있는 문제가 존재 Θ ( F ( N ) ) 시간이나 계산 가능 함수가 F 등을 그 해결 될 수있는 모든 문제 O ( F ( N ) ) 과 같은 수 o ( f ( n ) ) 시간 안에 해결되어야 합니까?fΘ(f(n))fO(f(n))o(f(n))

경우 이다 시간 작도 함수는 다음 시간 계층 정리 가 필요로하는 문제가 있음을 말한다 O ( F ( N ) ) 시간, 시간으로 해결할 수없는 O ( F ( N )fO(f(n)). 구체적으로, DTIME(o(f(n)o(f(n)log(f(n)))

DTIME(o(f(n)log(f(n))))DTIME(f(n))

이는 의사 결정 문제 만 고려하고 출력을 생성하는 데 걸리는 시간을 고려하지 않습니다.


우리가 시간을 구성 할 수없는 기능을 고려한다면 내 질문에 대한 대답은 "아니오"라고 가정 할 수 있습니까? 또는 관련 : 함수 가 시간 구성이 불가능하여 단계 후에 정지하는 튜링 기계가없는 경우 단계 후에 정지하는 튜링 기계도 없다는 의미 입니까? 그로부터 내 질문에 대한 대답이 '아니오'라는 것은 사소하게 따를 것이기 때문입니다. f ( n ) Θ ( f ( n ) )ff(n)Θ(f(n))
sepp2k

때에 따라 다르지. 는 시간 구성 가능하지 않지만 시간 구성 가능한 다른 함수 의해 제한 될 수 있다고 가정하십시오 . 이며 시간 로 해결할 수 있지만 그보다 훨씬 적은 문제는 여전히 존재 합니다. g f = Θ ( g ) O ( f )fgf=Θ(g)O(f)
Ran G.

여러 테이프 TM를 사용하면 의 결과를 향상시킬 수 있습니다o(f(n)lgf(n))o(f(n))

3

더 깊은 통찰력을 얻기 위해 프레임 워크를 제공하려고 노력할 것입니다.

이 기본에 도달하면 모든 곳에서 예상치 못한 함정이 있습니다. 예를 들어, 문제를 "해결"하는 것이 무엇입니까? 컴퓨터 과학에서는 종종 "결정"변형 만 고려하는데, 여기서는 입력이 주어지고 True 또는 False를 출력하기 만하면됩니다. "기능"문제에 집중하고 있습니다.

O (f (n)) 표기법을 사용하여 문제를 해결하는 데 필요한 "작업"의 양을 캡처하려고하면 출력 형식과 계산을 명확하게 구분하기 때문에 함수 대신 (출력이 필요한 경우) 의사 결정을 사용하는 것이 좋습니다. .

나는 이것이 당신의 질문에 대답 할 것이라고 생각하지 않지만, 당신은 이것에 관심이있을 것입니다 : http://en.wikipedia.org/wiki/Time_hierarchy_theorem

또한 속도 정리 정리에 주의하십시오 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.