계산의 복잡성


답변:


12

고속 푸리에 변환을 사용하면 비트 수 에 대한 곱셈을 시간 ~ O ( k ) 로 수행 할 수 있습니다 (여기서 물결표 는 다항식 인수를 무시하고 있음을 나타냅니다 ). 제곱 반복함으로써 계산할 수 N N 2O ( 로그 N ) 승산하고, 각 승산 이하 수가 더 포함 N N 2 거의 가지고 N 2 로그 2 N 비트. 따라서 필요한 총 시간은 ~ O ( n 2 (kO~(k)nn2O(logn)nn2n2log2n .O~(n2(logn)2)=O~(n2)


3

코멘트에 응답하여 편집 계산하는 시간 시간을 계산하기 위해 필요로 분해 될 수 f를 1 ( N ) = N (2) 및 그 수행하는데 필요한 N f를 1 ( N ) . m 비트 수에 n 비트 수 를 곱 하면 School Book 방법에 의해 정확히 m n 시간 이 걸린다고 가정하겠습니다 . 첨가 등은 일정한 시간입니다. 결과적으로 n 2를 계산 하면 log 2 가 걸립니다.f(n)=nn2f1(n)=n2nf1(n)mnmnn2시간log22(n)

을 계산하기 위해 이진 지수를 사용한다고 가정하자 . 이항 지수화는 f ( n ) 계산에서 두 가지 종류의 연산 을 수행합니다. n 2 의 이진 확장에서 현재 비트 가 0인지 1 인지에 따라 현재 곱을 제곱하고 현재 곱에 n을 곱합니다 . 최악의 경우, n 22의 거듭 제곱이므로 이항 지수는 답에 도달 할 때까지 현재 곱을 반복하여 제곱합니다 .n 2m = 2 log 2 ( nf(n)f(n)nn2n2n2 비트 등 squarings의 개수가되도록 m = m ' - 1 . 우리가 아래에서 더 분석하는 경우입니다.m=2log2(n)m=m1

첫 번째 제곱은 시간이 걸리므로 o 1 = 2 log 2 ( n ) -비트 곱이됩니다. 두 번째 제곱은 두 개의 o 1 비트 숫자를 취하고 t 2 = o 2 1 번 실행되므로 o 2 = 2 o 1 비트 곱이됩니다. 계속해서, i 번째 단계는 t i = 4 i 1 log를 필요로합니다.t1=log22(n)o1=2log2(n)o1t2=o12o2=2o1i시간이고 aoi=2ilog2(n)비트 곱을 출력합니다. 이 프로세스는m번째 단계에서 중지됩니다. 결과적으로 시간이 걸립니다ti=4i1log22noi=2ilog2(n)m

. Texp=[1..m]ti=log22(n)[1..m]4i=4m13log22n

초기 제곱 비용이 포함되면 최대 시간이 필요하다는 것을 알게됩니다

Texp+log22n

노트

  • 나는 계산에서 일부 바닥과 천장을 생략하여 대답에 실질적으로 영향을 미치지 않기를 바랍니다.
  • 엄밀히 말하면 정확한 상한을 위해 기반 분석을 의도적으로 생략했습니다 . O
  • 위의 추론은 또한 왜 이전의 분석에 결함이 있었는지를 분명히합니다. 표기 빠르게하고 느슨한 방식을 사용하고,이를 편리하게, 예를 들어되도록 상수를 생략하고, Σ는 t를 마법 된 O ( 로그 없음을 ) . OtiO(logn)
  • 곱셈은 ​​항상 FFT와 다른 방법으로 가속화 될 수 있습니다.

1
n 2 계산을 위해 복잡성을 어떻게 얻었 습니까? O(1)n2

4
두 개의 비트 숫자 를 곱하는 데 O ( 1 ) 시간 대신 O ( log n ) 시간이 걸리므 로 이진 지수의 비용으로도 계산해야한다고 말하고 싶습니다. nO(logn)O(1)
Mark Dominus

2
최종 결과는 비트입니다. O ( log n ) 시간에 n 2 log 2 n 비트 를 계산하는 것은 매우 어렵 습니다. n2log2nn2log2nO(logn)

페어 포인트, 주목할 것
PKG

1
@ThomasAndrews : 기계 및 비용 모델에 따라 다릅니다. 추가 비용이 일정한 RAM 모델을 가정하는 것은 드문 일이 아닙니다.
라파엘
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.