Risposte:
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 )
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 )
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 ′ - 1
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 tempo
.
Quando viene incluso il costo di squadratura iniziale, scopriamo che abbiamo bisogno di più tempo
Nota