Big O для наихудшего времени работы и Ω для лучшего случая, но почему Ω иногда используется в худшем случае?

Я запутался, я думал, что вы используете Big O для наихудшего времени работы, а Ω-в лучшем случае? Кто-нибудь может объяснить?

и не является ли (lg n) лучшим случаем? и (nlg n) является худшим случаем? Или я что-то неправильно понял?

показать, что в худшем случае время работы Max-Heapify на куче размера n-Ω (lg n). (Подсказка: для кучи с n узлами дайте значения узлов, которые причина Max-Heapify вызывается рекурсивно на каждом узле пути от корня до листа.)

Edit: нет, это не домашнее задание. im практикует, и это имеет ключ ответа купить im смущен. http://www-scf.usc.edu / ~csci303 / cs303hw4solutions.pdf Задача 4 (6.2 - 6)

Edit 2: Итак, я неправильно понял вопрос не о больших O и Ω?

3 ответов


важно проводить различие между случаем и границей.

лучшие, средние и худшие общие делам интерес при анализе алгоритмов.

верхний (O, o) и Нижний (Omega, omega), наряду с тета, являются общими границы on функции.

когда мы говорим, что" сложность алгоритма X в худшем случае равна o(n)", мы говорим, что функция, представляющая производительность алгоритма X, когда мы ограничиваем входные данные входы наихудшего случая асимптотически ограничены сверху некоторой линейной функцией. Вы можете говорить о нижней границе наихудшего входа; или о верхней или нижней границе среднего или лучшего поведения.

случае != Связанный. Тем не менее, "верхний на худшем" и "нижний на лучшем" - довольно разумные метрики... они обеспечивают абсолютные границы производительности алгоритма. Это не значит, что мы не можем говорить о других показателях.

Edit, чтобы ответить на ваше обновление вопрос:

вопрос просит вас показать, что Omega (lg n) является нижняя граница на в худшем случае поведение. Другими словами, когда этот алгоритм выполняет столько работы, сколько он может сделать для класса входных данных, объем работы растет по крайней мере так же быстро, как (lg n), асимптотически. Таким образом, ваши шаги следующие: (1) Определите худший случай для алгоритма; (2) Найдите нижнюю границу для выполнения алгоритма на входах, принадлежащих худшему случай.

вот пример как это будет выглядеть для линейного поиска:

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

важно отметить: для многих алгоритмов сложность для большинства случаев будет ограничена сверху и ниже по общему набору функций. Это очень распространено для тета-применения. Так что вполне возможно, что вы не получите другого ответа для Омеги, чем для О, в любом случае.


на самом деле вы используете Big O для функции, которая растет быстрее, чем ваша наихудшая сложность, и Ω для функции, которая растет медленнее, чем ваша наихудшая сложность.

Итак, здесь вас просят доказать, что ваша наихудшая сложность хуже, чем lg(n).


O-верхний предел (i.e, в худшем случае) Ω-нижний предел (т. е., в лучшем случае)

пример говорит о том, что в худшем входе для max-heapify ( я думаю, что худший вход-это вход с обратным порядком) сложность времени выполнения должна быть (по крайней мере) lg n . Следовательно, Ω (lg n), так как это нижний предел сложности выполнения.