점근 분석
이 용어는 알고리즘이 작동하는 데이터 ( 입력 )가 일반인의 용어로 "크게 만들면 결론을 변경하지 않을만큼 충분히 크다" 는 가정하에 알고리즘 성능 분석을 나타냅니다 . 입력의 정확한 크기를 지정할 필요가 없지만, 데이터 자체가 설정 (우리는 단지이 상한 필요) 가 지정되어야합니다.
지금까지 분석 방법 에 대해서만 이야기했습니다 . 우리 가 분석하고 있는 양 (시간 복잡성? 공간 복잡성?)을 정확히 지정 하지 않았고, 우리가 관심 있는 메트릭 (최악의 경우? 최상의 경우? 평균?) 도 지정하지 않았습니다 .
실제로 점근 분석이라는 용어는 일반적으로 알고리즘의 상한 시간 복잡도 , 즉 big-Oh 표기법으로 표시되는 총 실행 시간으로 측정 된 최악의 경우 성능을 나타냅니다 (예 : 정렬 알고리즘은 O(nlogn)
).
상각 분석
이 용어는 최악의 시나리오 를 대상으로하는 특정 작업 시퀀스를 기반으로하는 알고리즘 성능 분석을 나타냅니다. 즉, 상각 된 분석은 메트릭이 최악의 성능임을 의미합니다 (아직 측정중인 수량을 말하지는 않지만 ). 이 분석을 수행하려면 입력 크기 를 지정해야 하지만 형식에 대한 가정을 할 필요는 없습니다.
평신도의 관점에서, 상각 분석은 입력에 대해 임의의 크기를 선택한 다음 알고리즘을 "실행"하는 것입니다. 입력에 따라 결정을 내려야 할 때마다 최악의 경로가 선택됩니다 ¹. 알고리즘이 완료 될 때까지 실행 한 후 계산 된 복잡성을 입력 크기로 나누어 최종 결과를 생성합니다.
¹ 참고 : 정확히 말하면 이론적으로 가능한 최악의 경로 입니다 . 용량이 소진 될 때마다 크기가 동적으로 두 배가되는 벡터가있는 경우, "최악의 경우"는 삽입이 시퀀스로 처리되기 때문에 삽입 할 때마다 두 배가 필요하다고 가정하는 것은 아닙니다 . 우리는 입력이 알려지지 않은 상태에서도 가능한 한 많은 "더 나쁜"경우를 수학적으로 제거하기 위해 알려진 상태 를 사용할 수 있습니다.
가장 중요한 차이점
점근 분석과 상각 분석의 중요한 차이점은 전자는 입력 자체에 의존하고 후자는 알고리즘이 실행할 작업 순서에 의존한다는 것입니다.
따라서:
- 점근 분석을 통해 N 에 접근하는 크기의 최고 / 최악 / 평균 사례 입력이 주어 졌을 때 알고리즘의 복잡성이 일부 함수 F (N)에 의해 제한 된다는 것을 주장 할 수 있습니다. 여기서 N은 변수입니다.
- 상각 분석을 통해 알려지지 않은 특성의 입력이 주어졌지만 알려진 크기 N이 함수 F (N)의 값보다 나쁘지 않을 때 알고리즘의 복잡성을 주장 할 수 있습니다. 여기서 N은 알려진 값입니다.