• Nenhum resultado encontrado

Complexidade de Algoritmos. Edson Prestes

N/A
N/A
Protected

Academic year: 2021

Share "Complexidade de Algoritmos. Edson Prestes"

Copied!
22
0
0

Texto

(1)

Complexidade de Algoritmos

Edson Prestes

(2)

Complexidade de Algoritmos

Mostre o principio da absorção

Conceitos Auxiliares

(3)

Complexidade de Algoritmos

 Considere duas funções f e g de IN em IR

+

.

 Freqüentemente, a partir de um certo ponto, uma função fica sempre maior que a outra. Se f é O(g), então Máx ( f, g ) também é O(g).

Exemplo: como 2n + 3 é O(n2 ), então Máx (2n + 3, n2) é O(n2).

 Em alguns casos esta dominância pode não existir. Uma solução é utilizar para a ordem do máximo pontual Máx ( f, g ) a soma pontual, dada por

( f + g )(n) :=f(n) + g(n).

 Outra sugestão é utilizar o máximo assintótico em ordem (MxAO).

Conceitos Auxiliares

(4)

Complexidade de Algoritmos

O máximo assintótico deve ser comutativo.

(i): MxAO ( f, g ) = MxAO ( g, f ).

Devemos também requerer que as funções sejam dominadas.

(ii): f = O( MxAO ( f, g ) ) e g = O( MxAO ( f, g ) ).

Para ter uma cota menos folgada podemos exigir que o máximo assintótico seja a melhor cota superior .

(iii): MxAO ( f, g ) = O( h ), sempre que f = O( h ) e g = O( h ).

Para tratar melhor o caso de dominância de uma das funções podemos Requerer também a seguinte propriedade.

(iv): MxAO ( f, g ) = g, sempre que (∃n

0

∈N)(∀n ≥ n

0

): f(n) ≤ g(n).

Conceitos Auxiliares

(5)

Complexidade de Algoritmos

Conceitos Auxiliares

Considere as propriedades (ii) (dominância) e (iii) (melhor cota). Verifique

quais delas são satisfeitas em cada caso abaixo

(6)

Complexidade de Algoritmos

 Considere uma operação de atribuição ve

 A custo da atribuição é igual a

ACP - Atribuição

Na maioria das vezes esta complexidade fica reduzida à avaliação da expressão e, logo

Sua complexidade pessimista tem as seguintes cotas

A ordem da complexidade pessimista da atribuição é

(7)

Complexidade de Algoritmos

Considere o seguinte exemplo.

a) para variáveis inteiras a.1) i<-0 {inicialização}

a.2) j<-i {tranferência}

b) para lista v de inteiros e variável inteira m

m<-Max(v) //determinar maximo e tranferi-lo para m

c) para listas u,v, w

c.1) u<-v //tranferência de elementos

c.2) w<-reversa(u) // inversão de lista e atribuição para w

ACP - Atribuição

A complexidade é constante logo é O(1)

A complexidade é linear e igual a n, logo, é O(n)

A complexidade é 2n, i.e., O(n)

A complexidade é n, logo é, O(n)

(8)

Complexidade de Algoritmos

 Considere as listas u e v de inteiros e a seguinte operação de atribuição uordene(v), onde ordena tem complexidade n

2

e a atribuição tem complexidade n. Qual é a complexidade resultante?

ACP - Atribuição

C

p

[uordene(v)]=C

p

[ordene(v)]+C

p

[

ordena(v)

] C

p

[uordene(v)]= n

2

+n

C

p

[uordene(v)] é O(n

2

)

Se não considerarmos a transferência de valores então, a complexidade de ve fica reduzida à avaliação da expressão e, ou seja,

fica reduzida à complexidade da instrução de ordenação.

(9)

Complexidade de Algoritmos

 Suponha que para todo d com tam(d) ≤ n, tem-se que calc[e](d) ≤ f(n) e transf[e(d)] ≤ g(n). Então pode-se garantir para entradas d com

tam(d) n que desemp[ve](d) ≤ f(n)+g(n) ?

ACP - Atribuição

(10)

Complexidade de Algoritmos

 O desempenho da seqüência S;T é a soma dos desempenhos de suas componentes

ACP - Seqüência

(11)

Complexidade de Algoritmos

 De maneira geral a execução da seqüência S;T tem sobre a entrada d, os esforços computacionais associados à

Execução de S sobre a entrada d;

Execução de T sobre a entrada S(d).

ACP - Seqüência

Assim o desempenho da seqüência S;T com entrada d é dado por

(12)

Complexidade de Algoritmos

 O desempenho da seqüência S;T é a soma dos desempenhos de suas componentes

Preservando assintoticamente o tamanho da entrada

 A complexidade pessimista da seqüência tem cotas

ACP - Seqüência

 A ordem da complexidade é

(13)

Complexidade de Algoritmos

 Dados dois algoritmos Prim(u) e Buscab(a,v), considere a seqüência: vPrim(u) ; Buscab( a , v ).

 Suponha que

 Qual é a complexidade do algoritmo composto ?

ACP - Seqüência

(14)

c

p

[v P rim(u)](n) = c

p

[P rim(u)](n) + c

p

[ ](n) c

p

[P rim(u)](n) = n c

p

[ ](n) = 1

c

p

[v P rim(u)](n) = n + 1 c

p

[Buscab](n/2) = log

2

(n/2)

= n + 1 + log

2

(n/2) = O(n)

Complexidade de Algoritmos

ACP - Seqüência

c

p

[v P rim(u); Buscab(a, v )](n) =

c

p

[v P rim(u)](n) + c

p

[Buscab(a, v)](n/2)

c

p

[v P rim(u); Buscab(a, v)](n) =

(15)

Complexidade de Algoritmos

Complexidade geral

 A complexidade pessimista da seqüência tem cotas

 Onde

 A ordem da complexidade é

ACP - Seqüência

(16)

Complexidade de Algoritmos

 Considere os seguintes exemplos.

a) para lista v de inteiros e variável inteira m

mMax(v); //determinar maximo e tranferi-lo para m mm+1;

b) para listas u,v, w uv //tranferencia

wreversa(u) // inversão de lista e atribuicao para w

ACP - Seqüência

A complexidade tem ordem n+1 : O(n)

A complexidade tem ordem n+n+n: O(n)

(17)

Complexidade de Algoritmos

Considere o seguinte exemplo.

v Prim(u) ; w Fin(u) ;

v Ordene(v) ; w Ordene(w) ; u Concat( v , w )

Suponha que

- Prim dá como saída a primeira metade da lista u; e Fin dá a segunda metade de sua entrada. Ambas tem complexidade linear no tamanho da entrada.

- Ordene tem complexidade quadrática no tamanho da entrada;

- Concat( v , w ) dá como saída a concatenação das listas v e w, com complexidade O( p + q ), com p e q os comprimentos de v e w, respectivamente

Qual é a complexidade do algoritmo ?

ACP - Seqüência

(18)

Complexidade de Algoritmos

Suponha que desemp[S] (d) ≤ f(n) e desemp[T](d) ≤ g(n), para todo d com tam(d) ≤ n. Verifique em que casos podemos garantir que desemp[S;T] ≤ f(n) +g(n) para entradas d com tam(d) ≤ n.

a) Quando S preserva o tamanho da entrada d, i. e. , tam(S(d))=tam(d).

b) Quando S não aumenta o tamanho da entrada d, i. e. , tam(S(d)) ≤ tam(d).

ACP - Seqüência

(19)

Complexidade de Algoritmos

 A estrutura condicional pode assumir diversas formas, as mais usuais são :

– se b então S

– se b então S senão T

 Exemplo:

Para variável inteira I:

Se I=0 então II+1

Avaliar a condição : complexidade Θ (1) Executar a atribuição : complexidade Θ (1) No pior caso, a complexidade é igual a Θ (1)

ACP - Condicionais

(20)

Complexidade de Algoritmos

 Exemplo:

Para variável inteira I:

Se m=0 então mmax(v)

Avaliar a condição : complexidade Θ (1) Executar a atribuição : complexidade O(n) No pior caso, a complexidade é igual a O(n)

ACP - Condicionais

(21)

Complexidade de Algoritmos

 O desempenho desemp[ se b então S ](d) da estrutura condicional se b então S, com entrada d é dado por:

– aval [ b ](d) + desemp[ S ](d) caso o valor de b em d seja verdadeiro;

– aval [ b ](d) caso o valor de b em d seja falso.

ACP - Condicionais

(22)

Complexidade de Algoritmos

 A complexidade pessimista de se b então S é limitada da seguinte maneira

 A ordem da complexidade é

ACP - Condicionais

Referências

Documentos relacionados

Especialistas em engenharia de estruturas, arquitectura paisagísta, horticultura, ciência dos materiais e dos solos, …... Uma rede internacional

O Gráfico 18 representa a capacidade de sobreposição segundo a variável intervalo de tempo onde se verifica que tal como para os seios nasais na analise em OPGs mais de 50% da

Os resultados demonstraram que a utilização dos diferentes tipos de amido não afetou as propriedades da mortadela quando comparados entre eles durante o shef life, não houve

Desta forma, o objetivo deste estudo foi avaliar a associação entre risco social familiar, risco individual bucal, risco de cárie e doença periodontal com variáveis

Diante dessa contextualização, da busca por um desenvolvimento sustentável e das oportunidades de crescimento que o turismo proporciona a um destino, destaca-se o povoado Santo

(17), mostrou que não foi possível separar os componentes minerais por flotação ou separação magnética, como é feito na Otanmaki. Apesar de, a princ,! pio, a

His most prominent group shows include: A Casa Ocupada (Casa da Cerca, 2014); La Colección (Fundación Barrié, A Coruña, 2010; 2011); Terceira Metade curated by Marta Mestre and

Para uma entrada não simples, os processos de decomposição e de combinação são chamados juntamente com o teste de simplicidade.. Complexidade