cálculo de complexidade

29
An´ alise de complexidade Algoritmos polinomiais

Upload: heather-cooley

Post on 19-Dec-2015

219 views

Category:

Documents


0 download

DESCRIPTION

Cálculo de Complexidade

TRANSCRIPT

' $

Analise de complexidade

Algoritmos polinomiais

& %

' $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& %

' $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& %

' $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& %

' $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& %

' $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& %

' $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& %

' $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& %

' $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& %

' $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& %

' $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& %

' $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& %

' $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& %

' $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& %

' $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& %

' $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& %

' $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& %

' $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& %

' $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& %

' $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& %

' $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& %

' $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& %

' $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& %

' $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& %

' $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& %

' $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& %

' $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& %

' $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& %

' $Analise de complexidade Algoritmos polinomiais

Fim

Analise de complexidade

c©2012 FFCf 29& %