시간복잡도 계산 예제

예를 들어 선택 정렬 및 삽입 정렬에는 O(n^2) 시간 복잡성이 있습니다. 알고리즘은 입력 데이터의 각 값에 대해 선형 시간 작업을 수행해야 할 때 이차 시간 복잡성을 가지며, 예를 들어 알고리즘은 입력 데이터(n)에 의존하지 않을 때 일정한 시간을 가지는 것으로 한다. 입력 데이터의 크기에 관계없이 실행 시간은 항상 동일합니다. 예를 들어 지수 시간 알고리즘의 또 다른 예는 피보나치 숫자의 재귀 계산입니다. 알고리즘의 실행 시간은 N을 2로 나눌 수 있는 횟수에 비례합니다. 알고리즘이 각 반복과 함께 작업 영역을 반으로 나누기 때문입니다. 따라서 위의 의사 코드의 복잡성은 T(n) = 2 + 1 + 최대(1, 1+2) = 6입니다. 따라서, 그 큰 오는 여전히 상수 T(n) = O(1)이다. 예를 들어 다음과 같은 사양을 가지고 있는 모델 머신을 살펴보겠습니다: –Single Processor -32 비트 –순차실행 -1 단위 시간 산술 및 논리 연산 -1 단위 시간 할당 및 반환 문에 대 한 할당 및 반환 문 예를 들어 선택 정렬 및 삽입 정렬에는 O(n2) 시간 복잡성이 있습니다. 4) 루프 변수가 분할되면 O(Logn) 루프의 시간 복잡성이 O(Logn)로 간주되어 일정한 양을 곱합니다. 위의 두 가지 간단한 알고리즘에서는 단일 문제가 어떻게 많은 솔루션을 가질 수 있는지 를 보았습니다.

첫 번째 솔루션에는 n번 번째로 실행되는 루프가 필요했지만 두 번째 솔루션은 수학 연산자 *를 사용하여 결과를 한 줄로 반환했습니다. 그래서 어느 것이 더 나은 접근 방식이며, 물론 두 번째 방법입니다. 이 게시물에서는 시간 복잡성, Big-O 표기및 알고리즘을 개발할 때 이에 대해 염려해야 하는 이유에 대해 좀 더 이해할 것입니다. 입력 데이터 크기와 는 별개로 목록에서 첫 번째 값만 받기 때문에 항상 동일한 실행 시간이 있습니다. 위의 코드에서 “안녕하세요 세계!!!”는 N 시간을 인쇄합니다. 따라서 위의 코드의 시간 복잡성은 O(N)입니다. 선형 실행 시간 알고리즘은 매우 일반적입니다. 선형 런타임은 프로그램이 입력의 모든 요소를 방문한다는 것을 의미합니다.

이미 말했듯이 일반적으로 Big-O 표기법의 시간 복잡성을 설명 합니다. 표기법의 공식적인 정의에 관련된 수학이 많이 있지만 비공식적으로 Big-O 표기법의 경우 최악의 경우 알고리즘의 대략적인 실행 시간을 제공한다고 가정할 수 있습니다. Big-O 표기법의 경우 입력 데이터(n)의 증가하는 크기에 따라 알고리즘의 효율성을 설명합니다. 예를 들어 입력이 문자열인 경우 n은 문자열의 길이가 됩니다. 목록인 경우 n은 목록의 길이 등이 됩니다. 배열을 정렬하는 가장 좋은 방법은 무엇입니까? 이전에는 O(n2)의 시간 복잡성이 있는 버블 정렬을 사용하는 솔루션을 제안했습니다. 우리는 더 잘 할 수 있습니까? “20 질문”게임을 기억 – 작업은 간격으로 숨겨진 숫자의 값을 추측하는 것입니다. 당신이 추측을 할 때마다, 당신은 당신의 추측이 너무 높거나 너무 낮은 여부를 들었다. 20 질문 게임은 간격 크기를 절반으로 추측 번호를 사용하는 전략을 의미한다. 이것은 이진 검색으로 알려진 일반적인 문제 해결 방법의 예입니다 알고리즘의 시간 복잡성은 가장 일반적으로 큰 O 표기법을 사용하여 표현된다. 시간 복잡성을 나타내는 점근 표기어입니다. 우리는 다음 튜토리얼에서 자세히 그것에 대해 공부할 것입니다.

n이 10 또는 10,001인지는 중요하지 않으며 2 줄을 한 번 실행합니다. 3) 마지막으로, 2단계의 재귀 런타임과 1단계의 런타임 f(n)를 비교합니다. 지수(기본 2) 실행 시간은 입력이 증가함에 따라 알고리즘에 의해 수행되는 계산이 두 배가 된다는 것을 의미합니다. 재귀 함수가 무엇인지 모르는 경우 재귀 함수를 특정 조건에서 자신을 호출하는 함수로 설명할 수 있습니다. 아시다시차면 재귀 함수의 시간 복잡성은 함수가 호출되는 횟수와 단일 함수 호출의 시간 복잡성에 따라 달라지므로 정의하기가 약간 어렵습니다.

Posted in Uncategorised