You are on page 1of 26

Complexidade de

Algoritmos
DAS 5102 Fundamentos da Estrutura da Informao
Prof. Dr. rer. nat. Daniel D. Abdala
abdala@das.ufsc.br

Objetivos
Introduzir

o conceito de anlise
de algoritmos;
Introduzir o conceito de
complexidade assinttica;
Explicar via exemplos como
medir a complexidade de
algoritmos;
Explicar o conceito de
complexidade mdia de melhor e
de pior caso.

Plano de Aula
Algoritmos
Anlise

de Algoritmos
Conceitos Bsicos
Complexidade no Tempo e no
Espao
Notao Assinttica

Conceitos Bsicos
Algoritmos
Algoritmo

Ferramenta para
resoluo de problemas.
Problemas so descritos via:
Uma descrio de todos os seus
parmetros de entrada (INPUT)
Um enunciado sobre que
propriedades a soluo deve
satisfazer

Conceitos Bsicos
Algoritmos

Exemplo : Problema de Ordenao


Entrada : Seqncia L (a1, ..., aN)
Sada
: L (a1, ..., aN) que uma
permutao
da entrada tal que
a1 a2 ... aN
Um

Algoritmo dito CORRETO se para


todas as possveis entradas ele
termina com a respos-ta correta.

Algoritmos Eficiente Motivao


Dois

computadores

PC (106 instr/s)
SC (108 instr/s)
Dois

algoritmos de ordenao

Alg1 TAlg1 = 2N2


Alg2 TAlg2 = 50NlogN
Problema
SC
PC

: Ordenar 106 nmeros

2 (10 ) instr
20 103 s 5.56horas
8
10 instr / s

50 (106 ) log(106 )instr


103 s 16.57 min
6
10 instr / s

6 2

Anlise de Algoritmos
Anlise

de algoritmos uma disciplina da


computa-o que se preocupa em medir
e analisar os recur-sos necessrios por
algoritmos para levar a termo sua
execuo.

Complexidade no Tempo e no
Espao (N)
Espacial

mede a quantidade de memria


que o algoritmo requer para sua execuo
Temporal mede o tempo, dada uma
entrada de dados, que o algoritmo requer
para produzir uma resposta (mais usado)
As medidas de anlise utilizadas devem
conter as seguintes caractersticas:
Ser independentes da tecnologia empregada
(hardware e software);
Modelo matemtico simplificado que
representa os fatores mais relevantes;

Complexidade no Tempo e no
Espao (N)
Temporal

funo que relaciona o


tamanho da entrada com o tempo
de execuo:
t = f(N)
Espacial funo que relaciona o
tamanho da entrada com o espao
de armazenamento requerido:
e = g(N)

Exemplo: Ordenao de
Inteiros

Exemplo: Ordenao de
Inteiros

Exemplo: Ordenao de
Inteiros

Exemplo: Ordenao de
Inteiros

Consideraes
Sempre

que criamos um algoritmo,


existem trs perguntas que devem ser
formuladas:
1. O algoritmo correto?
2. Quanto tempo ele leva em funo da entrada
N?
3. O problema pode ser resolvido de uma
maneira melhor?

Notao Assinttica
Tambm

conhecida com notao O

(diz-se big O)
Definio:

Considere uma funo f(n) no negativa


para todos n>=0. Diz-se que f(n) O(g(n))
e escrevemos f(n) = O(g(n)), se existem
um inteiro n0 e uma cons-tante c>0, tais
que para todo inteiro m>=n0, f(n) < c g(n).
Em

resumo: Podemos ignorar as


constantes!

Classes de Complexidade
Designao
Constante
Logartmica
Logartmica
quadrtica
Linear
N log N
Quadrtica
Cbica
Exponencial

Funo
c
log N
log2N
N
N log N
N2
N3
2N

Exemplo: Tempo de
execuo
Considere

a seguinte situao. O problema


apresentado a seguir foi resolvido de cinco
maneiras diferentes, resultando em cinco
algoritmos (A1 ... A5).
Tais algoritmos foram implementados
utilizando diferentes nveis de complexidade
computacional. Supondo que uma operao
leva 1ms para ser executado, e dado Tk(n)
sendo a complexidade, ou seja, o nmero de
operaes que o algoritmo efetua para N
entradas.
Quais sero os tempos de execuo de cada
um destes algoritmos?

Exemplo: Tempo de
execuo
N

A1
T1(n) = n

0.001s

A2
T2(n) = n
log n
0.016

16

0.016s

32
512

A3
T3(n)=n2

A4
T4(n)= n3

A5
T(n)=2n

0.064s

0.256s

4s

0.064s

0.256s

4s

1m4s

0.032s

0.16s

1.0s

33s

0.512s

9.0s

4m22s

1dia13h

46 dias
10137
sculos

Tempo de execuo em funo do tamanho da entrada

Exemplo
Entrada

: nmero N
Sada : nmero r representando a
soma dos N primeiros inteiros.

Exemplo: Fibonacci
A

srie tem a seguinte forma:

funo F(N) definida por:

Implementao recursiva
(exponencial):

Exemplo: Fibonacci
1. O algoritmo correto?
2. Quanto tempo ele leva em funo da entrada N?
3. O problema pode ser resolvido de uma maneira
melhor?

(1)

sim! Ele a implementao direta


da definio
(2) T(n) nmero de passos
computacionais
.Para n 2
.Para n > 2
Note

que

Exemplo: Fibonacci
Quo

demorada a execuo do
algoritmo?
Fn 20,694n
F200 > T(200) F200 2138 passos
computacionais
SC > 40.1012 passos computacionais /
segundo
fib1(200) @ SC = 292 segundos

(3)

Existe uma maneira de se


calcular nmeros da srie de

Exemplo: Fibonacci

Chamadas recursivas de
fib1(n)

Pontos Chave
Algoritmos

so maneiras factveis para soluo de


problemas numricos, no entanto eles precisam ser
analisados de modo a garantir sua eficcia;
Anlise de Algoritmos uma disciplina que define
uma maneira sistemtica de avaliao de
algoritimos;
Complexidade no Tempo e no Espao definem
formas de estimarmos quanto tempo um programa
demora para se executar em funo de sua entrada
assim como quanto espao em disco ele requer;
Notao Assinttica ou notao BigO uma forma
de indicar a tendncia de crescimento do tempo de
execuo de algoritmos.

Para o Lar
ltima

chance para entregar o


exerccio de nivelamento dia
08/09 (prova 1)!;
Ler o captulo 0 (prlogo) do livro
Algorithms (Dasgupta) para a
prova;
Procure na internet uma forma
mais eficiente de calcular
nmeros fatoriais;
Procure na internet uma forma

Bibliografia
S.

Dasgupta, C. H. Papadimitriou, U. V.
Vazirani. Algorithms, Chap. 0;
R. Sedgewick, Addison-Wesley. Algorithms in
C, Parts 1-4: Fundamentals, Data Structures,
Sorting, Searching, 3rd edition, 1997.

You might also like