나는 CS 학생조차 아니기 때문에 이것은 멍청한 질문 일지 모르지만 나와 함께 견뎌주십시오 ...
컴퓨터 이전 시대에는 서랍 배열과 같은 배열 데이터 구조 만 구현할 수 있습니다. 값을 추출하기 전에 해당 색인이있는 드로어를 찾아야하므로 배열 검색의 시간 복잡도는 이진 검색을 가정하는 입니다.
그러나 컴퓨터의 발명은 큰 차이를 만들었습니다. 최신 컴퓨터는 RAM에서 너무 빨리 읽을 수 있으므로 이제 어레이 조회의 시간 복잡성을 간주합니다 (기술적으로는 그렇지 않습니다. 레지스터를 먼 거리로 이동하는 데 더 많은 시간이 걸리기 때문입니다)
또 다른 예는 Python 사전입니다. 잘못 작성된 오버로드 된 매직 메소드 (또는 엄청나게 나쁜 운, 즉 해시 충돌이 많은 키 사용하여 의 사전 액세스 복잡성을 얻을 수 있지만 일반적으로 추정됩니다 . 이 경우 시간 복잡도는 파이썬 사전의 해시 테이블 구현과 해시 함수의 키 구현에 따라 다릅니다.__hash__
이는 하드웨어 / 구현이 알고리즘의 시간 복잡성에 영향을 줄 수 있음을 의미합니까? (두 예제 모두 알고리즘 대신 데이터 구조에 관한 것이지만 후자는 전자에 기반을두고 있으며 데이터 구조의 시간 복잡성을 들어 본 적이 없으므로 여기서는 "알고리즘"이라는 용어를 사용하고 있습니다.
나에게 알고리즘은 추상적이며 개념적이며 시간 / 공간 복잡성과 같은 속성은 특정 방식으로 구현되는지 여부에 영향을받지 않아야하지만 그렇지 않습니까?