2 ^ sqrt (n)의 시간 복잡도


11

알고리즘 질문을 해결 중이며 분석은 O (2 ^ sqrt (n))에서 실행된다는 것입니다. 얼마나 큽니까? O (2 ^ n)와 동일합니까? 여전히 비 다항식 시간입니까?


3
질문에 투표를 한 이유를 설명하십시오. 감사!
Gaara

4
솔직히, 나는 사람들이 매우 사소한 질문으로 이것을 착각했다고 생각하지만, 어떻게 든 그것을 증명하는 방법이 나에게 명백하지는 않으므로 답을 쓰고 그것이 사람들의 마음을 바꾸는 지 알아볼 것입니다.
Ixrec


1
큰! Subexponential time : "일부 알고리즘의 실행 시간은 다항식보다 빠를 수 있지만 여전히 지수보다 상당히 작습니다." 이것은 확실히 내 질문에 대답하고 Big O 분석에 대한 지식을 넓 힙니다. 감사합니다
Gaara

1
특히 많은 수의 경우 O (2 ^ n)보다 작습니다. 10,000 요소를 모은 예를 들어 보자. 2 ^ 10000은 약 3000 자리 숫자로, O (2 ^ n) 연산을 수행하는 데 걸리는 횟수입니다. O (2 ^ sqrt (n))을 사용하면 30 자리 숫자로 줄어 듭니다. sqrt 솔루션을 선호하는 많은 수의 경우 (300000 자릿수의 숫자) * CPU 사이클 대 (300 자릿수의 숫자) * CPU 사이클의 차이가 매우 큽니다.
Andy

답변:


16

이것은 흥미로운 질문입니다. 다행히도 일단 해결 방법을 알고 나면 특별히 어렵지 않습니다.

함수의 F : NR +g : NR + , 우리가 FO ( g )의 경우에만, LIM SUP N → ∞ F ( N ) / g ( N ) ∈ R을 .

함수 F : NR +는 상수의 존재 가장 다항식 성장을 경우에만, 보유 KN 되도록 FO ( NN 케이 ). 임의이지만 고정 된 kN에 대해 이것을 해결해 봅시다 .

lim sup n → ∞ 2 ( n 1/2 ) / n k =
lim n → ∞ 2 ( n 1/2 ) / n k =
lim n → ∞ e log (2) n 1/2 / e log ( n ) k =
lim n → ∞ e log (2) n 1/2 − log ( n ) k = ∞ ∉ R

첫 번째 평등은 노미 네이터와 분모가 모두 단조롭게 꾸준히 증가하고 있기 때문에 사실입니다. 두 번째 등식은 항등식 x y = e log ( x ) y를 사용 합니다. 최종 표현식의 지수가 위에 묶이지 않기 때문에 한계는 유한하지 않습니다. 공식적인 증거를 제공하지 않으면, n 1/2 가 log ( n )을 무증상으로 지배 하는 것으로 알려져 있습니다 . 따라서 문제의 함수가 다항식 성장을 초과합니다.

그러나 성장률은 지수보다 작습니다. 여기서 지수는 (이 목적으로) c > 0에 대해 O ( n ↦ 2 c n )로 정의 됩니다. 이는 훨씬 더 직설적입니다.

lim sup n → ∞ 2 c n / 2 ( n 1/2 ) = lim n → ∞ 2 c nn 1/2 = ∞ ∉ R

임의의 고정을 위해 C > 0 따라서, 함수의 복잡함 다항식, 지수 사이에 대체로 참이다.


6

얼마나 큽니까? 음, O (2 ^ sqrt (n))는 정확히 얼마나 큰지 :-(

그 의미를 이해하려면 알고리즘이 O (2 ^ sqrt (n))가 아니라 컴퓨터에서 실제로 2 ^ sqrt (n) 나노초가 걸린다고 상상해보십시오.

n = 100 : 2 ^ 10 = 1024 나노초. 전혀 시간이 없습니다. n = 1000 : 2 ^ 31.xxx = 20 억 나노초. 2 초, 눈에 띄 네요. n = 10,000 : 2 ^ 100 ≈ 10 ^ 30 나노초 = 10 ^ 21 초 = 30 조 년.

이것은 2 ^ n 나노초보다 훨씬 낫습니다. 여기서 n = 100은 30 조 년이 걸리지 만 여전히 해결할 수있는 문제의 크기는 상당히 제한적입니다. 컴퓨터가 일주일 안에 문제를 해결할 수 있다면 "해결 가능"문제를 고려하면 약 6 x 10 ^ 14 나노초, 즉 n = 2,400입니다. 한편, n = 400까지 밀리 초 단위로 해결할 수 있습니다.

(실제로, n = 10,000의 경우 O (2 ^ sqrt (n))와 O (2 ^ n) 모두 정확히 같은 시간이 걸립니다 : 너무 오래 기다립니다.)

다항식을 초과하지 않습니다. n ^ 1000 초가 걸리는 다른 알고리즘을 사용하십시오. n = 2의 경우 실제로는 해결할 수 없습니다.이 알고리즘은 n이 약 885 백만이 될 때까지 더 오래 걸립니다. 근데 누가 신경 쓰겠어요? 이 시점에서 두 알고리즘 모두 9,000 자리 숫자입니다.

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