답변:
알고리즘이 무조건 시간 미만을 사용하는 경우 추가하는 숫자의 모든 숫자를 읽을 수있는 시간이 충분하지 않습니다. 매우 많은 수 (예 : 8MB 텍스트 파일에 저장)를 처리한다고 가정해야합니다. 물론 숫자 의 값 에 비해 매우 빠르게 추가 할 수 있습니다 . 그것에서 실행 경우 시간이 합계 값이다.O ( 로그 ( N ) ) N
그렇다고해서 속도를 조금 높일 수는 없습니다. 프로세서가 각 작업에서 32 비트를 처리하는 경우 시간을 사용하지만 여전히 아닌 입니다. O(n)o(n)
복잡성 분석이 공식적으로 의미를 갖기 위해서는 객체의 알고리즘이 실행되는 공식 계산 모델 또는 기본 연산이 무엇인지 지정 하는 비용 모델 을 지정해야합니다. 그들의 비용.
대부분의 상황에서 산술 연산은 시간이 것으로 가정합니다 . 우리는 관련된 숫자에 관계없이 알고리즘 복잡성에 관심이 있기 때문에 일반적으로 합리적입니다. 이를 균일 비용 모델 이라고합니다 .
숫자가 무한대로 커지거나 연산 자체를 분석하는 데 관심이있는 경우 산술 연산은 입력 크기에 비례하는 비용 를 갖습니다 .
이제 운영 비용이 그보다 적은 비용을 가질 수 있습니까? 그러나 계산 가능한 계산 모델을 공식적으로 정의해야 할 수도 있습니다.
더하기 입력은 두 개의 임의의 숫자입니다. 이들은 임의적이므로 각 비트를 읽어야하므로 알고리즘은 입니다.
알고리즘이 각 비트를 읽지 않고 1010100110 및 0010010110을 성공적으로 추가한다고 상상해보십시오. 알고리즘이 임의의 입력 을 추가 할 수 있도록이 비트 중 하나를 임의로 뒤집을 수 있어야하며 알고리즘은 여전히 올바른 (그러나 다른) 덧셈을 출력합니다. 그러나 알고리즘이 모든 비트를 읽지 못하면 뒤집힌 입력이 원래 입력과 다른지 어떻게 알 수 있습니까?