Академический Документы
Профессиональный Документы
Культура Документы
| Definido p
pela letra g
grega
g ((Theta))
| Deve-se obter a mdia dos tempos de execuo
de todas as entradas de tamanho n n, ou baseado
em probabilidade de determinada condio ocorrer
| Ex.:
Ex :
y O algoritmo de pesquisa sequncial em um vetor tem
complexidade f(n) = (n/2)
y Em mdia ser necessrio visitar n/2 elementos do vetor
at encontrar o elemento procurado
p
| Melhor aproximao
| Muito difcil de determinar na maioria dos casos
Introduo Complexidade de Algoritmos
A Notao
O
| Tempo (ou espao) contabilizado em nmero de
passos do algoritmo (unidade de armazenamento)
| Anlise do algoritmo determina uma funo que
depende do tamanho da entrada n n.
| medida que n aumenta, aumenta a
complexidade do algoritmo (esforo
computacional)
8
Introduo Complexidade de Algoritmos
A Notao
O
| Desprezar constantes aditivas ou multiplicativas
y Nmero de passos 3n ser aproximado para n
| Interesse assinttico
y termos de menor grau podem ser desprezados
| n2 + n ser aproximado para n2
| 6n3 + 4n - 9 ser aproximado para n3
9
Introduo Complexidade de Algoritmos
Clculo da complexidade
p do algoritmo
g
| Foi visto que, para calcular a complexidade de um
algoritmo, deve-se
deve se analisar o pior caso (O(x))
| A anlise deve ser feita de acordo com a tabela a
seguir
N
Nmero de
d Operaes
O C
Complexidade
l id d
f(n) O(f(n))
c x f(n) O(f(n))
f(n) + f(n) O(f(n))
f(n) + g(n) O(max(f(n),g(n))
f(n) x g(n) O(f(n) x g(n))
Introduo Complexidade de Algoritmos
Clculo da complexidade
p do algoritmo
g Ex1
f(x)=1
f(x) 1+1+1+n*(n*(n*(1+1+1+3
)))
3+n*n* n*6
3 + 6n3 Desprezou-
se os
f(x) = O(n3) termos de
menor grau
ORDENS DE ALGORITMOS
| Complexidade Constante
| Complexidade Linear
| Complexidade Logartmica
| Complexidade Quadrtica
| Complexidade Cbica
| Complexidade Exponencial
| Complexidade Fatorial
COMPLEXIDADE CONSTANTE - O(1)
| So os algoritmos onde a complexidade independe
do tamanho n de entradas
| o nico em que as instrues dos algoritmos so
executadas um nmero fixo de vezes
| f( ) = 1
f(x) 1+(1)*1+(1)
(1)*1 (1) = 4 => O(1)
COMPLEXIDADE LINEAR O(N)
| Uma operao realizada em cada elemento de
entrada, ex.: pesquisa de elementos em uma lista
for (i = 0; i < N; i++) { n*(
if (condio == true){ 1+(
comandos de leitura, escrita ou condicionais; 1
} )
else { 1+(
comandos de leitura, escrita ou condicionais; 1
} )
} )
void bubbleSort(int[] a) { (
for (int i = 0; i < a.length-1; i++) { n*(
for (int j = 0; j < a.length
a length-1;
1; jj++)) { n*((
n
if (a[j] > a[j+1]) { 1+(
swap(a, j, j+1); 3
} )
} )
} )
} )
int dist[N][N]; 1
1+
int i, j, k; 1+
23
Introduo Complexidade de Algoritmos
| f(x)+g(x)+h(x)
f( )+ ( )+h( ) = max(O(n),O(n
(O( ) O( 2),O(n
) O( 3))
| Dessa forma, conclumos que o algoritmo que teve
o maior custo foi o do exemplo 3 (h(x) = O(n3)),
pois o expoente do grau de complexidade (n) o
maior
i o maior
i d deles
l ((expoente
t 3)
3).
| Ento, seu grau de complexidade resultante
cbico.
27
Introduo Complexidade de Algoritmos
Exerccios
| Informe a complexidade dos algoritmos abaixo:
1. i t a,b,
int b aux;
scanf(%d%d,&a,&b);
aux = a;
a = b;
b = aux;
printf(%d , %d
%d,a,b);
a b);
Introduo Complexidade de Algoritmos
Exerccios
2. float media, notas[100];
int ii, soma = 0
0, media;
for(i=0;i<=100;i++)
{
printf(entre com a nota);
scanf(%d,¬as[i]);
soma = soma + notas[i];
}
media
ed a = so
soma/100;
a/ 00;
printf(A media : %d, media);
Introduo Complexidade de Algoritmos
Exerccios
3. for(i=0;i<=N_LIN1;i++)
{
for(j=0;j<=N_COL2;j++)
{
C[i,j] = 0;
for(k=0;k<=N_COL1;k++)
{
C[i,j] = C[i,j] + A[i,k] * B[k,j];
}
}
}
Introduo Complexidade de Algoritmos
Exerccios
4. for(j=1;j<=n;j++){
for(k=1;k<=n;k++){
p=p+1;
}
}
Introduo Complexidade de Algoritmos
Exerccios
| Faa agora um estudo comparativo e determine qual ou
quais dos 4 algoritmos do exerccios anterior tem a maior
complexidade
Introduo Complexidade de Algoritmos
Exerccios
| Prova de concursos:
(ENADE-2005-Q15) - Considere o algoritmo que implementa o
seguinte processo: uma coleo desordenada de elementos
dividida em duas metades e cada metade utilizada como
argumento t para a reaplicao
li recursiva
i d do procedimento.
di t O Os
resultados das duas reaplicaes so, ento, combinados
pela intercalao dos elementos de ambas
ambas, resultando em
uma coleo ordenada. Qual a complexidade desse
algoritmo?
(A) O(n2)
(B) O(n2n)
(C) O(2n)
(D) O(log n log n)
(E) O(n log n)
UNIDADE II
Introduo Complexidade
p de Algoritmos
g
FIM