Data Structures, Algorithms 및 Tradeoffs 라는 제목의 교과서가 어느 시점에 작성되기를 기다리고 있습니다 . 학부 수준에서 배우게 될 거의 모든 알고리즘 또는 데이터 구조에는 일부 응용 프로그램보다 다른 응용 프로그램보다 더 나은 기능이 있습니다.
모든 사람이 표준 정렬 알고리즘에 익숙하기 때문에 정렬을 예로 들어 봅시다.
우선, 복잡성 만이 유일한 관심사가 아닙니다. 실제로 상수 요소가 중요하므로 빠른 정렬이 최악의 복잡한 경우에도 빠른 정렬이 힙 정렬보다 더 많이 사용되는 이유가 있습니다.
O ( n 로그n )
다른 경우에는 알고리즘 또는 데이터 구조의 아이디어가 특수 목적의 문제에 적용될 수 있습니다. 버블 정렬은 실제 하드웨어에서 삽입 정렬보다 항상 느린 것처럼 보이지만 버블 패스를 수행한다는 아이디어는 때로는 정확히 필요한 것입니다.
예를 들어, 성능상의 이유로 가장 가까운 카메라에서 가장 가까운 카메라에 이르기까지 객체를 그리려는 최신 비디오 카드의 일종의 3D 시각화 또는 비디오 게임을 고려하십시오. 주문이 정확하지 않으면 하드웨어가 처리합니다. 3D 환경을 이동하는 경우 프레임간에 개체의 상대적 순서가 크게 바뀌지 않으므로 프레임마다 하나의 버블 패스를 수행하는 것이 합리적 일 수 있습니다. Valve의 소스 엔진은 파티클 효과를 위해이를 수행합니다.
지속성, 동시성, 캐시 로컬 성, 클러스터 / 클라우드에 대한 확장 성 및 관심있는 작업에 대해 동일한 계산 복잡성을 고려할 때 하나의 데이터 구조 또는 알고리즘이 다른 데이터 구조 또는 알고리즘보다 더 적합한 다른 여러 가지 이유가 있습니다.
그렇다고해서 만약에 대비해서 많은 알고리즘과 데이터 구조를 기억해야한다는 의미는 아닙니다. 대부분의 전투는 처음부터 악용 될 트레이드 오프가 있음을 인식하고 적절한 것이 있다고 생각되면 어디를 볼 것인지를 아는 것입니다.