Universidade Federal do Amazonas Departamento de ......Universidade Federal do Amazonas Departamento...

55
PAA-DCC-UFAM Universidade Federal do Amazonas Departamento de Eletrônica e Computação Somatórios e Recorrências

Transcript of Universidade Federal do Amazonas Departamento de ......Universidade Federal do Amazonas Departamento...

  • PAA-DCC-UFAM

    Universidade Federal do Amazonas

    Departamento de Eletrônica e Computação

    Somatórios e Recorrências

  • PAA-DCC-UFAM

    Exemplo: MaxMin (1)

    � Problema:

    � Dado um vetor de inteiros A, encontrar o maior e o menor elementos de A

    � O número de comparações entre elementos de A é dado por T(n) = 2 (n-1) para qualquer caso

    MaxMin(A[1…n])

    Max ← Α[1]; Min ← Α[1];

    for i = 2 … n

    if A[i] > Max then Max ← Α[i ];

    if A[i] < Min then Min ← Α[i ];

    end_for

    (n-1)(n-1)

    (n)

  • PAA-DCC-UFAM

    Exemplo: MaxMin (2)

    � Versão 2

    � Melhor caso: A está em ordem crescente T(n) = n-1

    � Pior caso: A está em ordem decrescente T(n) = 2(n-1)

    � Caso médio: T(n) = n-1 + (n-1)/2 = 3n/2 – 3/2

    MaxMin2(A[1…n])

    Max ← Α[1]; Min ← Α[1];

    for i = 2 … n

    if A[i] > Max then Max ← Α[i ];

    else if A[i] < Min then Min ← Α[i ];

    end_for

  • PAA-DCC-UFAM

    Exemplo: MaxMin (3)

    MaxMin3(A[1…n])

    if (n mod 2)>0 then u ← n; A[n+1]=A[n]

    else u ← n-1;

    if A[1]>A[2] then Max ← Α[1]; Min ← Α[2]

    else Min ← Α[1]; Max ← Α[2]

    i ← 3;

    while i ≤ u do

    if A[i]>A[i+1] then

    if A[i] > Max then Max ← Α[i];

    if A[i+1] < Min then Min ← Α[i+1];

    else

    if A[i] < Min then Min ← Α[i];

    if A[i+1] > Max then Max ← Α[i+1];

    i ← i+2;

    end-while

  • PAA-DCC-UFAM

    Exemplo: MaxMin (4)

    T(n) = n/2 + (n-2)/2 + (n-2)/2

    = 3n/2 –2 = O (n)

    Contém o máximo

    Contém o mínimo

  • PAA-DCC-UFAM

    � Procurar resposta e conferir

    � Vale principalmente para o dia-a-dia

    � Indução

    � Perturbação

    � Usar integrais

    Resolvendo somatóriosAlgumas técnicas úteis

  • PAA-DCC-UFAM

    Prova por indução (1)

    � Deseja-se mostrar que uma propriedade P é verdadeira para todo inteiro n ≥ n0

    � Base: � provar que P é verdadeiro para n0

    � Passo indutivo: � provar que

    � se P é verdadeiro para todo k

    � tal que n0 ≤ k ≤ n – 1

    � então P é verdadeiro para n

  • PAA-DCC-UFAM

    Prova por indução (2)

    � Exemplo

    � Base: Provar que S(n0)=1 é verdadeiro

    0

    ( 1)( ) for 1

    2

    n

    i

    n nS n i n

    =

    += = ≥∑

    1

    0

    1(1 1)(1)

    2iS i

    =

    += =∑ n0 = 1

  • PAA-DCC-UFAM

    Prova por indução (3)

    � Passo indutivo

    0

    1

    0 0

    2

    ( 1)( ) for 1 k 1

    2

    ( ) ( 1)

    ( 1 1) ( 2 )( 1)

    2 2

    ( 1)

    2

    k

    i

    n n

    i i

    k kS k i n

    S n i i n S n n

    n n n nn n

    n n

    =

    = =

    += = ≤ ≤ −

    = = + = − + =

    − + − += − + = =

    +=

    ∑ ∑

    ,

    Caso base provou para o limite 1

    Provar para o limite

    n-1

  • PAA-DCC-UFAM

    Exercício: Prova por indução

    � Prove que

    � Base: Provar que S(n0)=a é verdadeiro

    n0 = 1

    1n para 1

    ≥==∑=

    naaSn

    i

    n

    aaSn

    i

    n .11

    ==∑=

  • PAA-DCC-UFAM

    Exercício: Prova por indução

    � Passo indutivo

    ( )

    ( )

    na

    aanaaan

    anSaaa

    kaaS

    n

    i

    n

    i

    k

    i

    k

    =

    +−=+−=

    +−=+==

    ≤≤==

    ∑∑

    ∑−

    ==

    =

    .1

    1S

    1-nk1 para

    1

    11

    n

    1

  • PAA-DCC-UFAM

    Somatórios (1)

    � O tempo de execução da ordenação por inserção é determinado pelos loops aninhados:

    � Loops aninhados correspondem a somatórios aninhados

    for j←2 to length(A)

    key←A[j]

    i←j-1

    while i>0 and A[i]>key

    A[i+1]←A[i]

    i←i-1

    A[i+1]←key

  • PAA-DCC-UFAM

    Somatórios (2)

    � Progressão aritmética

    � Progresão geométrica

    � Seja um inteiron0 e um real 0 < a ≠ 1

    � Progressões geométricas apresentam crescimento exponencial

    12

    0

    11 ...

    1

    nni n

    i

    aa a a a

    a

    +

    =

    −= + + + + =

    −∑

    2

    0

    1 2 3 ...2

    n

    i

    n ni n

    =

    += + + + + =∑

  • PAA-DCC-UFAM

    Algumas propriedades

    ∑∑

    ∑∑∑

    ∑∑

    ∈∈

    ∈∈∈

    ∈∈

    =

    +=+

    =

    Kkp

    kP

    Kk

    k

    Kk

    k

    Kk

    k

    Kk

    kk

    Kk

    k

    Kk

    k

    aa

    baba

    acca

    )(

    )(

    )(

    Comutativa

    (P é uma permutação)

    Associativa

    Distributiva

  • PAA-DCC-UFAM

    Exercício: Prova por indução (1)

    � Demostrar que a série geométrica

    � Vamos provar que

    � Base: Condição inicial n0=0, temos:

    � Passo indutivo: Supondo que o limite se mantenha válido para n, vamos provar que ele é válido para n+1

    ( )nn

    k

    k 330

    Ο=∑=

    nn

    k

    kc33

    0

    ≤∑=

    ccn

    n

    k

    k≤=≤∑

    =

    1330

  • PAA-DCC-UFAM

    Exercício: Prova por indução (2)

    � Passo indutivo: Provar para n+1

    2

    3 e,equivalent modo de ou, 1

    1

    3

    1 que desde

    3

    31

    3

    1

    33

    333

    1

    1

    1

    1

    0

    1

    0

    ≥≤

    +

    +=

    +≤

    +=

    +

    +

    +

    +

    =

    +

    =

    ∑∑

    cc

    c

    cc

    c

    n

    n

    nn

    nn

    k

    kn

    k

    k

    nn

    k

    kc33

    0

    ≤∑=

  • PAA-DCC-UFAM

    Exemplo

    for j←2 to |A|

    key←A[j]

    i←j-1

    while i>0 and A[i]>key

    A[i+1]←A[i]

    i←i-1

    A[i+1]←key

    |A| = 2 → 1

    |A| = 3 → 1 + 2

    |A| = 4 → 1 + 2 + 3

    ...

    |A| = n → 1 + 2 + 3 + … + n-1

    Ordenação porInserção

  • PAA-DCC-UFAM

    Perturbação (1)

    � Escrever Sn+1 tirando o primeiro termo e igualar a Sn+1 tirando o último termo

    � Encontrar Sn dos dois lados da equação

    � Isolar Sn para encontrar a fórmula fechada para o somatório

  • PAA-DCC-UFAM

    Perturbação (2)

    ∑∑

    =

    +

    +

    =

    +

    ++

    =

    +=+=

    +=

    =

    n

    k

    k

    n

    k

    kn

    nnn

    n

    k

    kn

    aaaaS

    aSS

    aS

    0

    10

    1

    1

    01

    11

    0

    O truque agora consiste em quebrar o termo do somatório para chegar a Sn

    Tirando o último termo

    Tirando o primeiro termo

  • PAA-DCC-UFAM

    Perturbação (3)

    1

    1

    1

    111

    1

    1

    00

    11

    1

    0

    1

    1

    1

    0

    −=

    +=+

    +=+=+=+=

    +=

    =

    +

    +

    ==

    ++

    =

    +

    +

    +

    =

    ∑∑∑

    c

    cS

    cScS

    cScccccS

    cSS

    cS

    n

    n

    n

    nn

    n

    n

    k

    kn

    k

    kn

    k

    k

    n

    n

    nn

    n

    k

    k

    n

  • PAA-DCC-UFAM

    Exercício: Perturbação

    1

    1

    1

    11

    11

    2

    1

    1

    1

    1

    1

    −=

    +=+

    +=+=+=+=

    +=

    =

    +

    +

    ==

    ++

    =

    +

    +

    +

    =

    ∑∑∑

    a

    aaS

    aSaaS

    aSaaaaaaaaS

    aSS

    aS

    n

    n

    n

    n

    n

    n

    n

    k

    kn

    k

    kn

    k

    k

    n

    n

    nn

    n

    k

    k

    n

    � Encontre a fórmula fechada para ∑=

    n

    k

    ka

    1

  • PAA-DCC-UFAM

    Integrais

    � Integrais podem ser usadas para encontrarmos o valor aproximado de um somatório, indicando seu comportamento assintótico

    � Exemplo:

    ∫∑ ===n

    n

    inOiOi

    0

    2

    0)()(

  • PAA-DCC-UFAM

    Exercício: Integrais

    � Encontre o valor aproximado dos seguintes somatório: ∑∑∑

    ===

    n

    i

    n

    i

    n

    i iia

    11

    3

    1

    1,,

    ( )

    ( )

    ( )nii

    nii

    naa

    nn

    i

    nn

    i

    nn

    i

    ln11

    11

    4

    1

    3

    1

    3

    11

    Ο=

    Ο=

    Ο=

    Ο=

    Ο=

    Ο=

    ∫∑

    ∫∑

    ∫∑

    =

    =

    =

  • PAA-DCC-UFAM

    Divisão e Conquista

    � Método usado para projeto de algoritmos:

    � Divisão: Se o tamanho da entrada é muito grande

    para aplicação de uma solução simples, dividir o

    problema em dois ou mais subproblemas disjuntos

    � Conquista: Usar o método recursivamente para

    resolver os subproblemas

    � Combinação: Obter as soluções dos subproblemas e

    combiná-las para compor uma solução para o

    problema original

  • PAA-DCC-UFAM

    MergeSort

    � Divisão: Se S tem n≥2 elementos, dividir seus

    elementos em duas subsequências S1 e S2 com

    respectivamente n/2 e n/2 elementos

    � Conquista: Ordernar as subsequências S1 e S2usando MergeSort

    � Combinação: Intercale os elementos de S1 e S2de forma a obter uma seqüência ordenada

  • PAA-DCC-UFAM

    Merge Sort: Algoritmo

    � Analogia com o jogo de cartas

    � Temos duas pilhas ordenadas com as cartas de menor

    valor em cima

    � Desejamos juntar as duas pilhas (fazendo a

    intercalação) em uma única pilha de saída ordenada

    1) Escolher a menor das duas cartas nas pilhas

    2) Removê-la de sua pilha

    3) Colocá-la sobre a pilha de saída

    4) Repetir os passos 1,2,3 até uma das duas pilhas de entrada

    esvaziarem

  • PAA-DCC-UFAM

    Merge Sort: Algoritmo

    Merge-Sort(A, p, r)

    if p < r then

    q ← (p+r)/2Merge-Sort(A, p, q)

    Merge-Sort(A, q+1, r)

    Merge(A, p, q, r)

    Merge(A, p, q, r)

    Retire o menor entre o menor dos elementos de

    A[p…q] e A[q+1…r] e acrescente ao resultado. Repita

    até que as duas sub-sequências estejam vazias

    A é o arranjop, q e r são índices de numeração dos elementos do arranjo p ≤ q < r

    Se p≥ r, o subarranjo tem no máximo um elemento e, portanto, já está ordenado

  • PAA-DCC-UFAM

    MergeSort (Exemplo) - 1

  • PAA-DCC-UFAM

    MergeSort (Exemplo) - 2

  • PAA-DCC-UFAM

    MergeSort (Exemplo) - 3

  • PAA-DCC-UFAM

    MergeSort (Exemplo) - 4

  • PAA-DCC-UFAM

    MergeSort (Exemplo) - 5

  • PAA-DCC-UFAM

    MergeSort (Exemplo) - 6

  • PAA-DCC-UFAM

    MergeSort (Exemplo) - 7

  • PAA-DCC-UFAM

    MergeSort (Exemplo) - 8

  • PAA-DCC-UFAM

    MergeSort (Exemplo) - 9

  • PAA-DCC-UFAM

    MergeSort (Exemplo) - 10

  • PAA-DCC-UFAM

    MergeSort (Exemplo) - 11

  • PAA-DCC-UFAM

    MergeSort (Exemplo) - 12

  • PAA-DCC-UFAM

    MergeSort (Exemplo) - 13

  • PAA-DCC-UFAM

    MergeSort (Exemplo) - 14

  • PAA-DCC-UFAM

    MergeSort (Exemplo) - 15

  • PAA-DCC-UFAM

    MergeSort (Exemplo) - 16

  • PAA-DCC-UFAM

    MergeSort (Exemplo) - 17

  • PAA-DCC-UFAM

    MergeSort (Exemplo) - 18

  • PAA-DCC-UFAM

    MergeSort (Exemplo) - 19

  • PAA-DCC-UFAM

    MergeSort (Exemplo) - 20

  • PAA-DCC-UFAM

    MergeSort (Exemplo) - 21

  • PAA-DCC-UFAM

    MergeSort (Exemplo) - 22

  • PAA-DCC-UFAM

    Recorrências

    � As chamadas recursivas nos algoritmos podem ser descritas usando-se equações(ou inequações) de recorrência

    � Recorrência é uma equação ou desigualdade que descreve uma função em termos dos seus valores para entradas menores

  • PAA-DCC-UFAM

    Recorrências (2)

    � Exemplo: Busca Binária

    BuscaBin(A[1…n],q)

    if n=1

    then if A[n]=q then return n

    else return 0

    k←(n+1)/2

    if q < A[k] then BuscaBin(A[1…k-1],q)

    else BuscaBin(A[k…n],q)

  • PAA-DCC-UFAM

    Exemplo: MergeSort

    � Suposição: O tamanho do problema original é uma potência de dois (simplificação)

    Merge-Sort(A, p, r)

    if p < r then

    q←(p+r)/2Merge-Sort(A, p, q)

    Merge-Sort(A, q+1, r)

    Merge(A, p, q, r)

    Duas subsequências de tamanho n/2

  • PAA-DCC-UFAM

    Procedimento do Merge

    Merge(A, p, q, r)

    n1 = q-p+1

    n2 = r-q

    criar arranjos L[0..n1] e R[0..n2]

    for i=0 to n1-1

    do L[i]=A[p+i]

    for j=0 to n2-1

    do R[j]=A[q+j+1]

    L[n1]=∞

    R[n2]=∞

    i=0

    j=0

    for k=p to r

    do if L[i] ≤ R[j]

    then A[k]=L[i]

    i=i+1

    else A[K]=R[j]

    j=j+1

    Θ(1)

    Θ(n1)

    Θ(n2)

    Θ(1)

    Θ(n)

  • PAA-DCC-UFAM

    Complexidade do MergeSort

    ( ) ( )nnncn lg1lg Θ=+

    Caso base: ocorre quandon=1. Como lg 1=0, temosque lg n +1 fornece o número correto

    Hipótese indutiva: uma árvore de 2i nós, temos lg2i+1=i+1. Para 2i+1 nós temos lg 2i+1+1 = (i+1)+1

  • PAA-DCC-UFAM

    Exercícios

    Utilize as técnicas de indução, perturbação e integrais para resolver os seguintes somatórios: