Odpowiedzi:
Dzięki szybkiej transformacie Fouriera mnożenie liczb bitowych może być wykonane w czasie ˜ O ( k ) (gdzie tylda oznacza , że ignorujemy czynniki polilogarytmiczne). Przez powtarzanie kwadratu możemy obliczyć n n 2 z mnożeniem O ( log n ) , a każde mnożenie obejmuje liczbę większą niż n n 2 , która ma z grubsza n 2 log 2 n bitów. Zatem całkowity wymagany czas wynosi ˜ O ( n 2 ( .
Edytowane w odpowiedzi na komentarze Czas obliczenia można rozłożyć na czas wymagany do obliczenia f 1 ( n ) = n 2 i czas wymagany do wykonania n f 1 ( n ) . Zakładam, że pomnożenie liczby m bitów przez liczbę n bitów zajmuje dokładnie m n czasu metodą podręcznika szkolnego; dodatki itp. są stałym czasem. W rezultacie obliczenie n 2 zajmuje log 2czas.
Załóżmy, że do obliczania używamy potęgowania binarnego . Potęgowanie binarne wykonuje dwa rodzaje operacji przy obliczaniu f ( n ) : podniesienie kwadratu bieżącego produktu i pomnożenie bieżącego produktu przez n , w zależności od tego, czy bieżący bit w rozwinięciu binarnym n 2 wynosi 0 czy 1. W najgorszym przypadku n 2 jest potęgą dwóch, tak że potęgowanie binarne wielokrotnie kwadratuje bieżący iloczyn, aż osiągnie odpowiedź. Zauważ, że n 2 ma m ′ = ⌈ 2 log 2 ( n bitów, tak że liczba takich kwadratów wynosi m = m ′ - 1 . Jest to przypadek, który analizujemy poniżej.
Pierwsze podniesienie do kwadratu zajmuje czas , co daje iloczyn o 1 = 2 log 2 ( n ) -bit. Drugie kwadraty przyjmują dwie liczby o 1 bit i biegną w czasie t 2 = o 2 1 , co daje iloczyn o 2 = 2 o 1- bit. Kontynuując, i- ty krok zajmuje t i = 4 i - 1 logczas i wyjścia aoi=2ilog2(n)-bitowy produkt. Proces ten zatrzymuje się nam-tymetapie; w rezultacie wymaga czasu
.
Po uwzględnieniu początkowego kosztu do kwadratu potrzebujemy czasu
Uwaga