Análise e Técnicas de Algoritmos

Análise de Algoritmos


Análise de Algoritmos

Introdução

Análise Assintótica

Big Oh

\begin{figure}\epsffile{bigoh.eps}\end{figure}

Big Omega

\begin{figure}\epsffile{bigomega.eps}\end{figure}

Big Theta

\begin{figure}\epsffile{bigtheta.eps}\end{figure}

Taxas de Crescimento Mais Comuns


Função Nome
$1$ constante
$log$ $n$ logaritmico
$log^2$ $n$ log-quadrático
$n$ linear
$n$ $log$ $n$ $n$ $log$ $n$
$n^2$ quadrático
$n^3$ cúbico
$2^n$ exponencial

Complexidade de Tempo

Análise de Algoritmos Simples

Exemplo: Algoritmo para calcular $x^n$


\begin{algorithmic}
\STATE {\bf potencia1(x, n)}
\STATE $\rhd$\ computa $x^n; n...
...$ \STATE $i \leftarrow i - 1$\ENDWHILE
\STATE return $y$\STATE
\end{algorithmic}

Com relação a análise assintótica de algoritmos temos que fazer algumas considerações:


Funções de Complexidade Tamanho da Entrada $n$

10 20 30 40 50 60
$n$ .00001 seg .00002 seg .00003 seg .00004 seg .00005 seg .00006 seg
$n^2$ .0001 seg .0004 seg .0009 seg .0016 seg .0025 seg .0036 seg
$n^3$ .001 seg .008 seg .027 seg .064 seg .125 seg .216 seg
$n^5$ .1 seg 3.2 seg 24.3 seg 1.7 min 5.2 min 13.0 min
$2^n$ .001 seg 1.0 seg 17.9 min 12.7 dias 35.7 anos 366 sec.
$3^n$ .059 seg 58 min 6.5 anos 3855 sec. $2x10^8$ sec. $1.3x10^13$ sec.

Algumas Dicas de Análise



Jorge C. A. de Figueiredo 2003-05-08