Может кто-нибудь объяснить мне, почему это правда. Я слышал, как профессор упомянул об этом его лекции.Анализ худшего случая не равен асимптотическим границам
ответ
Два понятия ортогональны.
У вас может быть наихудший случай асимптотики. Если f(n)
обозначает наихудшее время, затраченное данным алгоритмом с вводом n
, вы можете иметь, например. f(n) = O(n^3)
или другие асимптотические верхние границы наихудшей временной сложности.
Аналогичным образом, вы можете иметь g(n) = O(n^2 log n)
, где g(n)
- среднее время, затраченное на тот же алгоритм с (скажем) равномерно распределенными (случайными) входами размера n
.
Или вы можете иметь h(n) = O(n)
где h(n)
среднее время, затрачиваемое одним и тем же алгоритм с особенно распределенными случайными входами размера n
(например, почти отсортированными последовательностями для алгоритма сортировки).
Асимптотические обозначения - это «мера». Вы должны указать, что вы хотите сосчитать: наихудший случай, лучший случай, средний и т. Д.
Иногда вас интересует сообщение асимптотические нижние границы (скажем) сложность наихудшего случая.Затем вы пишете f(n) = Omega(n^2)
, чтобы заявить, что в худшем случае сложность не менееn^2
. Обозначение с большой омегой противоположно большому-O: f = Omega(g)
тогда и только тогда, когда g = O(f)
.
Асимптотическая оценка - ожидаемое поведение по мере того, как число операций переходит в бесконечность. Математически это так, что lim, когда n уходит в бесконечность. Однако наихудшее поведение применимо к конечному числу операций.
Для примера возьмите quicksort. Каждый последующий рекурсивный вызов п сортировки имеет время выполнения сложности Т (п)
Т (п) = O (N) + 2 T [(п-1)/2]
в ' наилучший случай ", если несортированный входной список разбит на два равных подсписок размера (n-1)/2 в каждом вызове. Решение для T (n) дает O (n log n), в этом случае. Если раздел не является совершенным, и два подсписки не равного размера п, т.е.
Т (п) = О (п) + Т (к) + Т (п - 1 - к),
, мы все равно получаем O (n log n), даже если k = 1, только с большим постоянным множителем. Это связано с тем, что количество рекурсивных вызовов quicksort растет экспоненциально при обработке списка ввода до тех пор, пока k> 0.
Тем не менее, в 'худшем случае' нет разделения входного списка имеет место, то есть:
Т (п) = О (п) + T (0) + T (п - 1) = О (n) + O (n-1) + T (n-1) + T (n-2) ....
Это происходит, например, если мы возьмем первый элемент отсортированного списка в качестве сводного элемента.
Здесь T (0) означает, что один из результирующих подвычислителей равен нулю и, следовательно, не занимает вычислительного времени (так как подвыбор имеет нулевые элементы). Вся оставшаяся нагрузка T (n-1) необходима для второго подсписка. В этом случае получаем O (n²).
Если алгоритм не имеет сценария наихудшего случая, это будет не только O [f (n)], но также o [f (n)] (Big-O vs. little-o notation).
Ваше последнее предложение просто неправильно. 'O' и' o' полностью не связаны с тем, рассматриваете ли вы наихудшее время выполнения алгоритма. Я не уверен, что вы понимаете, что мало значит «o» (я думаю, вы сбиваете с толку «Θ», что также не связано с худшей ситуацией, но говорит вам, есть ли у вас «самая жесткая» привязка). Например, время, затрачиваемое на повторение с помощью массива длины 'n', находится в' O (n) 'и' Θ (n) ', но не в' o (n) '. – sepp2k
Да, я думаю, я смутил его с \ Theta - и, да, со второй мыслью, это тоже не связано. Но, во всяком случае, как сказано в ответе, O-нотация является всего лишь мерой и не указывает, что измеряется. Это гораздо более строгие объяснения. – GK80
- 1. Сложность худшего случая ниже кода
- 2. Пример немонотонной сложности худшего случая
- 3. Использование худшего/avg/наилучшего случая для асимптотического анализа
- 4. Большая временная сложность худшего случая быстрая сортировка?
- 5. Как найти формулу наилучшего случая и худшего случая моего алгоритма?
- 6. О сценариях худшего случая в двоичном поиске
- 7. Совет для худшего случая реализации быстрой сортировки
- 8. Как рассчитать сложность худшего случая для функции?
- 9. Лучший анализ случая, алгоритм с вложенными петлями
- 10. Нижняя граница времени работы этого Алгоритм Построения для худшего случая
- 11. Понимание быстрого алгоритма сортировки и его худшего случая
- 12. Как определить сложность худшего случая для моего алгоритма?
- 13. Пример алгоритма, который имеет верхнюю границу наихудшего случая, нижнюю границу наихудшего случая и оценки наилучшего случая?
- 14. Анализ алгоритмов: почему средний анализ случая зависит от вероятности и распределения входов
- 15. Доказательство худшего времени работы QuickSort
- 16. Является асимптотическим порядком log (n^2) больше или равен log (5n)
- 17. Спрайты не соответствуют границам правильно
- 18. Оптимизация худшего случая Сложность времени для O (1) для python dicts
- 19. Quicksort без функции и сложности раздела для худшего и лучшего случая
- 20. Поиск худшего времени выполнения функции
- 21. Как сделать анализ случая по длине списка в Coq?
- 22. Анализ случая Coq и переписывание с функцией, возвращающей типы подмножеств
- 23. Выведенный тип не соответствует верхним границам
- 24. Выведенный тип не соответствует верхним границам (-ам)?
- 25. Выражение LINQ, не подчиняющееся границам xml
- 26. Выведенный тип не соответствует заявленным границам
- 27. Почему Big oh (O) также используется для представления среднего случая и наилучшего случая в алгоритме?
- 28. Объект C# равен int не равен true
- 29. Ограничить карту по определенным границам?
- 30. Анализ текста JSON в текстовом поле (мой результат равен NULL)
Держу пари, что вы не знали, что для этого есть другой сайт. Это называется http://cstheory.stackexchange.com/, и все там задают вопросы так же, как и ваши! –
@Elijah: Это очень сомнительное утверждение, поскольку вопросы, подобные этому, не относятся к теме. По-видимому, вы не рассматривали вопросы, заданные на cstheory, и не читали его часто задаваемые вопросы, в которых четко указано, что сайт предназначен только для вопросов уровня исследования. – sepp2k
Ну, этот конкретный вопрос немного выключен, вы правы. –