Как добавить Big O и Big Omega

Если алгоритм имеет два подалгоритма, то в лучшем случае для подалгоритма A1 для данного входа это худший случай для подалгоритма A2. Как я могу найти общую сложность алгоритма? Просто я имею в виду Ω(N) + O(N)=? Я знаю, что если алгоритмы находятся в последовательном порядке выполнения, общая сложность составляет O (N) + O (N) и во вложенном порядке O (N) * O (N).

Подскажите пожалуйста в обоих случаях, когда в последовательном и во вложенном порядке


person Mobi    schedule 23.09.2012    source источник
comment
Трудно сказать, в чем ваш вопрос.   -  person barak1412    schedule 23.09.2012
comment
Лучший случай и худший случай отличаются от больших O и больших Omega. Лучший случай/худший случай/средний случай - это анализ алгоритмов. Результатом анализа является функция. большая О и большая Омега — это наборы функций. Каждая из больших O/больших омег/больших тета может быть применена к каждому анализу наилучшего/наихудшего/среднего случая. Я попытался объяснить эту проблему среди других, отвечая на этот вопрос   -  person amit    schedule 23.09.2012
comment
Просто, как добавить сложности во время выполнения двух алгоритмов? Когда у одного сложность большая О, а у другого большая омега? Ω() + O()=?   -  person Mobi    schedule 23.09.2012


Ответы (2)


По существу Ω(N) + O(N)= Ω(N). Потому что O(N) означает более низкий (или самое большее тот же) порядок Ω(N). При их суммировании нижний порядок можно опустить.

person Zhuo    schedule 23.09.2012
comment
Что такое оператор + для наборов? Омега и О — это наборы функций, что такое SET + SET? Я не знаком со стандартным определением для него: | - person amit; 23.09.2012
comment
Это небольшое злоупотребление обозначениями. Ω(N) + O(N) = Ω(N) означает, что если функция f в Ω(N), а g в O(N), то f+g в Ω(N). - person Zhuo; 23.09.2012

Если ваш алгоритм включает одну операцию, которая занимает, например, O(N) времени, а другую — O(N^2), то общая сложность равна O(N^2). Нет такой вещи, как O(N^2 + N). То же самое касается Ω(). Это отвечает на ваш вопрос о «порядке последовательного выполнения».

Если ваш алгоритм включает N операций, каждая из которых занимает O(N) времени, то общая сложность будет O(N^2). То же самое касается Ω(). Вы просто умножаете многочлены и берете член, который быстрее всего растет с увеличением N. Это отвечает на ваш вопрос о «вложенном порядке выполнения».

person Alex D    schedule 23.09.2012
comment
Если более образованные читатели найдут в этом посте что-то неверное, пожалуйста, поправьте меня! - person Alex D; 23.09.2012
comment
O(N^2+N) существует как набор, но O(N^2+N)=O(N) - person Kwariz; 23.09.2012