O quer claramente não é possível para n0>2, uma vez que n! (e por consequência (n−2)!) é sempre crescente, e não pode ser limita por uma constante.
Resolução de exercícios
Ordene as funções a seguir em ordem crescente de taxa de crescimento:
T1T2T3T4=2n=n3/2=nlogn=nlogn
Resolução de exercícios
Afirmação 1: T3 é (assintoticamente) a menor delas, pois nenhuma delas é O(T3)
T2 não é O(T3). Vamos assumir que é, então n3/2nlognn3/2lognn≤cnlogn≤c≤c
n é maior que logn para n grande (limn→∞lognnp=∞,∀p>0 ), portanto não é possível ser limitada por uma constante
Resolução de exercícios
Afirmação 1: T3 é (assintoticamente) a menor delas, pois nenhuma delas é O(T3)
T4 não é O(T3). Vamos assumir que é, então nlognnlognnlognlognnlogn−1≤cnlogn≤c≤c
nlogn−1 é maior que logn para n grande, portanto não é possível ser limitada por uma constante
Resolução de exercícios
Afirmação 1: T3 é (assintoticamente) a menor delas, pois nenhuma delas é O(T3)
T1 não é O(T3). Vamos assumir que é, então 2nnlogn2n≤cnlogn≤c
2n é maior que nlogn para n grande, portanto não é possível ser limitada por uma constante
Resolução de exercícios
Afirmação 2: A segunda (assintoticamente) menor é T2, pois T4 e T1 não são O(T2)
T4 não é O(T2). Vamos assumir que é, então nlognn3/2nlognnlogn−3/2≤cn3/2≤c≤c
que não é possível ser limitada por uma constante
Resolução de exercícios
Afirmação 2: A segunda (assintoticamente) menor é T2, pois T4 e T1 não são O(T2)
T1 não é O(T2). Vamos assumir que é, então 2nn3/22nn−23logn≤cn3/2≤c≤logc
que não é possível ser limitada por uma constante
Resolução de exercícios
Afirmação3: T4 é (assintoticamente) menor que T1, pois T1 não é O(T4). Vamos assumir que é, então 2nnlogn2nn−lognlogn≤cnlogn≤c≤logc
Observe que lognlogn é menor que nn=n, então n cresce mais rápido que lognlogn, e não é possível limitar por uma constante
Resolução de exercícios
Juntanto as afirmações 1, 2 e 3 temos que (assintoticamente):
T3<T2<T4<T1
Árvore de recursão
Árvore de recursão é um método muito útil para estimar a solução de uma recorrência
Uma vez obtida a estimativa, podemos usar o método da substituição para prová-la
A ideia consiste em representar o desenvolvimento da recorrência por meio de um diagrama (geralmente uma árvore), em que cada nó representa um subproblema, e somar os custos por nível
Árvore de recursão
Considere por exemplo a relação de recorrência
T(n)=2T(n/2)+Θ(n)
T(n)=t=0∑lognn=nlogn+n=Θ(nlogn)
Árvore de recursão
Considere por exemplo a relação de recorrência
T(n)=T(n/2)+Θ(n)
T(n)=t=0∑logn2tn=2n−1=Θ(n)
Árvore de recursão
Considere por exemplo a relação de recorrência
T(n)=4T(n/2)+Θ(n)
T(n)=t=0∑logn4t2tn=nt=0∑logn2t=n(2n−1)=Θ(n2)
Método Mestre (simplificado)
O método mestre provê uma fórmula que pode ser aplicada a equações de recorrência do tipo: T(n)=aT(bn)+Θ(nd)
em que:
a é o número de suproblemas
b fator em que o tamanho da entrada diminui
d é necessário fazer nd trabalho adicional para criar os subproblemas e combinar as soluções
Método Mestre (simplificado)
Seja: T(n)=aT(bn)+Θ(nd)
Então T(n)=⎩⎨⎧Θ(ndlog(n))Θ(nd)Θ(nlogb(a)) se a=bd se a<bd se a>bd
Método Mestre (simplificado)
T(n)=aT(bn)+Θ(nd)
Método Mestre (simplificado)
O número de computção no nível t é (no máixmo):
at⋅c⋅(btn)d=c⋅nd⋅(bda)t
Em que:
at: número de subproblemas no nível t
(btn): tamanho de cada suproblema
c(btn)d: a quatidade de trabalho para cada subproblema
Método Mestre (simplificado)
Somando sobre todos os níveis temos que o total de trabalho é (no máximo):