Você está na página 1de 29

'

Analise de complexidade

Algoritmos polinomiais

&

'

An
alise 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 algoritmo
que resolve um problema de tamanho n quanto o espaco de memoria requerido
para esta execucao.
Complexidade computacional de um algoritmo se refere a` estimativa do
esforco computacional despendido para resolver o problema.
Pode ser medida pelo numero necessario de operacoes aritmeticas e logicas
como, por exemplo, o numero de adicoes, multiplicacoes e divisoes efetuadas
para resolver um sistema linear de ordem n.

c
2012
FFCf

&

'

An
alise de complexidade

Algoritmos polinomiais

Tipos de complexidade

Os problemas possuem complexidade de tempo que pode ser enquadrada em


dois grupos:
Algoritmos polinomiais, sendo a funcao de complexidade da forma
O(cpnp + cp1np1 + . . . + c1n + c0).
Algoritmos exponenciais, onde a funcao de complexidade tem a forma
O(cn), c > 1.
Numero de multiplicacoes utilizadas para resolver um sistema triangular
inferior de ordem n usando as substituicoes sucessivas e O( 12 n2 12 n) ou
O(n2).
Numero de adicoes necessarias para fazer a decomposicao LU de uma matriz
de ordem n e O( 13 n3 12 n2 + 16 n), ou, simplesmente, O(n3).

c
2012
FFCf

&

'

An
alise de complexidade

Algoritmos polinomiais

Tempo relativo das operacoes aritmeticas

O tempo para executar cada uma das operacoes aritmeticas depende de varios
fatores, 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 (e
subtracao) = 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

&

'

An
alise de complexidade

Algoritmos polinomiais

Analise de complexidade

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


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

(1)

i=m
n
X

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

(2)

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

(3)

a(n2 m2) + (a + 2b)(n m)


(ai + b) =
,
2

(4)

n(n + 1)(2n + 1) a 3 a 2 a
2
ai = a
= n + n + n.

(5)

i=1
n
X

i=1
n
X

i=m
n
X
i=1
c
2012
FFCf

&

'

An
alise 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 }
par
ametros de entrada n, c, a
{ grau, coeficientes e ponto a ser avaliado, onde c e tal que }
{ P (x) = c(1 )xn + c(2 )xn1 + + c(n)x + c(n+1 ) }
par
ametro de sada y { ordenada P (a) }
y c(1 )
para i 2 at
e n + 1 fa
ca
y y a + c(i)
fimpara
fimalgoritmo

c
2012
FFCf

&

'

An
alise de complexidade

Algoritmos polinomiais

Complexidade linear

Indicando somente a quantidade das operacoes aritmeticas, tem-se


Algoritmo Horner
para i 2 at
e n + 1 fa
ca
+ : 1, : 1
fimpara
fimalgoritmo

A operacao de adicao (+) e a operacao de multiplicacao () ocorrem apenas


uma vez e na estrutura parafa
ca controlada pela variavel i.
Numero de operacoes de adicao A(n) e de multiplicacao M (n), em funcao do
grau n do polinomio, em vista de (1), e
A(n) = M (n) =

n+1
X

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

i=2

A(n) = M (n) = n.
c
2012
FFCf

&

'

An
alise de complexidade

Algoritmos polinomiais

Complexidade quadratica: substituicoes sucessivas

Exemplo 2 Considere o algoritmo de substituicoes sucessivas,


Algoritmo Substitui
c
oes Sucessivas
{ Objetivo: Resolver o sistema triangular inferior Lx = c }
{
pelas substituicoes sucessivas }
par
ametros de entrada n, L, c
{ ordem, matriz triangular inferior e vetor independente }
par
ametro de sada x { solucao do sistema triangular inferior }
x(1 ) c(1 )/L(1 , 1 )
para i 2 at
e n fa
ca
Soma 0
para j 1 at
e i 1 fa
ca
Soma Soma + L(i, j) x(j)
fimpara
x(i) (c(i) Soma)/L(i, i)
fimpara
fimalgoritmo

c
2012
FFCf

&

'

An
alise de complexidade

Algoritmos polinomiais

Complexidade quadratica: adicoes

Mostrando apenas a quantidade das operacoes aritmeticas dentro das


estruturas de repeticao,
Algoritmo Substituic
oes Sucessivas
/: 1
para i 2 at
e n faca
para j 1 at
e i 1 faca
+ : 1, : 1
fimpara
+ : 1, / : 1
fimpara
fimalgoritmo

Numero de adicoes A(n) em funcao da ordem n da matriz, considerando


(1)(2), e

n
i1
n
n
X
X
X
X
n(n + 1)

1,
A(n) =
(1) + 1 =
[1(i 1) + 1] =
[i] 1 =
2
i=2

j=1

i=2

i=1

1 2 1
A(n) = n + n 1.
2
2
c
2012
FFCf

&

'

An
alise de complexidade

Algoritmos polinomiais

Complexidade quadratica: multiplicacoes


Algoritmo Substituico
es Sucessivas
/: 1
para i 2 at
e n faca
para j 1 at
e i 1 faca
+ : 1, : 1
fimpara
+ : 1, / : 1
fimpara
fimalgoritmo

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

n
i1
n
n
n
n
n
X
X
X
X
X
X
X
(1) = [i 1] =
M (n) =
i
1 = [i]1 [1]1,
i=2

j=1

i=2

i=2

i=2

i=1

i=1

n(n + 1)
1 (n 1),
M (n) =
2
1 2 1
M (n) = n n.
2
2
c
2012
FFCf

&

10

'

An
alise de complexidade

Algoritmos polinomiais

Complexidade quadratica: divisoes


Algoritmo Substituico
es Sucessivas
/: 1
para i 2 at
e n faca
para j 1 at
e i 1 faca
+ : 1, : 1
fimpara
+ : 1, / : 1
fimpara
fimalgoritmo

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


D(n) = 1 +

n
X
i=2

[1] = 1 +

n
X

[1] 1 = 1 + n 1,

i=1

D(n) = n.

c
2012
FFCf

&

11

'

An
alise de complexidade

Algoritmos polinomiais

Complexidade quadratica: polinomio de Lagrange

Exemplo 3 Seja o polinomio interpolador de Lagrange de grau n


n
n
Y
X
x xj
Ln(x) =
yi
.
xi xj
i=0

j=0
j 6= i

Expandindo, resulta a Expressao 1


x x1
x x2
x xn
Ln(x) = y0

...
x0 x1 x0 x2
x0 xn
x x0
x x2
x xn
+ y1

...
x1 x0 x1 x2
x1 xn
x x0
x x1
x xn1
. . . + yn

...
.
xn x0 xn x1
xn xn1
c
2012
FFCf

&

12

'

An
alise de complexidade

Algoritmos polinomiais

Polinomio de Lagrange: expressao 1


Algoritmo Lagrange Express
ao 1
{ Objetivo: Interpolar usando polinomio de Lagrange }
par
ametros de entrada m, x, y , z
{ numero de pontos, abscissas }
{ ordenadas e valor a interpolar }
par
ametro de sada r { valor interpolado }
r 0
para i 1 at
e m fa
ca
p y (i)
para j 1 at
e m fa
ca
se i 6= j ent
ao
p p ((z x(j))/(x(i) x(j)))
fimse
fimpara
r r +p
fimpara
fimalgoritmo

c
2012
FFCf

&

13

'

An
alise de complexidade

Algoritmos polinomiais

Polinomio de Lagrange: multiplicacoes e divisoes


Algoritmo Lagrange Express
ao 1
para i 1 at
e m faca
para j 1 at
e m faca
se i 6= j ent
ao
+ : 2, : 1, / : 1
fimse
fimpara
+: 1
fimpara
fimalgoritmo

Numero de multiplicacoes M (m) e divisoes D(m) em funcao do numero m de


pontos usados na interpolacao, em vista de (1), sao dados por

m
m
m m1
m
X
X
X
X

M (m) = D(m) =
(1)
[1(m 1)],
(1) =

i=1 j=1
i=1 j = 1
i=1
j 6= i

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


c
2012
FFCf

&

14

'

An
alise de complexidade

Algoritmos polinomiais

Polinomio de Lagrange: adicoes


Algoritmo Lagrange Express
ao 1
para i 1 at
e m faca
para j 1 at
e m faca
se i 6= j ent
ao
+ : 2, : 1, / : 1
fimse
fimpara
+: 1
fimpara
fimalgoritmo

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

m
m
m m1
m
X
X
X
X

A(m) =
(2)
+
1
(2) + 1 =
[2(m 1) + 1],

i=1 j=1
i=1 j = 1
i=1
j 6= i

A(m) =

m
X

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

i=1
c
2012
FFCf

&

15

'

An
alise 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 grau


do 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

c
2012
FFCf

&

n2 + n

16

'

An
alise de complexidade

Algoritmos polinomiais

Polinomio de Lagrange: expressao 2

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


resultar a Expressao 2
(x x1) (x x2) . . . (x xn)
Ln(x) = y0
(x0 x1) (x0 x2) . . . (x0 xn)
(x x0) (x x2) . . . (x xn)
+ y1
(x1 x0) (x1 x2) . . . (x1 xn)
(x x0) (x x1) . . . (x xn1)
. . . + yn
.
(xn x0) (xn x1) . . . (xn xn1)

c
2012
FFCf

&

17

'

An
alise de complexidade

Algoritmos polinomiais

Algoritmo do polinomio de Lagrange: expressao 2


Algoritmo Polin
omio Lagrange
{ Objetivo: Interpolar valor em tabela usando polinomio de Lagrange }
par
ametros de entrada m, x, y , z
{ numero de pontos, abscissas, ordenadas e valor a interpolar }
par
ametro de sada r { valor interpolado }
r 0
para i 1 at
e m fa
ca
c 1; d 1
para j 1 at
e m fa
ca
se i 6= j ent
ao
c c (z x(j)); d d (x(i) x(j))
fimse
fimpara
r r + y (i) c/d
fimpara
fimalgoritmo

c
2012
FFCf

&

18

'

An
alise de complexidade

Algoritmos polinomiais

Polinomio de Lagrange: adicoes e multiplicacoes


Algoritmo Polin
omio Lagrange
para i 1 at
e m faca
para j 1 at
e m faca
se i 6= j ent
ao
+ : 2, : 2
fimse
fimpara
+ : 1, : 1, / : 1
fimpara
fimalgoritmo

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

m
m
m m1
m
X
X
X
X

A(m) = M (m) =
(2)
+
1
(2) + 1 =
[2(m1)+1],

i=1 j=1
i=1 j = 1
i=1
j 6= i

A(m) = M (m) =

m
X

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

i=1
c
2012
FFCf

&

19

'

An
alise de complexidade

Algoritmos polinomiais

Polinomio de Lagrange: divisoes


Algoritmo Polin
omio Lagrange
para i 1 at
e m faca
para j 1 at
e m faca
se i 6= j ent
ao
+ : 2, : 2
fimse
fimpara
+ : 1, : 1, / : 1
fimpara
fimalgoritmo

Numero de divisoes D(m) em funcao do numero m de pontos usados na


interpolacao e
m
X
D(m) =
1 = m.
i=1

c
2012
FFCf

&

20

'

An
alise 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

'

An
alise de complexidade

Algoritmos polinomiais

Comparacao das complexidades

Operacoes

Complexidade Operacoes

Complexidade

adicoes

2n2 + 3n + 1

2n2 + 3n + 1

multiplicacoes n2 + n
divisoes

n2 + n
Expressao 1

adicoes

multiplicacoes 2n2 + 3n + 1 .
divisoes

n+1
Expressao 2

Comparando os resultados das duas expressoes, nota-se que o numero de


adicoes 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 grandeza
a menos.
O polinomio de Lagrange serve para exemplificar que uma mesma notacao
matematica pode resultar em algoritmos de diferentes complexidades.
Isto deve ser lembrado ao se elaborar um algoritmo.
c
2012
FFCf

&

22

'

An
alise de complexidade

Algoritmos polinomiais

Complexidade cubica

Exemplo 5 Considere o algoritmo de decomposicao LDLT , sem considerar as


operacoes para o calculo do determinante.
Algoritmo Decomposic
ao LDLT
{ Objetivo: Fazer a decomposicao LDLT de uma matriz A }
{
simetrica e definida positiva }
par
ametros de entrada n, A { ordem e matriz a ser decomposta }
par
ametros de sada A, Det
{ matriz decomposta A = L I + D e determinante }
Det 1
para j 1 at
e n faca
Soma 0
para k 1 at
e j 1 faca
Soma Soma + A(j, k)2 A(k, k)
fimpara
A(j, j) A(j, j) Soma
r = 1 /A(j, j); Det Det A(j, j)
para i j + 1 at
e n faca
Soma 0
para k 1 at
e j 1 faca
Soma Soma + A(i, k) A(k, k) A(j, k)
fimpara
A(i, j) (A(i, j) Soma) r
fimpara
fimpara
fimalgoritmo

c
2012
FFCf

&

23

'

An
alise de complexidade

Algoritmos polinomiais

complexidade cubica: adicoes


Algoritmo Decomposi
c
ao LDLT
para j 1 at
e n fa
ca
para k 1 at
e j 1 fa
ca
+ : 1, : 2
fimpara
+ : 1, / : 1
para i j + 1 at
e n fa
ca
para k 1 at
e j 1 fa
ca
+ : 1, : 2
fimpara
+ : 1, : 1
fimpara
fimpara
fimalgoritmo

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

j1
j1
n X
n

X
X
X
(1) + 1 ,
A(n) =
(1) + 1 +

j=1

c
2012
FFCf

&

k=1

i=j+1

k=1

24

'

An
alise de complexidade

Algoritmos polinomiais

Complexidade cubica: adicoes

cont.

j1
n X
X

j1
n

X
X
(1) + 1 ,
A(n) =
(1) + 1 +

j=1 k=1
i=j+1 k=1

n
n

X
X
=
(j 1) + 1 +
[(j 1) + 1] ,

j=1
n
X
j=1

i=j+1

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

n
X

{(n + 1)j j 2}, ver (5)

j=1

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

,
= (n + 1)
2
6
1 3 1 2 1
A(n) = n + n + n.
6
2
3
c
2012
FFCf

&

25

'

An
alise de complexidade

Algoritmos polinomiais

Complexidade cubica: multiplicacoes


Algoritmo Decomposi
c
ao LDLT
para j 1 at
e n fa
ca
para k 1 at
e j 1 fa
ca
+ : 1, : 2
fimpara
+ : 1, / : 1
para i j + 1 at
e n fa
ca
para k 1 at
e j 1 fa
ca
+ : 1, : 2
fimpara
+ : 1, : 1
fimpara
fimpara
fimalgoritmo

Considerando (1)(5), o numero de multiplicacoes M (n) em funcao da ordem


n e

j1
j1
n X
n

X
X
X
(2) + 1 ,
M (n) =
(2) +

j=1

c
2012
FFCf

&

k=1

i=j+1

k=1

26

'

An
alise de complexidade

Algoritmos polinomiais

Complexidade cubica: multiplicacoes

cont.

n
n

X
X
M (n) =
2(j 1) +
[2(j 1) + 1] ,

j=1
i=j+1

n
n
n

X
X
X
=
2j 2 +
[2j]
[1] ,

j=1
n
X

j=1
n
X
j=1

i=j+1

i=j+1

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


(2n+3)j

n
X
j=1

2j 2

n
X

(n + 2), ver (5)

j=1

n(n + 1)
n(n + 1)(2n + 1)
2
n(n + 2),
= (2n + 3)
2
6
1 3 1 2 5
M (n) = n + n n.
3
2
6
c
2012
FFCf

&

27

'

An
alise de complexidade

Algoritmos polinomiais

Complexidade cubica: divisoes


Algoritmo Decomposi
c
ao LDLT
para j 1 at
e n fa
ca
para k 1 at
e j 1 fa
ca
+ : 1, : 2
fimpara
+ : 1, / : 1
para i j + 1 at
e n fa
ca
para k 1 at
e j 1 fa
ca
+ : 1, : 2
fimpara
+ : 1, : 1
fimpara
fimpara
fimalgoritmo

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


n
X
D(n) =
1,
j=1

D(n) = n.
c
2012
FFCf

&

28

'

An
alise de complexidade

Algoritmos polinomiais

Fim

An
alise de complexidade

c
2012
FFCf

&

29

Você também pode gostar