생계 알고리즘을 연구하는 나와 같은 사람들에게 21 세기 표준 계산 모델은 정수 RAM 입니다. 이 모델은 실제 컴퓨터의 동작을 튜링 머신 모델보다 정확하게 반영하기위한 것입니다. 실제 컴퓨터는 병렬 하드웨어를 사용하여 일정한 시간에 여러 비트 정수를 처리합니다. 하지 임의의 정수,하지만 (워드 크기는 시간이 지남에 따라 지속적으로 증가하기 때문에)하지 크기 고정 하거나, 정수를.
모델은 단어 크기 라는 단일 매개 변수 에 의존 합니다 . 각 메모리 주소에는 단일 비트 정수 또는 word가 있습니다. 이 모델에서 입력 크기 은 입력 의 단어 수이고 알고리즘의 실행 시간은 words에 대한 작업 수입니다 . 단어에 대한 표준 산술 연산 (더하기, 빼기, 곱하기, 정수 나누기, 나머지, 비교) 및 부울 연산 (비트 및 / 또는 xor, 시프트, 회전) 은 정의에 따라 시간 이 필요합니다 .w n O ( 1 )wwnO(1)
공식적으로, 단어 크기 는w 이 모델에서 알고리즘을 분석하기위한 상수가 아닙니다 . 모델을 직감과 일치시키기 위해서는 필요합니다. 그렇지 않으면 정수 을 한 단어로 저장할 수도 없습니다 . 그럼에도 불구하고 대부분의 비 숫자 알고리즘의 경우 실행 시간은 실제로 와 독립적입니다 . 왜냐하면 이러한 알고리즘은 입력의 기본 이진 표현에 신경 쓰지 않기 때문입니다. Mergesort와 heapsort는 모두 시간에 실행됩니다. 최악의 경우, 3 중식의 중간 값이 시간에 실행됩니다 . 주목할만한 예외 중 하나는 시간에 실행되는 이진 기수 정렬 입니다.n w O ( n log n ) O ( n 2 ) O ( n w )w≥log2nnwO(nlogn)O(n2)O(nw)
설정 우리에게 기존의 로그에서 선정 된 RAM 모델을 제공합니다. 그러나 일부 정수 RAM 알고리즘은 Andersson 등 의 선형 시간 정수 정렬 알고리즘과 같이 더 큰 단어 크기를 위해 설계되었습니다 . 요구되는 .w = Ω ( log 2 + ε n )w=Θ(logn)w=Ω(log2+εn)
실제로 발생하는 많은 알고리즘의 경우 단어 크기 는 문제가되지 않으며 훨씬 더 균일 한 RAM 모델로 대체 할 수 있습니다. 유일한 큰 어려움은 중첩 곱셈에서 비롯되며 매우 큰 정수를 매우 빠르게 빌드하는 데 사용할 수 있습니다 . 상수 시간 에 임의의 정수에 대해 산술을 수행 할 수 있다면 , PSPACE의 모든 문제를 다항식 시간으로 해결할 수 있습니다 .w
업데이트 : 또한 다중 테이프 Turing 기계 (또는 "비트 RAM")를 사용하는 Fürer의 정수 곱셈 알고리즘 및 이론적으로 분석되는 대부분의 기하학적 알고리즘과 같은 "표준 모델"에는 예외가 있음을 언급해야 합니다. 깨끗하지만 이상적인 "실제 RAM"모델 .
그렇습니다, 이것은 벌레의 깡통입니다.