Cálculo de Complexidade
-
Upload
heather-cooley -
Category
Documents
-
view
219 -
download
0
description
Transcript of 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& %
' $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& %