Uma introdução à teoria da notação Big-O

Uma introdução à teoria da notação Big-O

1. Introdução

Neste artigo, daremos umintroduction to the mathematics of big-O notation, as well as show an example of a big-O proof.

2. Definição formal

Definition:f(x) = O(g(x)) significa que existem duas constantes positivas,x1ec, tais que0 ≤ f(x) ≤ cg(x) para todos osx ≥ x1.

3. A primeira constante positiva:x1

Ao dizerf(x) = O(g(x)), dizemosf of x is big-O g of x“.

Não se deixe enganar pelo sinal de igual:f(x) é uma função eO(g(x)) é um conjunto. Você não pode ter uma função igualando um conjunto. É como dizer que a Terra é igual ao Sistema Solar. É mais parecido com abelongs da Terra (o conjunto de planetas que compõem) o Sistema Solar. Da mesma forma,f(x) belongs in a set of functions called O(g(x)) (big-Og dex).

Temos duas funções agora -f(x)eg(x). Funçõesgrow at different speeds. Por exemplo, uma função quadrática crescerá mais rápido do que uma função linear. Massometimes, it takes some time for the quadratic to catch up!

Por exemplo, se tivermosa(x) = 2x2 + 2x + 1 eb(x) = 10x, teremosa(1) = 5eb(1) = 10. Mas digamos que agora escolhemosx = 15. Agora temosa(15) = 450 + 30 + 1 = 481eb(x) = 150. Além disso,for any value greater than x = 15, say x = 20, a(x) will be bigger than b(x). (agora é um bom momento para se referir à definição formal; esta é a partex ≥ x1).

É importante para o caso de entender big-O formalmente,we don’t particularly care at which point a(x) began outgrowing b(x). Apenas que sim, e daquele ponto em diante, continua a ser maior do queb(x).

4. A segunda constante positiva:c

Vimos acima como demorou um pouco paraa(x) alcançarb(x). Eventualmente, isso aconteceu, mas demorou um pouco.

A razão pela qual ele eventualmente cresce mais rápido é por causa do estermo2x2 . Ou, mais precisamente, a partex2 dele. This tells us that a(x) = O(x2). Usando os símbolos da definição original:f(x) = a(x)eg(x) = x2.

Para big-O, não nos importamos com os outros termos ema(x), ou a constante2 no termo2x2.

Olhando novamente para nossa definição da seção 2, é aqui que entra a constantec. We can scale g(x) by any positive constant - desde quef(x) permaneça menor do que a versão em escala (após um certo ponto,x ≥ x1).

Se tomarmosd(x) = 3x3 + 2x + 10,, precisaremos encontrar os valores decex1, de modo qued(x) ≤ cx3 para todos os valores maiores quex1. Isso é exatamente o que nós fazer na seção 4.

5. Juntando as peças

Para provarf(x) = O(g(x)), precisamos encontrar duas constantes positivas,cex1, tais que0 ≤ f(x) ≤ cg(x) para todos osx ≥ x1. We need to find values for c and x1 such that the inequality holds.

O que significa é que após um certo ponto, uma versão em escala deg(x) sempre será maior do quef(x).

6. Exemplo

Seja d(x) = 3x3 + 2x + 10.

Suponha que desejamos provar que d(x) = O(x3). Isso significa que precisamos encontrar dois inteiros positivos,cex1, de modo que0 ≤ d(x) ≤ cx3  para todos osx ≥ x1.

Bem, sabemos que d(x) = 3x3 + 2x + 10 ≤ 3x3 + 2x3 + 10x3 = 15x3

so,

d(x) ≤ 15x3.

Portanto, se definirmosx1 = 1 andc = 15, then, teremos isso para qualquerx ≥ x1, 0 ≤ d(x) ≤ cx3. Portanto,d(x) = O(x3).

Poderíamos ter encontrado outros valores parax1ec que satisfaçam a condição acima. Tudo o que importa é quethere exist values of x1 and c which satisfy the condition.

7. Conclusão

Neste artigo, nos concentramos em umintroduction to the theory of big-O notation.

Uma visão mais prática deste tópico pode serfound here.