답변:
엄격한 증거를 원한다면 다음과 같은 정리가 종종 유용합니다. 정의보다 더 편리합니다.
경우 이어서, 존재
- ,
- 및
- .
이를 통해 알고리즘 분석에 나오는 대부분의 기능을 주문할 수 있습니다 ¹. 운동으로 그것을 증명하십시오!
물론 그에 따라 한계를 계산할 수 있어야합니다. 복잡한 기능을 기본 기능으로 나누는 유용한 트릭은 다음과 같습니다.
더 일반적으로 : 볼록하고 지속적으로 차별화되며 엄격하게 증가하는 함수 를 사용하면 몫을 다음과 같이 다시 쓸 수 있습니다.
,
와 및
,
그때
.
현실에 대한 함수의 연속성을 고려하십시오. 이제 L' Hôpital의 규칙을 사용할 수 있습니다 . 그 조건을 염두에 두십시오 ²!
계승이 팝업되면 스털링 공식을 사용하십시오 .
한 번 증명 한 기본 관계 풀을 유지하고 다음과 같이 자주 사용하는 것도 유용합니다.
로그는 다항식보다 느리게 증가합니다. 즉
α , β > 0모든 대해 .
다항식의 순서 :
α<β 모두 .
다항식은 지수보다 느리게 성장합니다.
모든 및 대해 .
한계가 존재하지 않기 때문에 (예를 들어 기능이 진동 할 때) 위의 정리는 적용되지 않을 수 있습니다. 이 경우 라임을 사용하는 다음과 같은 Landau 클래스의 특성을 고려하십시오 .
함께 우리가
- 및
- 입니다.
함께 우리가
- 및
- 입니다.
더욱이,
- 및
- 입니다.
내 표기법이 혼란 스러우면 여기 와 여기를 확인 하십시오 .
¹ Nota bene : 저의 동료는 많은 기능에 대해이 작업을 성공적으로 수행하는 Mathematica 기능을 작성했기 때문에 부수적으로 작업을 기계 계산으로 줄였습니다.
Limit[f[n]/g[n], n -> Infinity]
대소 문자 구분을 계산 하고 수행합니다.
Skiena는 그의 저서 Algorithm Design Manual에서 가장 많이 사용되는 기능들 사이의 지배 관계 목록을 제공합니다.
여기서 은 역 Ackermann 함수를 나타냅니다 .
팁 : Wolfram Alpha 와 같은 것을 사용하여 이러한 함수의 그래프를 그려서 어떻게 성장하는지 느끼십시오. 이것은 매우 정확하지는 않지만 충분히 많은 수를 시도하면 비교의 성장 패턴을 볼 수 있습니다. 물론 이것은 증거를 대신 할 수 없습니다.
예를 들면, 시도 : 1에서 플롯 로그 (로그 (N))를 10000 개별 그래프 나 볼 10000 1에서 플롯 로그 (로그 (N)) 및 플롯 로그 (N)을 비교를보고.
다양한 표기법의 정의에 따라 진행할 것을 제안합니다. 임의의 표현식 쌍으로 시작하여 아래에 설명 된대로 순서를 결정하십시오. 그런 다음 각 추가 요소에 대해 이진 검색을 사용하여 정렬 된 목록에서 위치를 찾고 아래와 같이 비교하십시오. 예를 들어, 의 처음 두 함수 인 n 과 정렬 하여 목록을 시작 합시다 .
속성을 사용하여 첫 번째 표현식을 로 다시 씁니다. . 우리는 그 표시하도록 정의를 사용하도록 진행할 수있다 , 임의 상수에 대한 사람 , 있다 예는 대 , .
다음으로 을 시도 합니다. 우리는 지금까지 배치 한 가장 큰 요소 인 과 비교합니다 . 이후 으니 마찬가지로 보여 .
기타.
다음은 Wikipedia 의 목록 입니다. 테이블이 낮을수록 더 복잡한 클래스입니다.
참고 :