오늘날의 컴퓨터 과학에서 알고리즘의 효율성과 달성 된 성능은 이론적 계산 복잡성에 의존 할뿐만 아니라 실제 하드웨어 성능의 직접적인 영향을받습니다.최적으로 간주되는 많은 알고리즘은 실제 응용 프로그램에서 예상되는 것처럼 성능이 없을 수 있기 때문에 이것은 특히 명백합니다.기술의 발전으로 우리는 알고리즘 설계와 하드웨어 아키텍처 사이의 깊은 연결이 있습니다.이 상관 관계는 주요 질문을 제기합니다. 알고리즘 최적화를 찾는 동안 하드웨어의 설계 및 성능이 어떻게이 변경에 적응해야합니까?
알고리즘이 점차 최적 인 경우, 충분한 입력 스케일에서는 알고리즘이 성능을 능가 할 수 없으며 일정한 요인만으로 제한됩니다.
점진적 최적 알고리즘의 개념은 종종 컴퓨터 과학에서 볼 수 있으며 일반적으로 큰 입력을 처리 할 때 알고리즘의 성능을 포함합니다.구체적으로, 알고리즘의 성능이 O (f (n)) 인 경우, 특정 문제에 대해 하한이 ω (f (n)) 인 것으로 판명되면 알고리즘을 점진적 최적이라고합니다.예를 들어, 비교 분류의 경우, 모든 비교 분류는 평균 및 최악의 시나리오에서 최소 ω (n log n) 비교가 필요하지만 병합 분류 및 힙 분류는 O (n log n) 시간으로 정렬 될 수 있으므로 점차 최적으로 고려 될 수 있습니다.
그러나그러나, 많은 경우에, 특히 입력 데이터에 특정 속성이있는 경우 효율이 높은 다른 알고리즘이 존재합니다.N 객체가 [1, n] 범위에서 정수로 알려진 경우 버킷 분류 사용과 같은 O (n)로 정렬 할 수 있습니다.이것은 특정 특정 데이터 구조 나 알고리즘이 성능을 크게 향상시킬 수 있기 때문에 단일 불변이 특정 알고리즘으로 제한해서는 안된다는 것을 보여줍니다.
하드웨어 최적화를 고려하지 않고 진보적 인 최적 알고리즘조차도 실제 데이터에서 최적으로 수행되지 않을 수 있습니다.
현대 컴퓨터의 경우 메모리 캐시 및 병렬 처리와 같은 하드웨어 최적화는 점진적으로 최적의 알고리즘으로 "파괴"될 수 있습니다.즉, 분석에서 이러한 하드웨어 최적화를 고려하지 않으면 이러한 특성을 더 잘 활용하고 실제 데이터의 최적의 알고리즘을 넘어 설 수있는 차선책 알고리즘이있을 수 있습니다.간단한 다각형 삼각 측량에 대한 Bernard Chazelle의 선형 시간 알고리즘을 예로 들어 보면 이것은 점진적인 최적의 선택이지만 실제로는 거의 사용되지 않습니다.또한, 동적 배열 데이터 구조는 이론적으로 일정한 시간에 인덱싱 될 수 있지만 많은 기계에서 일반 배열 인덱스의 성능을 크게 초과 할 것입니다.
점진적인 최적의 알고리즘의 중요성은 무시할 수는 없지만 복잡성으로 인해 일부 실제 상황에서는 적용하기가 어렵습니다.알고리즘이 너무 복잡한 경우 이해 및 구현의 어려움은 고려 된 입력 크기 범위 내에서 잠재적 이점을 초과 할 수 있습니다.실제로, 많은 경우에 우리가 직면 한 입력은 다른 고성능 알고리즘이나 휴리스틱이 최악의 시간이 좋지 않더라도 이상적으로 성능을 발휘하는 속성이 발생합니다.
이러한 견해를 바탕으로 진보적 최적 성과 하드웨어 효과 사이의 상충 관계가 실제로 복잡하다는 것을 알 수 있습니다.기술의 발전으로, 끊임없이 변화하는 하드웨어 환경에 더 잘 적응하기 위해 알고리즘 설계를 재평가해야합니다.이론적 효율성에만 초점을 맞추면 유용성, 유연성 및 성능에 더 많은 장점이있는 솔루션을 놓칠 수 있습니다.
알고리즘을 탐색 할 때는 다음과 같이 생각할 수도 있습니다. 어떤 종류의 하드웨어 디자인이 알고리즘의 최상의 성능에 기여할 수 있습니까?