Может ли кто-нибудь объяснить разницу между алгоритмами с полиномиальным, неполиномиальным и экспоненциальным временем?
Например, если алгоритм занимает время O (n ^ 2), то к какой категории он относится?
Может ли кто-нибудь объяснить разницу между алгоритмами с полиномиальным, неполиномиальным и экспоненциальным временем?
Например, если алгоритм занимает время O (n ^ 2), то к какой категории он относится?
Ответы:
Проверьте это .
Экспонента хуже полинома.
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 миллиардов миллиардов миллиардов операций в секунду в течение триллионов миллиардов миллиардов лет, чтобы это сделать.
Я не рассчитывал это, но ЕГО ТАКОЕ БОЛЬШОЕ.
Ниже приведены некоторые общие функции Big-O при анализе алгоритмов.
(n = размер ввода, c = некоторая константа)
Вот модельный граф, представляющий сложность Big-O некоторых функций
ура :-)
график кредитов http://bigocheatsheet.com/
O (n ^ 2) - полиномиальное время. Многочлен равен f (n) = n ^ 2. С другой стороны, O (2 ^ n) - экспоненциальное время, где подразумевается экспоненциальная функция f (n) = 2 ^ n. Разница в том, помещает ли функция n в основание возведения в степень или в саму экспоненту.
Любая функция экспоненциального роста будет расти значительно быстрее (в долгосрочной перспективе), чем любая полиномиальная функция, поэтому различие имеет отношение к эффективности алгоритма, особенно для больших значений n.
Экспоненциальная (у вас есть экспоненциальная функция, если МИНИМАЛЬНАЯ ОДНА ЭКСПОНЕНТА зависит от параметра):
Полиномиальная (у вас есть полиномиальная функция, если НИКАКАЯ ЭКСПОНЕНТА не зависит от некоторых параметров функции):
o (n sequre) - полинимальная временная сложность, в то время как o (2 ^ n) - экспоненциальная временная сложность, если p = np в лучшем случае, в худшем случае p = np не равно, потому что, когда размер ввода n увеличивается так долго или размер ввода увеличивается, поэтому дольше идет наихудший случай и обработка, поэтому скорость роста сложности увеличивается и зависит от размера ввода, когда ввод небольшой, он полинимален, когда размер ввода большой и большой, поэтому p = np не равно, это означает, что скорость роста зависит от размера ввода "N ". оптимизация, сат, клик и независимый набор также встречаются от экспоненты до полинома.