Часова складність додавання


11

Вікіпедія перераховує складність у часі складання як , де - кількість біт.нн

Це жорстка теоретична нижня межа? Або це лише складність поточного найшвидшого відомого алгоритму. Хочу знати, оскільки складність додавання підкреслює всі інші арифметичні операції та всі алгоритми, які їх використовують.

Теоретично неможливо отримати алгоритм додавання, який працює в ? Або ми зв'язані з лінійною складністю для додавання.о(н)

Відповіді:


17

Якщо ваш алгоритм використовує асимптотично менше часу, то у нього не вистачає часу, щоб прочитати всі цифри доданих ним чисел. Ви повинні уявити, що ви обробляєте дуже велику кількість (зберігається, наприклад, у текстових файлах 8 МБ). Звичайно, додавання можна зробити дуже швидко порівняно зі значенням чисел; він працює в час, якщо - це сума суми.нО(журнал(N))N

Це не означає, що ви можете трохи прискорити справи; якщо ваш процесор обробляє 32 біти кожної операції, ви використовуєте час, але це все ще а не .н32О(н)о(н)


аб,а:аб,а+б2а2аО(1)0н

3
2а2аО(1)0О(журнал(н))аО(н)а2а

аО(журналн)

3
О(журналн)О(н)а+б426

1
Ω(н)

7

Для того, щоб аналіз складності взагалі мав будь-який офіційний сенс, вам потрібно вказати формальну обчислювальну модель, в рамках якої виконується алгоритм в об'єкті, або, принаймні, модель витрат , яка визначає, що є основними операціями та їх витрати.

Θ(1)

Θ(|х|)

Тепер, чи можуть операції мати меншу вартість? Можливо, однак, вам доведеться формально визначити обчислювальну модель, в якій це може статися.


1
Θ(журналн)н

3

Ω(н)

Уявіть, що ваш алгоритм успішно додає 1010100110 та 0010010110, не читаючи кожен біт. Для того, щоб алгоритм міг додати довільні введення, я мав би можливість випадковим чином перевернути будь-який з цих бітів, і алгоритм все одно виводить правильне (але інше) додавання. Але якщо ваш алгоритм читає не кожен біт, як він міг сказати, що перевернутий вхід відрізняється від вихідного вводу?


н

Абсолютно. Вам просто потрібно визначити, що означає "приблизне" у вашому алгоритмі. Залежно від цього визначення, додавання двох найбільш значущих бітів може бути приблизною сумою, яку можна зробити за (n) час. Коли ви згадуєте алгоритм "додавання", я думаю, що всі ми вважаємо, що відповідь повинна бути точною.
murrdpirate
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.