Professional Documents
Culture Documents
Algoritmos
walternagai@unifei.edu.br
1 Algoritmos
2 Analise de Algoritmos
Complexidade de Algoritmos
Notacoes de Complexidade
Revisao de alguns fatos matematicos
3 Complexidade Computacional
Exemplos de Analise Computacional
Recorrencias
Definicoes
Exemplo 1
2 (107 )2
= 20000s
= 5.56h
1010
Exemplo 2
Analise de Algoritmos
Algoritmos de Forca-Bruta
Algoritmos Backtracking
Algoritmos Greedy Gulosos
Algoritmos de Programacao Dinamica
Algoritmos de Otimizacao
Algoritmos Branch-and-bound
Algoritmos Probabilsticos
Algoritmo de Monte Carlo
Algoritmo de Las Vegas
Grafos
Coloracao de Grafos
Cobertura de Grafos
Caixeiro Viajante
Empacotamento da Mochila
Arvore Geradora Mnima
Algoritmos
Detalhando Algoritmos
Estrategia
1 Especificacao (definir propriedades);
2 Arquitetura (estruturas de dados);
3 Complexidade (tempo de execucao/mem oria);
4 Implementacao (linguagem de programacao);
5 Testes (submiss ao de entradas para testar as propriedades
especificadas).
Analise de Algoritmos
Algoritmo de Busca
Na Figura 1 pode ser observado um algoritmo para busca de um
valor numerico, ou elemento, em um vetor.
Algoritmo de Busca
Algoritmo de Busca
Algoritmo de Busca
Complexidade de Algoritmos
Motivacao
Complexidade de Algoritmos
Complexidade de Algoritmos
Complexidade de Algoritmos
Complexidade de Algoritmos
Complexidade de Algoritmos
Complexidade de Algoritmos
Complexidade de Algoritmos
1 void sum matrix(int a[][], int b[][], int c[][], int tam)
2 {
3 int i, j;
4 for (i = 0; i < tam; i++) {
5 for (j = 0; j < tam; j++) {
6 c[i][j] = a[i][j] + b[i][j];
7 }// fim for
8 }// fim for
9 }// fim sum matrix
Complexidade de Algoritmos
Complexidade de Algoritmos
Complexidade de Tempo
Notac
oes de Complexidade
Notacao O
Definic
ao Sejam f , h func
oes reais positivas de vari
avel inteira n. Diz-se que f
e O(h),
escrevendo-se f = O(h), quando existir uma constante c > 0 e um valor inteiro n0 , tal
que n > n0 f (n) <= c.h(n)
A notac
ao O atua como um limite superior para os valores da func
ao f .
f = n2 1 f = O(n2 )
f = n2 1 f = O(n3 )
f = 403 f = O(1)
f = 5 + 2.logn + 3.logn2 f = O(logn2 )
f = 5 + 2.logn + 3.logn2 f = O(n)
f = 3n + 5.logn + 2 f = O(n)
f = 5.2n + 5.n10 f = O(2n )
Notac
oes de Complexidade
Notacao
Definic
ao Sejam f , h funco
es reais positivas de vari
avel inteira n. Diz-se que f
e (h),
escrevendo-se f = (h), quando existir uma constante c > 0 e um valor inteiro n0 , tal
que n > 0 f (n) >= c.h(n)
A notac
ao est
a relacionada ao limite inferior para os valores da func
ao f .
f = n2 1 f = (n2 )
f = n2 1 f = (n)
f = n2 1 f = (1)
A funcao f = (n3 ) nao existe para f = n2 1, pois e um
omio (n2 1) da expressao matematica.
valor superior ao polin
Definic
ao Seja P um problema com uma entrada de tamanho n. Um limite inferior
para o problema e denotado por l, tal que a complexidade de pior caso de qualquer
algoritmo que resolva P e (l). Isto e, todo algoritmo que resolve P efetua, pelo
menos, (l) passos. Sendo assim, se algum algoritmo A que resolva o problema P
possui complexidade O(l) ele
e considerado um algoritmo
otimo para o problema P.
Notac
oes de Complexidade
Notacao
Definic
ao Sejam f , g func
oes reais positivas da vari
avel inteira n. Diz-se que f
e (g ),
escrevendo-se f = (g ), quando ambas as condic oes f = O(g ) e g = O(f ) forem
verificadas. A notac
ao exprime o fato de que duas funco es possuem a mesma ordem
de grandeza assintotica.
Revis
ao de alguns fatos matem
aticos
Logaritmos e expoentes
Revis
ao de alguns fatos matem
aticos
n! = 1 2 (n 1) n
Revis
ao de alguns fatos matem
aticos
Somatorias
Fatoracao de somat
orias desde que uma constante a nao
dependa de i;
n
X n
X
af (i) = a f (i)
i=1 i=1
Troca de ordem;
n X
X m m X
X n
f (i, j) = f (i, j)
i=1 j=1 j=1 i=1
Somatoria de n
umeros inteiros;
n
X n(n + 1)
i = 1 + 2 + + (n 1) + n =
2
i=1
Prof. M.e. Walter Aoiama Nagai UNIFEI-Itabira
Algoritmos
Algoritmos An
alise de Algoritmos Complexidade Computacional
Revis
ao de alguns fatos matem
aticos
Somatorias
Somatoria de n
umeros inteiros elevado ao quadrado;
n
X n(n + 1)(2n + 1)
i = 1 + 4 + (n 1)2 + n2 =
6
i=1
Classe de funcoes
Exemplos de An
alise Computacional
Elemento maximo
Exemplos de An
alise Computacional
Elemento maximo
Exemplos de An
alise Computacional
Elemento maximo
O valor do caso medio e obtido considerando pi a probabilidade do
i-esimo elemento do vetor ser escolhido e a funcao T (n) escrita
como:
T (n) = 1 p1 + . . . + i pi + . . . + n pn
A probabilidade de escolher qualquer elemento pode ser
considerada igual a 1/n, ou seja, probabilidades iguais.
T (n) = (1 + 2 + ... + i + ... + (n 1) + n) (1/n)
A somatoria de ni=1 i = n(n + 1)/2, entao
P
T (n) = n(n + 1)/2 (1/n) = (n + 1)/2 c.q.d
Usando a notacao O, determina-se que o algoritmo possui uma
complexidade O(T (n) = n 1) = n, pois desconsidera-se os
termos aditivos e multiplicativos.
Prof. M.e. Walter Aoiama Nagai UNIFEI-Itabira
Algoritmos
Algoritmos An
alise de Algoritmos Complexidade Computacional
Exemplos de An
alise Computacional
Ordenacao
void ordena (int a[], int tam) Na linha 4 da Figura 10, o laco
{ int i, j, temp; sera executado (tam 1) vezes,
for(i = 0; i<tam-1; i++) { enquanto na linha 5 o laco e
for (j = i+1; j<tam; j++) {
executado (n tam 1) vezes,
if (a[i] > a[j]) {
temp = a[i]; resultando em uma somat oria
a[i] = a[j]; (n 1) + (n 2) + . . . + 2 + 1.
a[j] = temp; Usando a somat oria de valores
}// fim if inteiros: P
}// fim for tam1
T (tam) = i=1 i=
}// fim for tam(tam1) tam2 tam
}// fim ordena 2
= 2
2
A func
ao T pode ser reescrita
Figura: Algoritmo de ordenacao de 2
como: T (n) = n2 n2 , caso
um vetor de numeros inteiros. tam = n.
Usando a notac
ao O, a
complexidade fica O(n) = n2 .
Prof. M.e. Walter Aoiama Nagai UNIFEI-Itabira
Algoritmos
Algoritmos An
alise de Algoritmos Complexidade Computacional
Recorr
encias
Recorr
encias
Exemplos
Recorr
encias
Exemplos