02-conceitos-basicos (08-mar-13)

45
PAA-DCC-UFAM Conceitos Básicos Universidade Federal do Amazonas Departamento de Eletrônica e Computação

Upload: andreluizpsilveira77

Post on 21-Nov-2015

218 views

Category:

Documents


0 download

DESCRIPTION

Algoritmos

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