Qual é o Big O de T (n)?


7

Eu tenho uma lição de casa que eu deveria encontrar a fórmula e a ordem de T(n) dado por

T(1)=1T(n)=T(n1)T(n1)+1.

Eu estabeleci que T(n)=1nmas agora estou um pouco confuso. ÉT(n)O(1n) a resposta correta para a segunda parte?

Com base na definição de big-O, temos que

O(g(n))={f(n)c,n0>0 s.t. 0f(n)cg(n) for all nn0}.

Isso vale para f(n)=g(n)=1n então, com base na definição, O(1n) deve estar correto, mas, no mundo real, é impossível que o algoritmo seja mais rápido do que O(1).

Respostas:


8

Sim, todas as funções f(n) satisfazer f(n)O(f(n)). As definições são significativas mesmo quef(n)não é o tempo de execução de nenhuma função. De fato, essa notação vem da teoria dos números, ondef(n)geralmente é algum termo de erro. Mesmo na ciência da computação, às vezes grandes notações de O são usadas ao analisar algoritmos para algo que não seja um tempo de execução ou requisitos de espaço.


Parece que a diferença é que T(n) cresce com 1n Como n aumenta, mas o número de operações para calcular T(n) é O(1) se você simplificar T(n) para T(n)=1n ou O(n2)se você usar a definição fornecida no problema de lição de casa diretamente.
24414 Kevin

11
@ Kevin A pergunta não diz nada sobre o número de operações necessárias para calcular qualquer coisa: apenas pede a solução para uma relação de recorrência. As soluções para recorrências não precisam ter tempos de execução para algoritmos, assim como os números não precisam ter comprimentos ou pesos.
David Richerby
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.