2011-11-21 2 views

답변

0

Big-O가 상한임을 기억하십시오. 작은 입력 크기에서 O (n^2) 알고리즘이 O (log n)보다 빠르게 실행될 수있는 상수 때문일 가능성이 큽니다. 대부분의 경우 n^2도 더 빠르게 실행될 수 있고 그 알고리즘은 많은 입력을해야만 많은 작업을 수행해야하기 때문에 n^2에서 실행될 수 있습니다.

+0

다양한 알고리즘의 세부 사항을 제외한 어떠한 입력 여기서 'N * n'은'n' 로그보다도 작은 존재하지 않는다. 그래프를 참조하십시오. – ubiquibacon

+0

Big-O는 100000000 * logn + 큰 정수와 기본 n^2 알고리즘이 될 수 있으므로 가능한 모든 상수를 제거 할 수 있기 때문에 가능합니다. N^2 또한 상한값이다. 평균적으로 알고리즘은 loglogn 시간이나 그런 식으로 수행 할 수있다. –

+0

알고리즘의 특성 (언급 한 제약 조건)이 아닌 입력 크기에 초점을 맞추고 있습니다. 실행 시간이 정확히'n * n '이고 실행 시간이 정확히'log n'인 두 개의 알고리즘이 있다면'n * n '이 더 빠를 수있는'n' 값은 없습니다 'log n'보다. – ubiquibacon

6

큰 오 표기법은 상한을 제공합니다. 아니 더.

알고리즘 A가 O(n^2) 인 경우 정확히 n^2 단계가 필요할 수 있습니다.

알고리즘 B가 O(log n) 인 경우 정확히 10000 * log n 단계가 필요할 수 있습니다.

알고리즘 A는 작은 n에 대해 알고리즘 B보다 훨씬 빠릅니다.

0

기술적으로는 O(n*n) 알고리즘이 O(log n) 알고리즘보다 빠를 가능성이 높기 때문에 기술적 인 측면에서 필자의 이전 대답을 철회합니다. 자세한 내용은 그의 대답에 예수님과의 토론을보십시오. 아래 그래프는 시간 복잡도가 인 알고리즘이 정확히log n 인 알고리즘이 시간 복잡도가 인 알고리즘보다 정확히n*n 인 알고리즘보다 항상 빠릅니다.

enter image description here

+0

그들이 log2n을 의미하는지 확실하지 않습니다. log10n이 아닌가요? –

+2

알고리즘의 시간 복잡도에 대해 논의 할 때 우리는 기수 10이 아니라 기수 2를 항상 참조합니다. – ubiquibacon

+0

Big-O는 모든 상수와 요인을 앞의 용어에서 제거하므로 완전히 가능합니다. –

관련 문제