이 기능이 왜 계산 가능한가?


10

내 교과서는 말합니다 : "우리는 함수를 정의합니다 f:NN 다음과 같이 : f(1)=2f(i+1)=2f(i)1.2. 주어진 참고n우리는 쉽게 찾을 수 있습니다 O(n1.5) 숫자를 시간 i 그런 n 사이에 끼어있다 f(i)f(i+1)"

우리가 실제로 쉽게 찾을 수 있다고 스스로를 설득하는 방법 iO(n1.5)시각? 같이f 재귀 적으로 정의됩니다. 우리는 계산해야한다고 생각합니다. f(1),f(2),f(3)f(j) ...까지 f(j)n. 이러한 계산에 걸리는 시간을 알기 위해서는 적절한 상한을 찾아야한다고 생각합니다.i 에 의존 n 함수 실행 시간의 상한을 찾아야합니다 x2x1.2. 결국, 우리는 인용 된 제안을 희망적으로 보여줄 수 있습니다. 불행히도, 나는 하나도 다른 것도 보지 못합니다.

언급을 잊었습니다. 우리는 비 결정적 맥락에 있습니다. 그래서f 에 계산할 수 있다고 주장 O(n1.5) 비 결정적 튜링 머신에 의해.


상당수의 사람들이 이미이 질문을 읽었으므로, 그들 중 일부는 유용하고 흥미로운 것을 발견했지만 아직까지 아무도 대답하지 않았습니다. 비 결정적 시간 계층 정리. 증명 (클레임 포함)은 Arora와 Barak 에서 찾아 볼 수 있지만, 웹에서도 같은 증명을 제공하는 다른 자료를 많이 발견했습니다. 이러한 각각의 주장을 쉽게 또는 사소한 주장하고 찾는 방법에 대해 자세히 설명하지 않습니다iO(n1.5)시각. 따라서 Arora와 Barak에서 방금 복사 한 이러한 모든 리소스 또는 주장은 실제로 그렇게 어렵지 않습니다.


1
이것은 Arora & Barak의 비 결정적 시간 계층 정리 증명처럼 보입니까? 그렇다면 비결정론이 여기에서 중요한 역할을한다고 가정합니다.
G. Bach

네가 옳아. 미안하지만, 비결정론 적 맥락을 언급 했어야합니다. 비결정론이 O (n ^ 1.5) 경계를 표시하는 데 어떻게 도움이되는지 자세히 설명해 주시겠습니까?
user1494080

답변:


4

에 의해 표시 |x| 숫자의 길이 xlog2x+1 (에 대한 x>0). 계산2x 시간이 필요하다 O(x) RAM 모델에서 f(i+1) ...에서 f(i) 시간이 걸리다 O(f(i)1.2)=O(|f(i+1)|). 이후f(i) 전체적으로 계산하는 데 걸리는 시간보다 기하학적으로 빠르게 성장하고 있습니다. f(i+1) 이다 O(|f(i+1)|). 당신이 지적한대로, 당신은 때까지 그렇게해야f(i+1)n, 의미하는 것은 f(i)<n. 따라서 총 실행 시간은O(|f(i+1)|)=O(f(i)1.2)=O(n1.2).

단일 테이프가있는 튜링 머신 모델에서 2x 시간이 걸리다 O(xlogx)총 작동 시간은 O(n1.2logn)=O(n1.5). 컴퓨팅 알고리즘2x 대체 [x] 으로 1[[x]] (여기 [x] 이진 표현입니다 x, [[x]] 다른 숫자를 사용하는 이진 표현 0,1)을 반복적으로 실행합니다. [[x]]0[[x1]]시간이 걸리는 O(|x|)=O(logx).


고마워요! 한가지 더 질문 : 우리는 | f (i) | f (i)가 기하학적보다 빠르게 성장합니까?
user1494080

이후 |f(i+1)|=f(i)1.2똑같지 만 네 말이 맞아. 우리가 정말로 원하는 것은ji|f(j)|=O(|f(i)|).
Yuval Filmus
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.