Escolar Documentos
Profissional Documentos
Cultura Documentos
Conceitos Bsicos
PAA-DCC-UFAM
Algoritmos
Um algoritmo: A essncia de um procedimento
computacional composto por instrues seqenciais
passo a passo
procedimento computacional bem definido (valores de
entrada e sada ordenao de nmeros)
PAA-DCC-UFAM
Soluo Algoritmica
Instncia de
Entrada
atendendo a
especificao
Algoritmo
Sada
relacionada
Entrada
PAA-DCC-UFAM
ENTRADA
sequncia de nmeros
10
b1,b2,b3,.,bn
Ordenao
2
10
(instncia)
Corretude
Para qualquer entrada dada, o
algortimo termina com sada
b1, b2, b3, ., bn, onde
b1 < b2 < b3 < . < bn
Tempo de Execuo
Depende de:
nmero de elementos (n)
o quo (parcialmente)
ordenada est a lista
soluo algoritmica
disp. de armazenamento
PAA-DCC-UFAM
Problema Algortmico
Especificao
da
Entrada
Especificao
da Sada como
funo da
Entrada
PAA-DCC-UFAM
Primeiro Algoritmo
O nosso primeiro algoritmo, o de ordenao por
insero, resolve o problema de ordenao
Entrada: <a1, a2,...an>
Sada: <a1, a2,...an> tal que a1 a2 ... an
Procdimento:
1. Mo esquerda vazia e cartas p/ baixo
2. Remove uma carta inser. na pos. correta
3. Compara as cartas da direita p/ esquerda
PAA-DCC-UFAM
PAA-DCC-UFAM
5 1
j
i
n
1)
2)
3)
4)
1 para j=2 at n
2
faa pivot:=A[j]
3
i j-1
4
enquanto i>0 e A[i]>pivot faa
5
A[i+1] A[i]
6
i--;
7
fim-enquanto
8
A[i+1] pivot;
PAA-DCC-UFAM
PAA-DCC-UFAM
Y(n) = T[x(n)]
T [.]
Um sinal de entrada x(n) transformado em um sinal
de sada y(n) atravs da transformao T[.]
A relao de entrada e sada pode ser expressada em
termos de uma funo ou regra matemtica
PAA-DCC-UFAM
1, n = 0
x ( n) =
0, n 0
PAA-DCC-UFAM
PAA-DCC-UFAM
Filtros Digitais
Filtros digitais podem ser definidos como sistema de
tempo discreto no tempo linear
N o nmero de sada no passado
M o nmero das entradas atuais e do passado
N
k =1
k =0
y (n ) = ak y (n k ) + bk x(n k )
PAA-DCC-UFAM
Filtros Digitais
Filtros digitais podem ser definidos como sistema de
tempo discreto no tempo linear
N o nmero de sada no passado
M o nmero das entradas atuais e do passado
y(n) a sada
no instante n
k =1
k =0
y (n ) = ak y (n k ) + bk x(n k )
PAA-DCC-UFAM
Filtros Digitais
Filtros digitais podem ser definidos como sistema de
tempo discreto no tempo
linear
y(n-k)
a sada
no
N o nmero de sadaknopassos
passado
passado
y(n) a sada
no instante n
k =1
k =0
y (n ) = ak y (n k ) + bk x(n k )
PAA-DCC-UFAM
Filtros Digitais
Filtros digitais podem ser definidos como sistema de
tempo discreto no tempo
linear
x(n-k) a
y(n-k)
a sada
no
N o nmero de sadaknopassos
passado
passado
entrada k passos
no passado
y(n) a sada
no instante n
k =1
k =0
y (n ) = ak y (n k ) + bk x(n k )
PAA-DCC-UFAM
Filtros Digitais
Filtros digitais podem ser definidos como sistema de
tempo discreto no tempo
linear
x(n-k) a
y(n-k)
a sada
no
N o nmero de sadaknopassos
passado
passado
entrada k passos
no passado
y(n) a sada
no instante n
ak so os
k =1
k =0
y (n ) = ak y (n k ) + bk x(n k )
coeficientes para
as sadas
PAA-DCC-UFAM
Filtros Digitais
Filtros digitais podem ser definidos como sistema de
tempo discreto no tempo
linear
x(n-k) a
y(n-k)
a sada
no
N o nmero de sadaknopassos
passado
entrada k passos
no passado
passado
y(n) a sada
no instante n
ak so os
k =1
k =0
y (n ) = ak y (n k ) + bk x(n k )
coeficientes para
as sadas
bk so os
coeficientes para
as entradas
PAA-DCC-UFAM
PAA-DCC-UFAM
PAA-DCC-UFAM
0.4131
0.2066
A = 1.0000
-0.3695
0.1958
PAA-DCC-UFAM
0.40625
0.21875
A = 1.0000
-0.375
0.1875
k =1
k =0
y (n ) = ak y (n k ) + bk x(n k )
temos:
y (n ) = 0.375 y (n 1) 0.1875 y (n 2 ) + 0.21875 x(n )
PAA-DCC-UFAM
Loop Invariante
Loop invariante uma invariante usada para provar
propriedades de loops:
nos ajudam a entender por que um algoritmo correto
PAA-DCC-UFAM
PAA-DCC-UFAM
PAA-DCC-UFAM
PAA-DCC-UFAM
PAA-DCC-UFAM
PAA-DCC-UFAM
PAA-DCC-UFAM
1, n = 0
x ( n) =
0, n 0
for(i=0; i<n; i++) {
if (i==0)
x[0]=1;
else
x[i]=0;
}
PAA-DCC-UFAM
Anlise de Algoritmos
Prever os recursos que o algoritmo necessitar
Memria, largura de banda ou hardware
PAA-DCC-UFAM
Anlise de Algoritmos
O que deve ser contabilizado?
Modelo RAM (instrues executadas de formal seq.)
No abusar do modelo de RAM (instruo de ordenao)
Tamanho da entrada
Nmero de itens na entrada
Nmero total de bits
PAA-DCC-UFAM
n-1 vezes
faa pivot:=A[j]
i j-1
enquanto i>0 e A[i]>pivot faa
A[i+1] A[i]
i--;
fim-enquanto
A[i+1] pivot;
PAA-DCC-UFAM
para j=2 at n
n
faa pivot:=A[j]
(n-1)
(n-1)
i j-1
enquanto i>0 e A[i]>pivot faa nj = 2 t j
n
A[i+1] A[i]
nj = 2 (t j 1)
i--;
j = 2 (t j 1)
fim-enquanto
n-1
A[i+1] pivot;
custo
c1
c2
c4
c5
c6
c7
c8
PAA-DCC-UFAM
j =2
j =2
j =2
PAA-DCC-UFAM
Melhor Caso
Melhor Caso
Elementos j ordenados
Todos os testes falham, o loop interno nunca executado
Neste caso, tj=1 e a operao executada n-1 vezes
n
t
j =2
= t 2 + t3 + K + t n = 1 + 1 + K + 1 = n 1
T (n) = c1n + c2 (n 1) + c4 (n 1) + c5 (n 1) + c8 (n 1)
T (n) = (c1 + c2 + c4 + c5 + c8 ) n (c2 + c4 + c5 + c8 )
PAA-DCC-UFAM
Pior Caso
Pior Caso
Elementos em ordem inversa
Observando que:
n
j= 2
n (n + 1 )
j=
1
2
n (n 1 )
(
)
j
1
=
2
n
j= 2
2
2
2
c c c
c c c
+ c8 (n 1) = 5 + 6 + 7 n 2 + c1 + c2 + c4 + 5 6 7 + c8 n (c2 + c4 + c5 + c8 )
2 2 2
2 2 2
PAA-DCC-UFAM
Demonstrao do Somatrio
Srie aritmtica definida como:
n
j =1 + 2 + L + n =
j= 1
n (n + 1 )
2
j= 2
j =2 + 3 + K + n =
n (n + 1 )
1
2
=
+
+
K
+
n
=
n
1
1
2
1
2
n
j= 2
n (n + 1 ) 2 n
n (n 1 )
=
2
2
PAA-DCC-UFAM
Somatrios teis
PAA-DCC-UFAM
Melhor/Pior/Mdio (1)
Melhor Caso: elementos j ordenados
tj=1, T(n) =k1 . n, ou seja, tempo linear.
Tempo mdio:
tj=j/2, T(n) = k2 . n2, ou seja, tempo quadrtico
PAA-DCC-UFAM
Melhor/Pior/Mdio (2)
Determinar o tempo de execuo para diferentes
instancias de tamanho n:
Pior
Caso
6n
Tempo de Execuo
5n
Caso Mdio
4n
Melhor Caso
3n
2
n
1n
Instncias
PAA-DCC-UFAM
Melhor/Pior/Mdio (3)
Para instncias de todos os tamanhos:
Pior Caso
worst-case
Caso Mdio
average-case
Tempo de Execuo
6n
5n
best-case
Melhor
Caso
4n
3n
2
n
1n
1
9 10
Tamanho da Entrada
11
12
PAA-DCC-UFAM
Melhor/Pior/Mdio (4)
O pior caso geralmente usado
Estabelece um limite superior na complexidade de
tempo do algoritmo
Para alguns algoritmos o pior caso bastante
freqente
Frequentemente o caso mdio to ruim quando o
pior caso
Encontrar o caso mdio pode ser muito difcil
PAA-DCC-UFAM
Funes de Crescimento
1,00E+155
1,00E+143
1,00E+131
1,00E+119
n
log n
sqrt n
n log n
100n
n^2
n^3
2^n
1,00E+107
T(n)
1,00E+95
1,00E+83
1,00E+71
1,00E+59
1,00E+47
1,00E+35
1,00E+23
1,00E+11
1,00E-01
2
16
32
64
n
128
256
512
1024
PAA-DCC-UFAM
10
20
50
100
300
n2
1/10,000
segundos
1/2,500
segundos
1/400
segundos
1/100
segundos
9/100
segundos
n5
1/10
segundos
3.2
segundos
5.2
minutos
2.8
horas
28.1
dias
2n
1/1000
segundos
1
segundos
35.7
anos
400
trilhes de
sculos
Sculos de
75 dgitos
nn
2.8
horas
3.3 trilhes
de anos
Seculos de
70 dgitos
Sculos de
185 dgitos
Sculos de
728 dgitos
n
Polinomial
Exponencial