Чтобы доказать, что ваше выражение O(n^2)
, вы должны показать, что она ограничена M*n^2
для некоторой постоянной M
и некоторого минимального значения n
. По инспекции, мы можем показать, что ваше выражение ограничено 10*n^2
для n=10
:
Для n = 10
:
5n^2 + 2n -1 <= 10*n^2
500 + 20 - 1 <= 1000
519 <= 1000
Мы можем также показать, что выражение ограничено 10*n^2
для любого значения n
больше чем 10:
Для n > 10
:
5n^2 + 2n -1 <= 10*n^2
5*(10+i)^2 + 2*(10+i) -1 <= 10*(10+i)^2
5*(i^2 + 20i + 100) + 2i + 19 <= 10*(i^2 + 20i + 100)
2i + 19 <= 5*(i^2 + 20i + 100)
2i + 19 <= 5i^2 + 100i + 500
5i^2 + 98i + 481 >= 0, which is true for `i > 0`
Вот ссылка на статью Википедии о Big-O нотации:
https://en.m.wikipedia.org/wiki/Big_O_notation
Update:
Обратите внимание, что на практике для того, чтобы обозначить ваше выражение O(n^2)
мы выиграли» Прибегать к таким уродливым письменным доказательствам. Вместо этого мы просто узнаем, что термин n^2
будет доминировать над выражением для больших n
и что общее поведение будет O(n^2)
. И ваше выражение также O(n^3)
(и O(n^4)
и т. Д.).
Первая строка не нужна (и на самом деле не правильно) – Henry
Большое спасибо! Еще один вопрос: доказать, что 5n^2 + 2n -1 = O (n^3). Стало бы это ложным? –
Обратите внимание, что c = 6, а не 6n^2 – BlackBear