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


Відповіді:


12

Використовуючи швидке перетворення Фур'є, множення на бітні числа можна здійснити за час ˜ O ( k ) (де тильда означає, що ми ігноруємо полілогіармічні фактори). Шляхом повторного квадратування ми можемо обчислити n n 2 за допомогою множення на O ( log n ) , і кожне множення передбачає не більше, ніж n n 2 , яке має приблизно n 2 log 2 n біт. Отже загальна необхідна кількість часу становить ˜ O ( n 2 (kO~(k)nn2O(log⁡n)nn2n2log2⁡n .O~(n2(log⁡n)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=m′−1

Перше квадратування займає час, в результаті чого продукт 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=4i−1log22⁡noi=2ilog2⁡(n)m

. Texp=∑[1..m]ti=log22⁡(n)∑[1..m]4i=4m−13log22⁡n

Коли включена початкова вартість квадратування, ми вважаємо, що нам потрібен максимум часу

Texp+log22⁡n

Примітка

  • Я опустив деякі підлоги та стелі в обчисленнях, сподіваючись, що вони не вплинуть істотно на відповідь.
  • O
  • O∑tiO(log⁡n)
  • Розмноження можна завжди прискорити за допомогою FFT та інших методів.

1
O(1)n2

4
nO(log⁡n)O(1)

2
n2log2⁡nn2log2⁡nO(log⁡n)

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

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