Grande-O: diferenças entre revisões

Origem: Wikipédia, a enciclopédia livre.
Conteúdo apagado Conteúdo adicionado
Retirada da repetição de "O(n^n) ordem exponencial", que ajuda na estética do texto
Linha 61: Linha 61:
|O(''n!'')
|O(''n!'')
|ordem [[fatorial]]
|ordem [[fatorial]]
|-
|O(''n''<sup>''n''</sup>)
|ordem exponencial
|}
|}



Revisão das 20h42min de 4 de março de 2015

A notação do Grande-O ou notação assintótica (ou como é conhecido em inglês, Big-O Notation, ou Big Omicron Notation) é uma notação matemática utilizada para analisar o comportamento assintótico de funções. Essa notação é bastante utilizada para a análise de algoritmos em ciência da computação.

A criação dessa notação é creditada ao matemático alemão Paul Bachmann, em 1894, na publicação da segunda versão da sua obra Analytische Zahlentheorie, sendo popularizada por outro alemão, Edmund Landau, e por causa disso, essa notação é também conhecida como "Símbolo de Landau". Essa notação é padronizada como "ordem de".

De um modo informal, dizemos que uma função pode ser representada como se ambas funções, para suficientemente grande, "crescem" da mesma forma, ou seja, são "proporcionais". Se é , então, para grande o suficiente, se num dado intervalo dobra, então "dobra" também (com erro pequeno), e vice-versa. Por exemplo, é .

Definição

Sejam duas funções reais f(x) e g(x). É definido:

A definição acima diz que a função f(x) é superiormente limitada pela função g(x).

Na definição foi utilizado f(x) = O(g(x)), mas é mais correto escrever f(x) é O(g(x)), ou f(x) ∈ O(g(x)), já que O(g(x)) define um conjunto de funções (ou classes de funções).

Para demonstrar que f(x) é O(g(x)), não basta encontrar dois números c e x0 tais que a definição acima seja satisfeita, já que podem existir funções que satisfaçam a condição referida apenas para alguns valores. As demonstrações são usualmente feitas por indução.

Exemplos

  • A função f(x) = 10x + 11 é O(x). Como exemplo, basta utilizar c = 12 e x0 = 10.
  • A função f(x) = x2 + 100 é O(x2). Como exemplo, basta utilizar c = 2 e x0 = 10.

Ordens mais comuns

Abaixo há uma lista de classes de funções que são bastante utilizadas para análise de algoritmos, por ordem crescente de crescimento de funções (as funções que têm um crescimento mais lento, são as primeiras). A letra c denota uma constante qualquer.

notação nome
O(1) ordem constante
O(log n) ordem logarítmica
O([log n]c) ordem poli-logarítmica
O(n) ordem linear
O(n · log n) ordem linear-logarítmica
O(n²) ordem quadrática
O(n³) ordem cúbica
O(nc) ordem polinomial
O(cn) ordem exponencial
O(n!) ordem fatorial

Propriedades

Soma

Ex.: Falhou a verificação gramatical (SVG (MathML pode ser ativado através de uma extensão do ''browser''): Resposta inválida ("Math extension cannot connect to Restbase.") do servidor "http://localhost:6011/pt.wikipedia.org/v1/":): {\displaystyle f(n) = 10 \log n + 5 (\log n)^3 + 7n + 3n^2 + 6n^3 \in \hbox{O}(n^3)} .

Produto

Multiplicação por uma constante

, desde que k≠0