Доказательство и опровержение BigO

В доказательстве и опровержении Больших вопросов O, который, поскольку, которые явно говорят, используют определение, чтобы доказать и опровергнуть, мой вопрос, является тем, что я делаю корректный?

Например, у Вас есть вопрос, который является g (n) = O (f (n))... Для доказательства его, я делал следующее

g(n) <= C(F(n))
g(n)/F(n) <= C .. then give n=1 and solve for C , which proves it.

Противоречие, к которому я работаю при выполнении этого, - когда я приближаюсь к вопросу опровержения этого материала

например,

g (n) =O (F (n)) для опровержения его я сделал бы

g (n)> = C (F (n)) и решают для C снова. Однако это приводит меня полагать, что большой O может быть доказан и опровергнут сразу? который составляет 100% неправильно.

Используя числа реального мира (Доказательство)

n^2 + 3 = O(n^2)
(n^2 + 3)/n^2  <= C  assume n = 1 then C >= 3

Disproving

n^2 + 3 = O(n^2)


(n^2 + 3)/n^2  >= C  assume n = 1 then C <= 3

n^2 + 3 = O(n^2)

оба из них говорят, что n =1 и c = 3 алгоритм является O (n^2) и НЕ является O (n^2).

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

8
задан Bill the Lizard 19 September 2012 в 16:25
поделиться

1 ответ

Деке - это двойная очередь, которая позволяет легко вставлять/удалять с любого конца. Очереди разрешают только вставку в одном конце и извлечение из другого.

-121--891481-

deque поддерживает вставку/выскальзывание с задней стороны и очередь

поддерживает только вставку с задней стороны и выскальзывание с передней стороны. Вы знаете, FIFO (первый в первом выходе).

-121--891482-

Ни одна из ваших методик не работает. Начнем с определения big-O:

f - O (g) iff существует C, N так, что | f (x) | ≤ C | g (x) | для всех x ≥ N

Чтобы доказать, что «существуют» операторы типа, вы должны показать, что вещи существуют. В случае больших доказательств, вы обычно находите вещи, хотя доказательства существования, как правило, не должны быть конструктивными . Чтобы построить доказательство для заявления «для всех», сделайте вид, что кто-то просто передал вам конкретные ценности. Будьте осторожны и не делайте неявных предположений об их свойствах (можно явно определить свойства, например, N > 0).

В случае подтверждения большого вывода необходимо найти C и N . Отображение | g (n) | ≤ C 'F (n) | для одного n недостаточно.

Для примера «n 2 + 3 - это O (n 2 )»:

 For n ≥ 2, we have: 
    n2 ≥ 4 > 3
      ⇒ n2-1 > 2
      ⇒ 2(n2-1) > (n2-1)+2
      ⇒ 2n2 > (n2-1)+4 = n2+3
 Thus n2+3 is O(n2) for C=2, N=2.

Для опровержения берем отрицание утверждения: показать, что нет C или N . Другими словами, показать, что для всех C и N существует n > N, такое что | f (n) | > C | g (n) |. В этом случае C и N квалифицируются как «для всех», поэтому делайте вид, что они были даны вам. Поскольку n квалифицирован как «существует», необходимо найти его. Здесь вы начинаете с уравнения вы хотите доказать и работать назад, пока вы не найдете подходящий n .

Предположим, что мы хотим доказать, что n не является O (ln n). Представьте, что нам даны N и C, и нам нужно найти n ≥ N так, что n > C ln n.

For all whole numbers C, N, let M=1+max(N, C) and n = eM. Note n > N > 0 and M > 0.
Thus n = eM > M2 = M ln eM = M ln n > C ln n. QED.

Доказательства x > 0 ⇒ e x > x 2 и «n не является O (ln n)» ⇒ «n не является O (регистрация b n)», оставшимся как упражнения.

11
ответ дан 5 December 2019 в 15:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: