Complessità informatica


Risposte:


12

Usando la rapida trasformata di Fourier, le moltiplicazioni sui numeri -bit possono essere fatte in time (dove la tilde indica che stiamo ignorando i fattori pollogaritmici). Ripetendo la quadratura, possiamo calcolare con moltiplicazioni e ogni moltiplicazione non comporta un numero maggiore di , che ha all'incirca bit. Quindi il tempo totale richiesto è .˜ O ( k ) n n 2 O ( log n ) n n 2 n 2 log 2 n ˜ O ( n 2 ( log n ) 2 ) = ˜ O ( n 2 )kO~(k)nn2O(logn)nn2n2log2nO~(n2(logn)2)=O~(n2)


3

Modificato in risposta ai commenti Il tempo per calcolare può essere scomposto nel tempo richiesto per calcolare e quello richiesto per eseguire . Suppongo che la moltiplicazione di un numero bit per un numero bit richiede esattamente il tempo con il metodo del libro di scuola; aggiunte, ecc. sono tempi costanti. Di conseguenza, il calcolo di richiede tempo. f 1 ( n ) = n 2 n f 1 ( n ) m n m n n 2 log 2 2 ( n )f(n)=nn2f1(n)=n2nf1(n)mnmnn2log22(n)

Supponiamo di usare l'espiazione binaria per calcolare . L'esponenziazione binaria esegue due tipi di operazioni nel calcolo di : quadratura del prodotto corrente e moltiplicazione del prodotto corrente per , a seconda che il bit corrente nell'espansione binaria di sia 0 o 1. Nel peggiore dei casi , è una potenza di due, quindi l'espiazione binaria quadrata ripetutamente il suo prodotto attuale fino a quando non raggiunge la risposta. Nota che ha bit, in modo che il numero di tali è . Questo è il caso che analizzeremo ulteriormente di seguito.f ( n ) n n 2 n 2 n 2 m = 2 log 2 ( n ) m = m - 1f(n)f(n)nn2n2n2m=2log2(n)m=m1

La prima quadratura richiede tempo, risultando in un a . La seconda quadratura accetta due numeri di bit e viene eseguita in volte, dando luogo a un prodotto bit. Continuando, l' -passaggio richiede volta e genera un prodotto -bit. Questo processo si interrompe al passaggio -esimo; di conseguenza, ci vuole tempot1=log22(n)o1=2log2(n)o1t2=o12o2=2o1iti=4i1log22noi=2ilog2(n)m

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

Quando viene incluso il costo di squadratura iniziale, scopriamo che abbiamo bisogno di più tempo

Texp+log22n

Nota

  • Ho omesso alcuni piani e soffitti nei calcoli, sperando che non influenzassero materialmente la risposta.
  • Ho deliberatamente omesso un'analisi basata su a favore di un limite superiore esatto solo per essere rigoroso. O
  • Il ragionamento di cui sopra chiarisce anche perché la mia analisi precedente fosse difettosa. La notazione stata usata in modo rapido e libero e ha omesso convenientemente le costanti in modo che, per esempio, diventasse magicamente . OtiO(logn)
  • Le moltiplicazioni possono essere sempre accelerate da FFT e altri metodi.

1
Come hai ottenuto la complessità di per il calcolo di ? O(1)n2

4
Sto per dire che la moltiplicazione di due numeri -bit richiede tempo anziché tempo, è necessario calcolarlo anche nel costo dell'espiazione binaria. O ( log n ) O ( 1 )nO(logn)O(1)
Mark Dominus,

2
Si noti che il risultato finale ha bit. È molto difficile calcolare bit in tempo. n 2 log 2 n O ( log n )n2log2nn2log2nO(logn)

Giusto punto, prenderò nota
PKG

1
@ThomasAndrews: dipende dalla macchina e dal modello di costo. Non è insolito ipotizzare un modello di RAM con costi contendenti per le aggiunte.
Raffaello
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.