Подтвердить что ты не робот

Полиномиальное время и экспоненциальное время

Может ли кто-нибудь объяснить разницу между алгоритмами полиномиального времени, неполиномиального времени и экспоненциального времени?

Например, если алгоритм занимает O (n ^ 2) времени, то в какую категорию он входит?

4b9b3361

Ответ 1

Проверьте это.

Экспоненциальный хуже, чем полиномиальный.

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 миллиардов миллиардов миллиардов операций в секунду в течение триллионов миллиардов миллиардов лет, чтобы это сделать.

Я не рассчитал это, но ЕГО ЭТО БОЛЬШОЕ.

Ответ 2

Ниже приведены некоторые общие функции 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 некоторых функций

graph model

ура :-)

График кредитов http://bigocheatsheet.com/

Ответ 3

O (n ^ 2) - полиномиальное время. Многочлен f (n) = n ^ 2. С другой стороны, O (2 ^ n) - экспоненциальное время, где подразумевается экспоненциальная функция f (n) = 2 ^ n. Разница заключается в том, является ли функция n местом n в базе возведения в степень или в самом экспоненте.

Любая экспоненциальная функция роста будет расти значительно быстрее (в долгосрочной перспективе), чем любая полиномиальная функция, поэтому различие имеет отношение к эффективности алгоритма, особенно при больших значениях n.

Ответ 4

Полиномиальное время

Полином - это сумма терминов, которые выглядят как Constant * x^k Экспоненциальный означает что-то вроде Constant * k^x

(в обоих случаях k является константой, а x является переменной).

Время выполнения экспоненциальных алгоритмов растет намного быстрее, чем полиномиальных.

Ответ 5

Экспоненциальный (у вас есть экспоненциальная функция, если MINIMAL ONE EXPONENT зависит от параметра):

  • например. f (x) = constant ^ x

Полином (у вас есть полиномиальная функция, если NO EXPONENT зависит от некоторых параметров функции):

  • например. f (x) = x ^ constant

Ответ 6

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

экспоненциальное время O (k) ^ n означает Количество операций пропорционально показателю размера ввода

Ответ 7

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