Top Banner
An´ alise de complexidade Algoritmos polinomiais
29

Cálculo de Complexidade

Dec 19, 2015

Download

Documents

Heather Cooley

Cálculo de Complexidade
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Cálculo de Complexidade

' $

Analise de complexidade

Algoritmos polinomiais

& %

Page 2: Cálculo de Complexidade

' $Analise de complexidade Algoritmos polinomiais

Complexidade computacional

• Funcao de complexidade para medir o custo de execucao de um programa.

• Esta funcao pode ser tanto uma medida do tempo para executar o algoritmoque resolve um problema de tamanho n quanto o espaco de memoria requeridopara esta execucao.

• Complexidade computacional de um algoritmo se refere a estimativa doesforco computacional despendido para resolver o problema.

• Pode ser medida pelo numero necessario de operacoes aritmeticas e logicascomo, por exemplo, o numero de adicoes, multiplicacoes e divisoes efetuadaspara resolver um sistema linear de ordem n.

c©2012 FFCf 2& %

Page 3: Cálculo de Complexidade

' $Analise de complexidade Algoritmos polinomiais

Tipos de complexidade

• Os problemas possuem complexidade de tempo que pode ser enquadrada emdois grupos:

– Algoritmos polinomiais, sendo a funcao de complexidade da formaO(cpn

p + cp−1np−1 + . . . + c1n + c0).

– Algoritmos exponenciais, onde a funcao de complexidade tem a formaO(cn), c > 1.

• Numero de multiplicacoes utilizadas para resolver um sistema triangularinferior de ordem n usando as substituicoes sucessivas e O(1

2n2 − 1

2n) ou

O(n2).

• Numero de adicoes necessarias para fazer a decomposicao LU de uma matrizde ordem n e O(1

3n3 − 1

2n2 + 1

6n), ou, simplesmente, O(n3).

c©2012 FFCf 3& %

Page 4: Cálculo de Complexidade

' $Analise de complexidade Algoritmos polinomiais

Tempo relativo das operacoes aritmeticas

• O tempo para executar cada uma das operacoes aritmeticas depende de variosfatores, tais como, a arquitetura do microprocessador, sua frequencia (clock),numero de ciclos e tipo do dado (inteiro ou ponto flutuante).

• Aproximadamente, o tempo relativo para executar uma operacao e: adicao (esubtracao) = 1, multiplicacao = 2 e divisao = 9.

• A funcao de complexidade sera definida, separadamente, para adicao,multiplicacao e divisao, sendo uma subtracao contada como uma adicao.

c©2012 FFCf 4& %

Page 5: Cálculo de Complexidade

' $Analise de complexidade Algoritmos polinomiais

Analise de complexidade

• Algumas propriedades de soma de sequencias, sendo a e b constantes:n∑

i=m

a = a(n−m + 1), (1)

n∑i=1

i =n(n + 1)

2=

1

2n2 +

1

2n, (2)

n∑i=1

(ai + b) =n[a(n + 1) + 2b]

2=

a

2n2 +

a + 2b

2n, (3)

n∑i=m

(ai + b) =a(n2 −m2) + (a + 2b)(n−m)

2, (4)

n∑i=1

ai2 = an(n + 1)(2n + 1)

6=

a

3n3 +

a

2n2 +

a

6n. (5)

c©2012 FFCf 5& %

Page 6: Cálculo de Complexidade

' $Analise de complexidade Algoritmos polinomiais

Complexidade linear: algoritmo de Horner

Exemplo 1 Seja o algoritmo para avaliar um polinomio de grau n no ponto a.

Algoritmo Horner

{ Objetivo: Avaliar um polinomio de grau n no ponto a }parametros de entrada n, c, a

{ grau, coeficientes e ponto a ser avaliado, onde c e tal que }{ P (x) = c(1 )xn + c(2 )xn−1 + · · · + c(n)x + c(n+1 ) }

parametro de saıda y { ordenada P (a) }y ← c(1 )

para i ← 2 ate n + 1 faca

y ← y ∗ a + c(i)

fimpara

fimalgoritmo

c©2012 FFCf 6& %

Page 7: Cálculo de Complexidade

' $Analise de complexidade Algoritmos polinomiais

Complexidade linear

• Indicando somente a quantidade das operacoes aritmeticas, tem-se

Algoritmo Horner

para i ← 2 ate n + 1 faca

+: 1, ∗ : 1

fimpara

fimalgoritmo

• A operacao de adicao (+) e a operacao de multiplicacao (∗) ocorrem apenasuma vez e na estrutura para−faca controlada pela variavel i .

• Numero de operacoes de adicao A(n) e de multiplicacao M(n), em funcao dograu n do polinomio, em vista de (1), e

A(n) = M(n) =

n+1∑i=2

1 = 1(n + 1− 2 + 1),

A(n) = M(n) = n.

c©2012 FFCf 7& %

Page 8: Cálculo de Complexidade

' $Analise de complexidade Algoritmos polinomiais

Complexidade quadratica: substituicoes sucessivas

Exemplo 2 Considere o algoritmo de substituicoes sucessivas,

Algoritmo Substituicoes Sucessivas

{ Objetivo: Resolver o sistema triangular inferior Lx = c }{ pelas substituicoes sucessivas }parametros de entrada n, L, c

{ ordem, matriz triangular inferior e vetor independente }parametro de saıda x { solucao do sistema triangular inferior }x(1 )← c(1 )/L(1 , 1 )

para i ← 2 ate n faca

Soma← 0

para j ← 1 ate i − 1 faca

Soma← Soma + L(i , j) ∗ x(j)

fimpara

x(i)← (c(i)− Soma)/L(i , i)

fimpara

fimalgoritmo

c©2012 FFCf 8& %

Page 9: Cálculo de Complexidade

' $Analise de complexidade Algoritmos polinomiais

Complexidade quadratica: adicoes

•Mostrando apenas a quantidade das operacoes aritmeticas dentro dasestruturas de repeticao,

Algoritmo Substituicoes Sucessivas/ : 1para i ← 2 ate n faca

para j ← 1 ate i − 1 faca+: 1, ∗ : 1

fimpara+: 1, / : 1

fimparafimalgoritmo

• Numero de adicoes A(n) em funcao da ordem n da matriz, considerando(1)–(2), e

A(n) =

n∑i=2

i−1∑j=1

(1) + 1

=

n∑i=2

[1(i− 1) + 1] =

n∑i=1

[i]− 1 =n(n + 1)

2− 1,

A(n) =1

2n2 +

1

2n− 1.

c©2012 FFCf 9& %

Page 10: Cálculo de Complexidade

' $Analise de complexidade Algoritmos polinomiais

Complexidade quadratica: multiplicacoes

Algoritmo Substituicoes Sucessivas/ : 1para i ← 2 ate n faca

para j ← 1 ate i − 1 faca+: 1, ∗ : 1

fimpara+: 1, / : 1

fimparafimalgoritmo

• Numero de multiplicacoes M(n) em funcao da ordem n e

M(n)=

n∑i=2

i−1∑j=1

(1)

=

n∑i=2

[i−1]=

n∑i=2

i−n∑i=2

1=

n∑i=1

[i]−1

− n∑

i=1

[1]−1

,M(n) =

(n(n + 1)

2− 1

)− (n− 1),

M(n) =1

2n2 − 1

2n.

c©2012 FFCf 10& %

Page 11: Cálculo de Complexidade

' $Analise de complexidade Algoritmos polinomiais

Complexidade quadratica: divisoes

Algoritmo Substituicoes Sucessivas/ : 1para i ← 2 ate n faca

para j ← 1 ate i − 1 faca+: 1, ∗ : 1

fimpara+: 1, / : 1

fimparafimalgoritmo

• Numero de divisoes D(n) em funcao de n e

D(n) = 1 +

n∑i=2

[1] = 1 +

n∑i=1

[1]− 1 = 1 + n− 1,

D(n) = n.

c©2012 FFCf 11& %

Page 12: Cálculo de Complexidade

' $Analise de complexidade Algoritmos polinomiais

Complexidade quadratica: polinomio de Lagrange

Exemplo 3 Seja o polinomio interpolador de Lagrange de grau n

Ln(x) =

n∑i=0

yi

n∏j = 0j 6= i

x− xjxi − xj

.

• Expandindo, resulta a Expressao 1

Ln(x) = y0 ×x− x1

x0 − x1× x− x2

x0 − x2× . . .× x− xn

x0 − xn

+ y1 ×x− x0

x1 − x0× x− x2

x1 − x2× . . .× x− xn

x1 − xn

. . . + yn ×x− x0

xn − x0× x− x1

xn − x1× . . .× x− xn−1

xn − xn−1.

c©2012 FFCf 12& %

Page 13: Cálculo de Complexidade

' $Analise de complexidade Algoritmos polinomiais

Polinomio de Lagrange: expressao 1

Algoritmo Lagrange Expressao 1

{ Objetivo: Interpolar usando polinomio de Lagrange }parametros de entrada m, x , y , z

{ numero de pontos, abscissas }{ ordenadas e valor a interpolar }

parametro de saıda r { valor interpolado }r ← 0

para i ← 1 ate m faca

p ← y(i)

para j ← 1 ate m faca

se i 6= j entao

p ← p ∗ ((z − x(j))/(x(i)− x(j)))

fimse

fimpara

r ← r + p

fimpara

fimalgoritmo

c©2012 FFCf 13& %

Page 14: Cálculo de Complexidade

' $Analise de complexidade Algoritmos polinomiais

Polinomio de Lagrange: multiplicacoes e divisoes

Algoritmo Lagrange Expressao 1para i ← 1 ate m faca

para j ← 1 ate m facase i 6= j entao

+: 2, ∗ : 1, / : 1fimse

fimpara+: 1

fimparafimalgoritmo

• Numero de multiplicacoes M(m) e divisoes D(m) em funcao do numero m depontos usados na interpolacao, em vista de (1), sao dados por

M(m) = D(m) =

m∑i=1

m∑

j = 1

j 6= i

(1)

=

m∑i=1

m−1∑j=1

(1)

=

m∑i=1

[1(m− 1)],

M(m) = D(m) = m(m− 1) = m2 −m.

c©2012 FFCf 14& %

Page 15: Cálculo de Complexidade

' $Analise de complexidade Algoritmos polinomiais

Polinomio de Lagrange: adicoes

Algoritmo Lagrange Expressao 1para i ← 1 ate m faca

para j ← 1 ate m facase i 6= j entao

+: 2, ∗ : 1, / : 1fimse

fimpara+: 1

fimparafimalgoritmo

• Numero de adicoes A(m) em funcao de m e

A(m) =

m∑i=1

m∑

j = 1

j 6= i

(2) + 1

=

m∑i=1

m−1∑j=1

(2) + 1

=

m∑i=1

[2(m− 1) + 1],

A(m) =

m∑i=1

[2m− 1] = m(2m− 1) = 2m2 −m.

c©2012 FFCf 15& %

Page 16: Cálculo de Complexidade

' $Analise de complexidade Algoritmos polinomiais

Complexidade em funcao do grau n

• Numero de pontos m usados na interpolacao e igual a n + 1, onde n e o graudo polinomio, entao

A(n) = 2m2 −m = 2(n + 1)2 − (n + 1) = 2n2 + 3n + 1,

M(n) = m2 −m = (n + 1)2 − (n + 1) = n2 + n,

D(n) = m2 −m = (n + 1)2 − (n + 1) = n2 + n.

Operacoes Complexidade

adicoes 2n2 + 3n + 1

multiplicacoes n2 + n

divisoes n2 + n

.

c©2012 FFCf 16& %

Page 17: Cálculo de Complexidade

' $Analise de complexidade Algoritmos polinomiais

Polinomio de Lagrange: expressao 2

Exemplo 4 O polinomio de Lagrange tambem pode ser expandido de modo aresultar a Expressao 2

Ln(x) = y0 ×(x− x1)× (x− x2)× . . .× (x− xn)

(x0 − x1)× (x0 − x2)× . . .× (x0 − xn)

+ y1 ×(x− x0)× (x− x2)× . . .× (x− xn)

(x1 − x0)× (x1 − x2)× . . .× (x1 − xn)

. . . + yn ×(x− x0)× (x− x1)× . . .× (x− xn−1)

(xn − x0)× (xn − x1)× . . .× (xn − xn−1).

c©2012 FFCf 17& %

Page 18: Cálculo de Complexidade

' $Analise de complexidade Algoritmos polinomiais

Algoritmo do polinomio de Lagrange: expressao 2

Algoritmo Polinomio Lagrange

{ Objetivo: Interpolar valor em tabela usando polinomio de Lagrange }parametros de entrada m, x , y , z

{ numero de pontos, abscissas, ordenadas e valor a interpolar }parametro de saıda r { valor interpolado }r ← 0

para i ← 1 ate m faca

c ← 1 ; d ← 1

para j ← 1 ate m faca

se i 6= j entao

c ← c ∗ (z − x(j)); d ← d ∗ (x(i)− x(j))

fimse

fimpara

r ← r + y(i) ∗ c/dfimpara

fimalgoritmo

c©2012 FFCf 18& %

Page 19: Cálculo de Complexidade

' $Analise de complexidade Algoritmos polinomiais

Polinomio de Lagrange: adicoes e multiplicacoes

Algoritmo Polinomio Lagrangepara i ← 1 ate m faca

para j ← 1 ate m facase i 6= j entao

+: 2, ∗ : 2fimse

fimpara+: 1, ∗ : 1, / : 1

fimparafimalgoritmo

• Numero de adicoes A(m) e multiplicacoes M(m) em funcao de m e, por (1),

A(m) = M(m) =

m∑i=1

m∑

j = 1

j 6= i

(2) + 1

=

m∑i=1

m−1∑j=1

(2) + 1

=

m∑i=1

[2(m−1)+1],

A(m) = M(m) =

m∑i=1

[2m− 1] = m(2m− 1) = 2m2 −m.

c©2012 FFCf 19& %

Page 20: Cálculo de Complexidade

' $Analise de complexidade Algoritmos polinomiais

Polinomio de Lagrange: divisoes

Algoritmo Polinomio Lagrangepara i ← 1 ate m faca

para j ← 1 ate m facase i 6= j entao

+: 2, ∗ : 2fimse

fimpara+: 1, ∗ : 1, / : 1

fimparafimalgoritmo

• Numero de divisoes D(m) em funcao do numero m de pontos usados nainterpolacao e

D(m) =

m∑i=1

1 = m.

c©2012 FFCf 20& %

Page 21: Cálculo de Complexidade

' $Analise de complexidade Algoritmos polinomiais

Complexidade em funcao do grau n

• Complexidade computacional do algoritmo em funcao do grau n (= m− 1)

A(n) = 2m2 −m = 2(n + 1)2 − (n + 1) = 2n2 + 3n + 1,

M(n) = 2m2 −m = 2(n + 1)2 − (n + 1) = 2n2 + 3n + 1,

D(n) = m = n + 1.

c©2012 FFCf 21& %

Page 22: Cálculo de Complexidade

' $Analise de complexidade Algoritmos polinomiais

Comparacao das complexidades

Operacoes Complexidade

adicoes 2n2 + 3n + 1

multiplicacoes n2 + n

divisoes n2 + n

Operacoes Complexidade

adicoes 2n2 + 3n + 1

multiplicacoes 2n2 + 3n + 1

divisoes n + 1

Expressao 1 Expressao 2

.

• Comparando os resultados das duas expressoes, nota-se que o numero deadicoes e o mesmo e o de multiplicacoes e da mesma ordem O(n2).

• O numero de divisoes utilizado pela Expressao 2 e de uma ordem de grandezaa menos.

• O polinomio de Lagrange serve para exemplificar que uma mesma notacaomatematica pode resultar em algoritmos de diferentes complexidades.

• Isto deve ser lembrado ao se elaborar um algoritmo.

c©2012 FFCf 22& %

Page 23: Cálculo de Complexidade

' $Analise de complexidade Algoritmos polinomiais

Complexidade cubica

Exemplo 5 Considere o algoritmo de decomposicao LDLT , sem considerar asoperacoes para o calculo do determinante.

Algoritmo Decomposicao LDLT

{ Objetivo: Fazer a decomposicao LDLT de uma matriz A }{ simetrica e definida positiva }parametros de entrada n, A { ordem e matriz a ser decomposta }parametros de saıda A, Det{ matriz decomposta A = L− I + D e determinante }Det ← 1para j ← 1 ate n facaSoma← 0para k ← 1 ate j − 1 faca

Soma← Soma + A(j , k)2 ∗ A(k , k)fimparaA(j , j)← A(j , j)− Somar = 1/A(j , j); Det ← Det ∗ A(j , j)para i ← j + 1 ate n facaSoma← 0para k ← 1 ate j − 1 facaSoma← Soma + A(i , k) ∗ A(k , k) ∗ A(j , k)

fimparaA(i , j)← (A(i , j)− Soma) ∗ r

fimparafimpara

fimalgoritmo

c©2012 FFCf 23& %

Page 24: Cálculo de Complexidade

' $Analise de complexidade Algoritmos polinomiais

complexidade cubica: adicoes

Algoritmo Decomposicao LDLT

para j ← 1 ate n facapara k ← 1 ate j − 1 faca

+: 1, ∗ : 2fimpara+: 1, / : 1para i ← j + 1 ate n faca

para k ← 1 ate j − 1 faca+: 1, ∗ : 2

fimpara+: 1, ∗ : 1

fimparafimpara

fimalgoritmo

• Numero de adicoes A(n) em funcao da ordem n da matriz e

A(n) =

n∑j=1

j−1∑k=1

(1) + 1 +

n∑i=j+1

j−1∑k=1

(1) + 1

,

c©2012 FFCf 24& %

Page 25: Cálculo de Complexidade

' $Analise de complexidade Algoritmos polinomiais

Complexidade cubica: adicoes cont.

A(n) =

n∑j=1

j−1∑k=1

(1) + 1 +

n∑i=j+1

j−1∑k=1

(1) + 1

,

=

n∑j=1

(j − 1) + 1 +

n∑i=j+1

[(j − 1) + 1]

,

=

n∑j=1

{j + j[n− (j + 1) + 1]} =

n∑j=1

{(n + 1)j − j2}, ver (5)

= (n + 1)n(n + 1)

2− n(n + 1)(2n + 1)

6,

A(n) =1

6n3 +

1

2n2 +

1

3n.

c©2012 FFCf 25& %

Page 26: Cálculo de Complexidade

' $Analise de complexidade Algoritmos polinomiais

Complexidade cubica: multiplicacoes

Algoritmo Decomposicao LDLT

para j ← 1 ate n facapara k ← 1 ate j − 1 faca

+: 1, ∗ : 2fimpara+: 1, / : 1para i ← j + 1 ate n faca

para k ← 1 ate j − 1 faca+: 1, ∗ : 2

fimpara+: 1, ∗ : 1

fimparafimpara

fimalgoritmo

• Considerando (1)–(5), o numero de multiplicacoes M(n) em funcao da ordemn e

M(n) =

n∑j=1

j−1∑k=1

(2) +

n∑i=j+1

j−1∑k=1

(2) + 1

,

c©2012 FFCf 26& %

Page 27: Cálculo de Complexidade

' $Analise de complexidade Algoritmos polinomiais

Complexidade cubica: multiplicacoes cont.

M(n) =

n∑j=1

2(j − 1) +

n∑i=j+1

[2(j − 1) + 1]

,

=

n∑j=1

2j − 2 +

n∑i=j+1

[2j]−n∑

i=j+1

[1]

,

=

n∑j=1

{2j − 2 + 2j(n− (j + 1) + 1)− (n− (j + 1) + 1)},

=

n∑j=1

(2n+3)j −n∑

j=1

2j2 −n∑

j=1

(n + 2), ver (5)

= (2n + 3)n(n + 1)

2− 2

n(n + 1)(2n + 1)

6− n(n + 2),

M(n) =1

3n3 +

1

2n2 − 5

6n.

c©2012 FFCf 27& %

Page 28: Cálculo de Complexidade

' $Analise de complexidade Algoritmos polinomiais

Complexidade cubica: divisoes

Algoritmo Decomposicao LDLT

para j ← 1 ate n facapara k ← 1 ate j − 1 faca

+: 1, ∗ : 2fimpara+: 1, / : 1para i ← j + 1 ate n faca

para k ← 1 ate j − 1 faca+: 1, ∗ : 2

fimpara+: 1, ∗ : 1

fimparafimpara

fimalgoritmo

• Numero de operacoes de divisao D(n) em funcao da ordem n da matriz e

D(n) =

n∑j=1

1,

D(n) = n.

c©2012 FFCf 28& %

Page 29: Cálculo de Complexidade

' $Analise de complexidade Algoritmos polinomiais

Fim

Analise de complexidade

c©2012 FFCf 29& %