Складність обчислень


Відповіді:


12

Використовуючи швидке перетворення Фур'є, множення на бітні числа можна здійснити за час ˜ O ( k ) (де тильда означає, що ми ігноруємо полілогіармічні фактори). Шляхом повторного квадратування ми можемо обчислити n n 2 за допомогою множення на O ( log n ) , і кожне множення передбачає не більше, ніж n n 2 , яке має приблизно n 2 log 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 бітне число займає рівно m n час методом шкільної книги; доповнення тощо - постійний час. В результаті обчислення n 2 приймає журнал 2f(n)=nn2f1(n)=n2nf1(n)mnmnn2час.log22(n)

Припустимо, ми використовуємо двійкову експоненцію для обчислення . Двійкові експоненції виконують два види операцій при обчисленні f ( n ) : зіставлення поточного продукту та множення поточного добутку на n відповідно до того, чи поточний біт у бінарному розширенні n 2 дорівнює 0 або 1. У гіршому випадку, n 2 - потужність двох, так що бінарне експоненцію багаторазово квадратує свій поточний добуток, поки не досягне відповіді. Зауважте, що n 2 має m = 2 log 2 ( nf(n)f(n)nn2n2n2 біт, так що кількість таких квадратів 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 лог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
  • OtiO(logn)
  • Розмноження можна завжди прискорити за допомогою FFT та інших методів.

1
O(1)n2

4
nO(logn)O(1)

2
n2log2nn2log2nO(logn)

Справедливий пункт, відзначу
PKG

1
@ThomasAndrews: Це залежить від моделі машини та вартості. Незвично вважати модель оперативної пам’яті з постійною вартістю додатків.
Рафаель
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.