макетов Я понимаю, что время алгоритм, в T(n)
может быть ограничена O(g(n))
по определению:Я действительно путают о времени
T(n) is O(g(n)) iff there is a c > 0, n0 > 0, such that for all n >= n0:
для каждого входа размера n,
А принимает в большинстве c * g(n)
шагов. T(n)
- это время, которое является самым длинным из всех входов размера n.
Однако я не понимаю, является ли определение для Ω(g(n))
. Определение состоит в том, что для некоторый ввод размера n, A занимает не менее c * g(n)
шагов.
Но если это определение для Ω
, тогда я не могу найти нижнюю границу для любого альгорта, который совпадает с верхней границей? Например, если сортировка в худшем случае принимает O(nlogn)
, тогда я не смогу легко показать Ω(nlogn)
, а также посмотреть, как должен быть хотя бы один плохой ввод для любого размера n, который мог бы принимать nlogn
шагов? Предположим, что мы говорим о heapsort
. Я действительно не уверен, что мне здесь не хватает, потому что всякий раз, когда меня обучают новому алгоритму, время для определенного метода равно либо Ɵ(g(n)) or O(g(n))
, но и не объясняется, почему это либо Ɵ or O
.
Надеюсь, я сказал, что я был достаточно ясен, если не спрашиваю про то, что вы неправильно поняли. Мне действительно нужно, чтобы эта путаница прояснилась. Спасибо.
черт возьми! – FUD
Я работаю в индустрии программного обеспечения в течение 10 лет, и единственное, что когда-либо возникало, это O notation ... – Bill
Это определение «для некоторого ввода размера n» также учитывает Big-O, если i ты прав. Это в основном означает, что для небольшого числа n оно может быть выше/ниже ваших границ, обычно предполагается точка n_0, после которой она всегда будет правильной. Тем не менее, вам, вероятно, понадобятся только другие оценки во время учебы, Big-O - самый важный и тот, который вы увидите на протяжении всей своей жизни. – jorey