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).

Karo
fonte

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.

Yuval Filmus
fonte
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