Documente Academic
Documente Profesional
Documente Cultură
Filipe Santos
ALGORITMOS E COMPLEXIDADE
COMPLEXIDADE DE ALGORITMOS E
PROBLEMAS
Algoritmos e Complexidade
Filipe Santos
Plano
Eficincia de algoritmos. Eficincia no melhor caso, pior caso
e em mdia. Ordem de complexidade. Melhoramentos de
pequena e grande magnitude na eficincia de algoritmos.
Exemplos de diferentes algoritmos com diferentes eficincias
para o mesmo problema. Complexidade de um problema.
Problemas fechados e abertos.
Algoritmos: Insert sort; Pesquisa Linear; Pesquisa Binria;
Bubblesort; Barricada dos tigres adormecidos.
Algoritmos e Complexidade
Filipe Santos
Eficincia de algoritmos
Que recursos computacionais so necessrios para executar um algoritmo?
C tempo de execuo
C espao de memria
Complexidade Temporal
Complexidade Espacial
S(n)
S(n)
T(n)
Algoritmos e Complexidade
Filipe Santos
Eficincia de algoritmos
L Na prtica muito difcil calcular com rigor o tempo de execuo de um
algoritmo!
Identificar no algoritmo as operaes elementares e determinar o nmero de
vezes que so executadas. O tempo real de execuo de cada operao
elementar ser uma constante multiplicativa!
A Independentemente do computador!
$ Dados vrios algoritmos para solucionar um mesmo problema, devemos
escolher aquele que nos permite resolver o problema mais rapidamente e
utilizando o menor espao possvel para representar os dados do problema!
Mas
Algoritmos e Complexidade
Filipe Santos
Eficincia de algoritmos
t
e
m
p
o
e
s
p
a
T1(n)
S1(n)
S2(n)
T2(n)
k
n - dimenso dos dados
m
n - dimenso dos dados
C um algoritmo pode ser mais eficiente que outro para inputs de pequena
dimenso e deixar de o ser para inputs de grande dimenso. E.g. insertsort vs
treesort
C um algoritmo pode ser mais eficiente que outro em tempo e no o ser em
espao. E.g. bublesort vs treesort
C Mais ainda, diferentes amostras com a mesma dimenso podem ser
processadas em tempos diferentes, podendo-se falar de eficincia temporal
mnima (melhor caso), mxima (pior caso) e mdia.
Algoritmos e Complexidade
Filipe Santos
Filipe Santos
Ordem de Complexidade
C Normalmente a anlise de algoritmos simplificada se nos concentrarmos na sua
eficincia assimpttica, i.e. anlise da taxa de crescimento do pior caso.
Notao O: Sejam f: N R e g: N
R funes.
f(n) = O(g(n))
sse
cR+ n0N : |f(n)| c|g(n)|, n n0
Exemplos:
(n+1)/2
2n3+2n -7
(n2+5)(n-3)
ln n
25
= O(n)
= O(n3)
= O(n3)
= O(log2 n)
= O(n0) = O(1)
Algoritmos e Complexidade
c g(n)
f(n)
n
n0
f(n) = O(g(n))
Filipe Santos
2n
O(1)
O(log n)
O(n)
O(n log n)
O(n2)
O(n3)
O(nk)
O(an)
O(n!)
Complexidade Constante
Complexidade Logartmica
Complexidade Linear
Complexidade Log-Linear
Complexidade Quadrtica
Complexidade Cbica
Complexidade Polinomial
Complexidade Exponencial
Complexidade Factorial
n2
n
log n
Algoritmos e Complexidade
Filipe Santos
Com 210
10
3
10
30
100
1000
1000
106
1010
103 M
50
5
50
282
2500
125000
1016
1065
1085
100
6
100
664
104
106
1030
10160
10200
1000
9
1000
9965
106
109
10300
M
M
104
13
104
105
108
1012
103000
M
M
105
16
105
106
1010
1015
1030000
M
M
106
19
106
107
1012
1018
10300000
M
M
Filipe Santos
10
Filipe Santos
Algoritmos e Complexidade
11
Filipe Santos
12
Filipe Santos
10
11
12
13
14
15
log2n
13
Filipe Santos
, n=1
T(n) =
2T(n-1) +1, n>1
Que explicitando d: T(n) = 2n-1 , n 1
C O(2n)
Algoritmos e Complexidade
14
Filipe Santos
Complexidade de um problema
C A complexidade de um problema a complexidade do melhor algoritmo que o resolve.
C O melhor algoritmo que resolve um problema pode no ser conhecido.
Problema Pesquisa em listas ordenadas: Dado um array de nN empregados ordenados por
nome e um nome (input), saber se existe um empregado com esse nome (output)
pesquisa linear O(n)
pesquisa binria O(log n)
ser que podemos fazer melhor?
Limites superior e inferior de um problema
C A complexidade de um problema pode no ser conhecida, mas pode ser delimitada
superiormente e inferiormente
C O limite superior indica que no necessrio gastar mais para resolver o problema
C O limite inferior indica que no se pode gastar menos para resolver o problema
Algoritmos e Complexidade
15
Filipe Santos
Complexidade de um problema
C O limite superior estabelecido pelo melhor
algoritmo, entre os algoritmos conhecidos. A
descoberta de um novo algoritmo mais eficiente
faz descer o limite superior.
Algoritmos e Complexidade
16
Filipe Santos
Complexidade de um problema
Exemplo de prova de que algoritmos de pesquisa em listas tm limite inferior log n
C O pior caso est associado aos caminhos mais longos na rvore a partir da raiz
C Os algoritmos melhores so portanto aqueles que so representados por rvores de
profundidade menor.
C rvores com n folhas com menos nveis so as rvores binrias completas, que tm log2n
nveis.
C limite inferior O(log n)
Algoritmos e Complexidade
17
Filipe Santos
O(log n)
O(n)
(soma salrios, )
O(n log n) (barricada dos tigres)
O(2n)
Algoritmos e Complexidade
limite superior
Filipe Santos
$ Um segmento faz parte da cerca sse todos os restantes pontos esto no mesmo lado desse
segmento.
Algoritmo1: Testar para cada um dos n2 segmentos se os restantes n-2 pontos esto do mesmo
lado.
C O(n3)
Algoritmos e Complexidade
19
Filipe Santos
Algoritmos e Complexidade
20
Filipe Santos
P5
P3
P7
P4
P2
P1
P6
P5
P3
P6
P7
P4
P7
P4
P2
P2
P1
Algoritmos e Complexidade
P5
P3
P1
21
Filipe Santos
P6
P5
P3
P7
P5
P3
P4
P7
P4
P2
P2
P1
P1
P6
P5
P3
P7
P4
P2
P1
Algoritmos e Complexidade
22