자료구조 시간복잡도 예제

| 0

카운트 ++가 실행되는 총 횟수는 $0 + 1 + 2 + + + +(N-1) = frac{N * (N-1)}{2}$$입니다. 따라서 시간 복잡성은 $$O(N^2)$$입니다. 시간 복잡성은 입력 량의 함수로 처리하거나 실행하는 코드 또는 알고리즘 집합에 걸리는 시간의 정량화를 다루는 컴퓨터 과학의 개념입니다. 하위 지수 시간이라는 용어는 일부 알고리즘의 실행 시간이 모든 다항식보다 빠르게 증가할 수 있지만 지수보다 훨씬 작다는 것을 표현하는 데 사용됩니다. 이러한 의미에서 하위 지수 시간 알고리즘이 있는 문제는 지수 알고리즘만 있는 문제보다 다소 더 견딜 수 있습니다. “하위 지수”의 정확한 정의는 일반적으로 합의되지 않으며[17] 아래에 가장 널리 사용되는 두 가지를 나열합니다. 인덱스의 시간 복잡성계산Of는 이전 예제만큼 간단하지 않습니다. 이 함수는 재귀적입니다. 참고: 확장이 잘 되지 않으므로(가능한 경우) 지수 실행 시간이 있는 함수는 피해야 합니다.

출력을 처리하는 데 걸리는 시간은 모든 추가 입력 크기로 두 배가 됩니다. 그러나 지수 실행 시간은 아직 최악이 아니다; 더 느리게 가는 다른 것들이 있습니다. 다음 섹션에서 한 가지 예를 더 살펴보겠습니다. 지수(기본 2) 실행 시간은 입력이 증가할수록 알고리즘에 의해 수행되는 계산이 두 배가 된다는 것을 의미합니다. O(1)는 입력 크기에 관계없이 계산하는 데 동일한 시간이 걸리는 알고리즘을 설명합니다. 다시 말하지만, 사전에 10 개 또는 1 백만 단어가 있더라도 단어를 찾기 위해 한 번 줄 4를 실행한다고 확신 할 수 있습니다. 그러나 사전을 해시 맵이 아닌 배열로 저장하기로 결정했다면 다른 이야기가 될 것입니다. 다음 섹션에서는 배열에서 항목을 찾는 실행 시간을 살펴보겠습니다. 튜링 머신에서 산술 연산을 수행하기 에 적합한 알고리즘으로 산술 연산을 대체하여 이러한 두 속성을 가진 모든 알고리즘을 다항식 시간 알고리즘으로 변환할 수 있습니다. 위의 요구 사항 중 두 번째가 충족되지 않으면 더 이상 사실이 아닙니다. 정수 2 n {표시 스타일 2^{n}}(튜링 기계 모델에서 n에 비례하는 공간을 차지하는)를 감안할 때 반복제곱을 사용하여 n 곱셈으로 2 n {표시 스타일 2^{{2^{n}}를 계산할 수 있습니다. 그러나 2 n {표시 스타일 2^{2^{n}}를 나타내는 데 사용되는 공간은 2 n {displaystyle 2^{n}}에 비례하므로 입력을 나타내는 데 사용되는 공간에서 다항식대신 지수가 됩니다.

따라서 튜링 컴퓨터에서 다항식 시간에 이 계산을 수행할 수는 없지만 다항식으로 많은 산술 연산을 통해 계산할 수 있습니다. 우리는 우리가 확인하는 데 도움이 카운터 변수를 사용하고 있습니다. hasduplicates 함수에는 두 개의 루프가 있습니다. 4 단어의 입력이 있으면 내부 블록을 16 번 실행합니다. 9가 있으면 카운터를 81번 등으로 수행합니다. O(log n) 알고리즘은 입력 크기에 대한 작업 수의 비율이 감소하고 n이 증가하면 0이 되는 경향이 있기 때문에 매우 효율적인 것으로 간주됩니다. 입력의 모든 요소에 액세스해야 하는 알고리즘은 크기 n의 입력을 읽는 데 걸리는 시간이 n의 순서이기 때문에 로그 시간을 사용할 수 없습니다. 이것은 숫자 세트를 반으로 나누고 특정 필드를 검색하는 알고리즘입니다 (나중에 자세히 연구 할 것입니다). 이제 이 알고리즘에는 로그 시간 복잡성이 있습니다. 알고리즘의 실행 시간은 N을 2로 나눌 수 있는 횟수에 비례합니다(N은 여기서 높음입니다). 알고리즘이 각 반복과 함께 작업 영역을 반으로 나누기 때문입니다. 보시다시피 정렬 및 병합두 함수가 있습니다.

Merge는 컬렉션 a와 b를 통해 한 번 실행되는 보조 함수이므로 실행 시간은 O(n)입니다. 마스터 메서드를 적용하여 실행 시간을 찾겠습니다. 예를 들어 함수가 10개의 요소와 1백만 개의 항목을 처리하는 데 동일한 시간이 걸리는 경우 일정한 증가율 또는 O(1)가 있다고 말합니다. 몇 가지 경우를 보자. 이 문제에 대한 한 가지 해결책은 n 번 동안 루프를 실행하고 숫자 n으로 시작하여 매번 n을 추가하는 것입니다.

Follow admin:

Latest posts from