next up previous
Next: Sort1 Up: Apresente a compliexidade de Previous: Pesquisa(n)

Fib

Vamos inicialmente ver a condição inicial dessa recursão

\begin{eqnarray*}
T\left( 0\right) & = & 1\\
T\left( 1\right) & = & 1
\end{eqnarray*}



Para \( n \) qualquer, a expressão de tempo desse algoritmo fica


\begin{displaymath}
T\left( n\right) =T\left( n-1\right) +T\left( n-2\right) \end{displaymath}

Ora, a expressão acima é a função de recorrência que devolve o \( n \)-ésimo numero de Fibonacci. Logo, a complexidade de tempo desse algoritmo será, para uma entrada \( k \), o valor do \( k \)-ésimo número de Fibonacci, cujo valor é dado pela fórmula:


\begin{displaymath}
F_{n}=\frac{1}{\sqrt{5}}\left( \phi ^{n}-\hat{\phi }^{n}\right) \end{displaymath}

Ou, arredondando para o inteiro mais próximo:

\begin{eqnarray*}
F_{n} & = & \left\lfloor \frac{\phi ^{n}}{\sqrt{5}}+\frac{1}{2}\right\rfloor \\
& = & \frac{\phi ^{n}}{\sqrt{5}}
\end{eqnarray*}



Onde \( \phi =\frac{\left( 1+\sqrt{5}\right) }{2} \)

A demonstração completa da obtenção de \( F_{n} \) pode ser obtida em[3, p.212-219]

Finalmente, para fechar esse item, seria bom resaltar que \( T\left( n\right) =O\left( 2^{n}\right) \)



Tiago Macambira 2003-05-23