Поліноміальний час та експоненційний час


90

Хтось може пояснити різницю між алгоритмами поліноміального часу, неполіноміального часу та експоненціального часу?

Наприклад, якщо алгоритм займає час O (n ^ 2), то до якої категорії він належить?

Відповіді:


85

Перевірте це .

Експоненціальний гірший за поліном.

O (n ^ 2) потрапляє в квадратичну категорію, яка є різновидом полінома (особливий випадок показника ступеня дорівнює 2) і кращим за експоненціальний.

Експоненціальний набагато гірший за поліном. Подивіться, як зростають функції

n    = 10    |     100   |      1000

n^2  = 100   |   10000   |   1000000 

k^n  = k^10  |   k^100   |    k^1000

k ^ 1000 є виключно величезним, якщо k не менше ніж приблизно 1,1. Мовляв, щось на зразок кожної частинки у Всесвіті мало б зробити 100 мільярдів мільярдів операцій в секунду протягом трильйонів мільярдів мільярдів років, щоб це зробити.

Я не розрахував, але ЦЕ ВЕЛИКИЙ.


29
Я насолоджувався усіма твоїми придурками.
Жозефіна

7
k ^ 1000 надзвичайно великий, якщо k помітно більше 1. Якщо k = 1, це менш вражаюче, а якщо k = 1.00069387 ..., це 2.
Жозефіна

2
Як щодо n! проти k ^ n. Я знаю для 2 ^ n (найпоширеніший), n! буде дорожчим, але я вважаю, що для загального k ^ n де k> 2, n! буде дешевшим.
Саад,

1
Я радий, що ви не сказали "мільярди і мільярди". :-)
Том Рассел

@Saad n! завжди буде дорожче ніж k ^ n для константи k, асимптотично. Однак ви маєте рацію, оскільки це трапляється лише тоді, коли ми досягаємо високого значення n. За наближенням Стірлінга, факторний час повинен подорожчати навколо, коли n = e * k, де e = 2,71828 ..
інавда

136

Нижче наведено деякі загальні функції Big-O під час аналізу алгоритмів.

  • O ( 1 ) - постійний час
  • O ( log (n) ) - логарифмічний час
  • O ( (log (n)) c ) - полілогарифмічний час
  • O ( n ) - лінійний час
  • O ( n 2 ) - квадратичний час
  • O ( n c ) - поліномний час
  • O ( c n ) - експоненціальний час
  • O ( n! ) - факторіальний час

(n = розмір вводу, c = деяка константа)

Ось графік моделі, що представляє складність деяких функцій Big-O

графічна модель

ура :-)

графічні кредити http://bigocheatsheet.com/


12
Плюс один за меншу кількість слів і більше ясності.
user3144836

1 = n ^ 0 так само і поліном
BigChief

46

O (n ^ 2) - поліномний час. Поліном f (n) = n ^ 2. З іншого боку, O (2 ^ n) - експоненціальний час, де мається на увазі експоненціальна функція f (n) = 2 ^ n. Різниця полягає в тому, чи функція n ставить n в основу піднесення ступеня або в саму експоненту.

Будь-яка експоненціальна функція зростання буде рости значно швидше (довгостроково), ніж будь-яка поліноміальна функція, тому розрізнення стосується ефективності алгоритму, особливо для великих значень n.


Ця відповідь має авторитетний (хороший) ефір, але вона відрізняється від відповіді @ dheeran, я вважаю, тим, чи є основа в експоненційному випадку обов'язково 2. Або, можливо, я неправильно розумію, і мені просто потрібно видалити пил з моєї алгебри.
Том Рассел,

21

Поліноміальний час.

Поліном - це сума доданків, які виглядають як Constant * x^k експоненціальні, означає щось на зразокConstant * k^x

(в обох випадках k - константа, а x - змінна).

Час виконання експоненціальних алгоритмів зростає набагато швидше, ніж у поліноміальних.


18

Експоненціальна (Ви маєте експоненціальну функцію, якщо МІНІМАЛЬНИЙ ОДИН ЕКСПОНЕНТ залежить від параметра):

  • Наприклад, f (x) = константа ^ x

Поліном (Ви маєте поліноміальну функцію, якщо NO EXPONENT залежить від деяких параметрів функції):

  • Наприклад, f (x) = x ^ константа

4
Мені не подобається, якщо від моєї оригінальної відповіді після редагування користувачем нічого не залишається. Це якийсь "риболовля"?
Ерхард Дінхобл

2
Я повинен погодитися. Зміни смішні.
Сатья на рейки

3

поліноміальний час O (n) ^ k означає, що кількість операцій пропорційна потужності k розміру вводу

експоненціальний час O (k) ^ n означає, що кількість операцій пропорційна показнику величини вводу


0

o (n sequre) - це полінімальна часова складність, тоді як o (2 ^ n) - експоненціальна часова складність, якщо p = np, коли найкращий випадок, у гіршому випадку p = np не дорівнює тому, що коли вхідний розмір n зростає настільки довгий або розмір вхідного розміру збільшується так довше його перехід у гірший випадок і обробка настільки швидкість зростання складності зростають і залежать від n розміру вхідних даних, коли вхідні дані малі, це багатозначність, коли розмір вхідних даних великий і великий, тому p = np не дорівнює, це означає, що швидкість зростання залежить від розміру вхідного матеріалу "N ". оптимізація, сат, кліка та незалежний набір також зустрічаються в експоненції до полінімальних.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.