02-conceitos-basicos (08-mar-13)
Post on 21-Nov-2015
218 Views
Preview:
DESCRIPTION
TRANSCRIPT
-
PAA-DCC-UFAM
Conceitos Bsicos
Universidade Federal do Amazonas
Departamento de Eletrnica e Computao
-
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)entrada e sada ordenao de nmeros)
Um programa: Implementao de um algoritmo em uma dada linguagem de programao
Estrutura de dados: forma de organizar os dados necessrios soluo de um problema
-
PAA-DCC-UFAM
Soluo Algoritmica
Instncia de Entrada
atendendo a especificao
Algoritmo Sadarelacionada Entrada
O Algoritmo descreve aes sobre a instncia de entrada
Existem infinitos algoritmos corretos para um mesmo problema algortmico
especificao
-
PAA-DCC-UFAM
Ordenao
Definio Formal: Ordenao
ENTRADAsequncia de nmeros
a1, a2, a3,.,an b1,b2,b3,.,bn
SADAuma permutao (reordenao) da sequncia de entradas
2 5 4 10 7 2 4 5 7 10
CorretudePara qualquer entrada dada, o algortimo termina com sada
b1, b2, b3, ., bn, onde b1 < b2 < b3 < . < bn
Tempo de ExecuoDepende de: nmero de elementos (n) o quo (parcialmente) ordenada est a lista soluo algoritmica disp. de armazenamento
(instncia)
-
PAA-DCC-UFAM
Problema Algortmico
Especificaoda
Entrada?
Especificao da Sada como
funo da Entrada
Existe um nmero infinito de instncias da entrada que satisfazem a especificao. Por exemplo:
Uma seqncia finita, ordenada, no decrescente de nmeros naturais: 1, 20, 908, 909, 100000, 1000000000 3, 15, 105, 876, 1000, 100000
-
PAA-DCC-UFAM
Primeiro Algoritmo
O nosso primeiro algoritmo, o de ordenao por insero, resolve o problema de ordenao
Entrada:
Sada: tal que a1 a2 ... an Sada: 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
Ordenao por Insero
Entrada:
Sada:
-
PAA-DCC-UFAM
A1 nj3 6 84 9 7 2 5 1
iinsira A[j] na sequnciaordenada A[1..j-1]
Ordenao por Insero
1) j=2; pivot=4; i=1; A[2]=4 2) j=3; pivot=6; i=2; A[3]=63) j=4; pivot=8; i=3; A[4]=8
1 para j=2 at n2 faa pivot:=A[j]3 i j-14 enquanto i>0 e A[i]>pivot faa5 A[i+1] A[i]6 i--;7 fim-enquanto8 A[i+1] pivot;
ordenada A[1..j-1] 3) j=4; pivot=8; i=3; A[4]=84) j=5; pivot=9; i=4; A[5]=9
-
PAA-DCC-UFAM
Exerccio: Ordenao por Insero
1) Implemente o algoritmo da ordenao por insero usando a linguagem C ou C++. Analise o algoritmo em termos dos loops para os seguintes casos:a) Os elementos do vetor j esto ordenados
b) Os elementos do vetor esto em ordem inversa
c) Alguns elementos do vetor no esto ordenados
2) Agora considere um vetor com 1K, 10K, 100K e 1M posies e compute o tempo de execuo usando o comando time para cada um dos casos a), b) e c)
-
PAA-DCC-UFAMSoluo Algoritmica em Sistemas Discretos
Um sistema discreto (SD) um operador matemtico transforma um sinal em um outro sinal
usa um conjunto fixo de operaes
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
T [.]X(n) Y(n) = T[x(n)]
-
PAA-DCC-UFAMExemplo de Soluo Algoritmica em Sistema Discreto
Considere um sistema discreto modelado pela seguinte eq. de diferena
( ) ( ) ( )nxnayny += 1
=
=
0 ,00 ,1)(
n
nnx
substituido a=-1/2 e aplicando a funo de impulso unitrio
( ) ( )( ) ( )( ) ( ) ( )
( ) ( ) ( ) 25.01
110
25.005.05.025.0015.01
1105.00
=
=++
=+=
=+=
=+=
nyyy
yyy
K
K
for(i=0; i
-
PAA-DCC-UFAM
Exerccio: Sistema Discreto
1) Fornea o algoritmo para implementar o seguinte sistema discreto (de um passa baixa IIR segunda ordem) considerando a=0.4375 e b=-0.125
y(n) = ay(n-1) by(n-2) + x(n)y(n) = ay(n-1) by(n-2) + x(n)
-
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
M
kkk knxbknyany
1 0
-
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 passadoy(n) a sada
( ) ( ) ( ) = =
+=N
k
M
kkk knxbknyany
1 0
y(n) a sadano instante n
-
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 passadoy(n) a sada
y(n-k) a sada k passos no passado
( ) ( ) ( ) = =
+=N
k
M
kkk knxbknyany
1 0
y(n) a sadano instante n
-
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 passadoy(n) a sada
y(n-k) a sada k passos no passado
x(n-k) a entrada k passosno passado
( ) ( ) ( ) = =
+=N
k
M
kkk knxbknyany
1 0
y(n) a sadano instante n
-
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 passadoy(n) a sada
y(n-k) a sada k passos no passado
x(n-k) a entrada k passosno passado
( ) ( ) ( ) = =
+=N
k
M
kkk knxbknyany
1 0
y(n) a sadano instante n
ak so os coeficientes para as sadas
-
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 passadoy(n) a sada
y(n-k) a sada k passos no passado
x(n-k) a entrada k passosno passado
( ) ( ) ( ) = =
+=N
k
M
kkk knxbknyany
1 0
y(n) a sadano instante n
ak so os coeficientes para as sadas
bk so os coeficientes para as entradas
-
PAA-DCC-UFAM
Tipos de Filtros Digitais
Filtros digitais so geralmente classificados de acordo com as caractersticas do domnio da frequncia
Passa-baixa: atenua frequncias mais elevadas do que a frequncia de corte
Passa-alta: atenua freqncias mais baixas do que a Passa-alta: atenua freqncias mais baixas do que a frequncia de corte
Passa-banda: atenua frequncias fora da faixa entre as frequncias de corte
Bandstop: atenua frequncias dentro da faixa entre as frequncias de corte
Passa-tudo: no atenua nenhuma frequncia, geralmente muda apenas a fase do sinal
-
PAA-DCC-UFAM
Anlise e Projeto de Filtro (Matlab)
fdatool: permite projetar filtros digitais no Matlab
Exportar os coeficientes: file->export, workspace
-
PAA-DCC-UFAM
Anlise e Projeto de Filtro (Matlab)
[B, A] = sos2tf(SOS,G): obtm a funo de transferncia com os respectivos coeficientes
B = 0.2066 0.4131 0.2066
A = 1.0000 -0.3695 0.1958
format long: aumenta o tamanho do formato dos nmeros fi(B,1,7,5): 1: bit do sinal; 7: tamanho da palavra; 5: parte fracionriafi(A,1,7,5): 1: bit do sinal; 7: tamanho da palavra; 5: parte fracionria
A = 1.0000 -0.3695 0.1958
-
PAA-DCC-UFAM
Anlise e Projeto de Filtro (Matlab)
Matlab retorna os seguintes coeficientes:
B = 0.21875 0.40625 0.21875
A = 1.0000 -0.375 0.1875
aplicando os coeficientes em:
temos:
( ) ( ) ( ) = =
+=N
k
M
kkk knxbknyany
1 0
( ) ( ) ( ) ( )( ) ( )221875.0140625.0
21875.021875.01375.0++
+=
nxnx
nxnynyny
-
PAA-DCC-UFAM
Loop Invariante
Loop invariante uma invariante usada para provar propriedades de loops:
nos ajudam a entender por que um algoritmo correto
Devemos mostrar trs detalhes: Devemos mostrar trs detalhes: Inicializao: verdadeiro antes da inicializao do loop
Manuteno: Se for verdadeiro antes de uma iterao do loop, permanecer verdadeiro antes da prxima iterao
Trmino: Quando o loop termina, a invariante fornece uma propriedade til para mostrar que o algoritmo correto
-
PAA-DCC-UFAM
Padro do Loop Invariante
...// the Loop Invariant must be true here
O padro geral para inserir loop invariante no cdigo dado por:
// the Loop Invariant must be true herewhile ( TEST CONDITION ) {
// top of the loop...// bottom of the loop// the Loop Invariant must be true here
}// Termination + Loop Invariant = Goal...
-
PAA-DCC-UFAM
Exemplo: Loop Invariante
Considere o seguinte cdigo:
#define SIZE 10int x;void main() {while (x
-
PAA-DCC-UFAM
Exemplo: Loop Invariante
#define SIZE 10int x;void main() {assert(x
-
PAA-DCC-UFAM
Loop Invariante (1)
No comeo de cada iterao do loop para (linhas de 1 a 8), o subarranjo A[1..j-1] consiste dos elementos contidos originalmente em A[1..j-1] , mas em sequncia ordenada
Prova das propriedades: Inicializao: mostrar que o loop invariante vlido antes da primeira iterao do loop
quando j=2 ento o subarranjo A[1..j-1] consiste apenas do nico elemento A[1], que de fato o elemento original A[1]. Alm disso, esse subarranjo ordenado e isso mostra que o loop invariante vlido antes da primeira iterao
-
PAA-DCC-UFAM
Loop Invariante (2)
Manuteno: demonstrar que cada iterao mantm o loop invariante
O corpo do loop para funciona deslocando-se A[j-1], A[j-2], A[j-3] e da por diante uma posio a esquerda, at ser encontrada a posio adequada para A[j] (linhas 3 a 7), e nesse ponto o valor posio adequada para A[j] (linhas 3 a 7), e nesse ponto o valor de A[j] inserido
Trmino: examinar o que ocorre quando o loop termina
O loop para externo termina quando j excede n, isto , quando j=n+1. Substituindo j por n+1 no enunciado do loop invariante, temos que o subarranjo A[1..n] consiste nos elementos originalmente contidos em A[1..n], mas em sequncia ordenada
-
PAA-DCC-UFAM
O algoritmo dito correto se a condio de parada alcanada e o loop invariante verdadeiro
1 para j =2 at n2 // Invariante: A[1..j-1] uma seq. ordenada do original A[1..j-1]
Loop Invariante (Ordenao)
do
original A[1..j-1] 3 faa pivot:=A[j]4 i j-15 enquanto i>0 e A[i]>pivot faa6 A[i+1] A[i]7 i--;8 fim-enquanto9 A[i+1] pivot;10 // Invariante: A[1..j-1] uma seq. ordenada do original A[1..j-1] 11 Invariante verdadeira A[1..n] e j==n+1
-
PAA-DCC-UFAM
Enuncie um loop invariante para o loop do seguinte filtro digital:
Exerccio: Loop Invariante
( ) ( ) ( )nxnyny += 15.0
=
=
0 ,00 ,1)(
n
nnx
for(i=0; i
-
PAA-DCC-UFAM
Anlise de Algoritmos
Prever os recursos que o algoritmo necessitar
Memria, largura de banda ou hardware
Estamos interessado na eficincia:
Tempo de execuo Espao (memria) usado
Eficincia como funo do tamanho da entrada
Pela anlise de vrios algoritmos, podemos identificar um algoritmo mais eficiente
-
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)
Instrues (considerando tempo constante): Instrues (considerando tempo constante):
Aritmticas (+, -, *, etc.)
Movimentao de dados (carregar, armazenar, copiar)
Controle (desvios, chamadas de procedimento, etc.)
Tamanho da entrada
Nmero de itens na entrada
Nmero total de bits
-
PAA-DCC-UFAM
para j=2 at n
faa pivot:=A[j]
Anlise: Ordenao por Insero
Determinar o tempo de execuo como funo do tamanho da entrada
n-1 vezes
n vezes
i j-1
enquanto i>0 e A[i]>pivot faa
A[i+1] A[i]i--;
fim-enquanto
A[i+1] pivot;
Para cada uma das n-1 vezes, tj vezes
-
PAA-DCC-UFAM
Anlise: Ordenao por Insero
Determinar o tempo de execuo como funo do tamanho da entrada
para j=2 at nfaa pivot:=A[j] (n-1)
n c1c
vezes custo
faa pivot:=A[j]i j-1enquanto i>0 e A[i]>pivot faaA[i+1] A[i]i--;
fim-enquantoA[i+1] pivot; n-1
(n-1)
(n-1)
2
n
jj t=2( 1)n jj t=
2( 1)n jj t=
c2c4c5c6c7
c8
-
PAA-DCC-UFAM
Anlise: Ordenao por Insero
Para calcular T(n), somamos os produtos das colunas custos e vezes, obtendo:
( ) ( ) ( ) ( ) ( )11111)( 82
72
62
5421 ++++++= ===
nctctctcncncncnTn
jj
n
jj
n
jj
Mesmo para entradas de um mesmo tamanho, o tempo de execuo do algoritmo pode depender de qual entrada dada
Anlise do melhor caso
Anlise do pior caso
Anlise do caso mdio
222 === jjj
-
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 vezesNeste caso, tj=1 e a operao executada n-1 vezes
Portanto a complexidade de tempo dada por T(n)=an-bpara constantes a e b que dependem de ci
Funo linear de n
1111322
=+++=+++==
ntttt nn
jj KK
( ) ( ) ( ) ( )1111)( 85421 ++++= ncncncncncnT( ) ( )854285421)( ccccncccccnT +++++++=
-
PAA-DCC-UFAM
Pior Caso
Pior Caso
Elementos em ordem inversa
Observando que:
( ) 11 + nn=jn ( ) ( )11 nn=j
n
Livro do Cormen segunda edio est errado, pois o autor apresenta o termo (n-1) em vez de (n+1)
Descobrimos que, no pior caso, T(n)
( ) 12
12
+
nn=j
n
j=( ) ( )
211
2
nn
=jn
j=
( ) ( ) ( ) ( ) ( )
( ) ( )8542876542127658
765421
2222221
21
211
2111)(
ccccncccc
cccnccc
nc
nnc
nnc
nncncncncnT
+++
+++++
++=+
+
+
++++=
-
PAA-DCC-UFAM
Demonstrao do Somatrio
( )2
1211
+=+++
nnn=j
n
j=L
Srie aritmtica definida como:
Deste modo, temos:( )
( ) ( ) ( ) ( )2
12
212
11211
12
132
2
2
=
+=
+=+++
+=+++
nnnnnn
nnn=j
nnn=j
n
j=
n
j=
K
K
Deste modo, temos:
De forma similar, obtemos:
-
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.
Pior caso: elementos em ordem inversat =j, T(n) = k . n2, ou seja, tempo quadrtico tj=j, T(n) = k2 . n2, ou seja, tempo quadrtico
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:
6n Pior Caso
1n2n
3n4n5n
Melhor Caso
Caso Mdio
Caso
Instncias
Tempo de Execuo
-
PAA-DCC-UFAM
Melhor/Pior/Mdio (3)
Para instncias de todos os tamanhos:
average-caseCaso Mdio6n
worst-case
6n
Pior Caso
Tempo de
1n2n
3n4n5n
1 2 3 4 5 6 7 8 9 10 11 12
best-case
1n2n
3n4n5n
Melhor Caso
Tamanho da Entrada
Tempo de Execuo
-
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 freqentefreqente
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+83
1,00E+95
1,00E+107
1,00E+119
1,00E+131
1,00E+143
1,00E+155
n
log nsqrt nn log n100n
1,00E-01
1,00E+11
1,00E+23
1,00E+35
1,00E+47
1,00E+59
1,00E+71
1,00E+83
2 4 8 16 32 64 128 256 512 1024n
T
(
n
) n^2n^32^n
-
PAA-DCC-UFAM
O que razovel em computao?
9/100segundos
1/100segundos
1/400segundos
1/2,500segundos
1/10,000segundosn
2
300100502010funo/n
Polinomial
Sculos de 728 dgitos
Sculos de 185 dgitos
Seculos de 70 dgitos
3.3 trilhes de anos
2.8 horasn
n
Sculos de 75 dgitos
400 trilhes de sculos
35.7anos
1segundos
1/1000segundos2
n
28.1 dias
2.8horas
5.2minutos
3.2segundos
1/10segundosn
5
ExponencialPolinomial
top related