Пусть будет временем выполнения задачи на входе размера в худшем случае . Давайте сделаем задачу немного странной, установив для но для .
Итак, какова нижняя граница проблемы? Насколько я понял, это просто нижняя граница . Но мы знаем, что означает, что существует постоянная , такая, что для всех , , что неверно. Таким образом, кажется, что мы можем только сказать , Но обычно мы будем называть проблему нижней границей , верно?
Предполагая, что , это означает, что существует постоянная , такая, что для всех , . Давайте также предположим, что проблема имеет время выполнения . Если мы можем свести эту проблему для всех простых чисел к другой задаче (с тем же размером ввода), можем ли мы сказать, что время выполнения другой задачи имеет нижнюю границу ?
Ответы:
Правильное определение состоит в том, что существует некоторое такое, что для бесконечного числа , . Бесконечно часто встречающееся определение нижних границ решает ваши проблемы и показывает, как мы используем его на практике.f(n)=Ω(n2) k>0 n f(n)≥kn2
Я сделал пост по этому вопросу еще в 2005 году.
Некоторые учебники дают правильное определение, а некоторые нет.
источник
С определением Кнута вы можете утверждать только . Как вы заметили, это не интуитивно понятно и происходит для функций, которые Витани и Меертенс называют «дикими». Они предлагают определитьf(n)∈Ω(n)
(Это то же самое, что и определение Ланса.) С этим определением .f(n)∈Ω(n2)
источник
Я не знаю о наиболее широко используемых, но я думаю, что я знаю о самом старом использовании (для компьютерных наук в любом случае).
В статье Хартманиса и Стернса "О вычислительной сложности алгоритмов", написанной в 1965 году, следствие 2.1:
где - класс сложности всех задач, вычислимых в . T (n) должен подчиняться для некоторого целого числа и всех и , но оно не должно быть конструируемым по времени.SK O(K(n)) T(n)≥n/k k n T(n)≤T(n+1)
Ваша функция подчиняется первому правилу для но не подчиняется второму правилу.k=1
Следствие 2.2 является ответом на вышесказанное и использует верхний предел, но все еще имеет эти требования. Я предполагаю, что с годами алгоритмы усложнялись, возможно, что требования были смягчены.
источник
Я думаю, что мы должны различать две вещи:
Для функций, когда мы фиксируем порядок, из него следует определение нижнего / верхнего предела . Если отношение порядка является асимптотическим мажорированием (без учета постоянных факторов)
тогда определение является обычным определением и . Оба они широко используются в других областях, таких как комбинаторика.O Ω
Но когда мы говорим о нижней границе задачи (алгоритме), мы действительно хотим сказать, что проблема требует определенного количества ресурсов (для запуска алгоритма, решающего проблему). Часто классы сложности параметризуются такими функциями, как , и мы просто говорим, что задача ограничена снизу функцией, но это работает только для хороших функций (например, время выполнения алгоритма является монотонным и т. д.). Что мы хотим сказать в этих случаях, так это то, что нам нужно времени выполнения для решения проблемы, т. Е. Меньше времени работы недостаточно, что формально становится определением Ланса, что время выполнения алгоритма не .Time(t(n)) n2 n2 o(t(n))
источник