• Nenhum resultado encontrado

Complexidade de Algoritmos. Edson Prestes

N/A
N/A
Protected

Academic year: 2021

Share "Complexidade de Algoritmos. Edson Prestes"

Copied!
20
0
0

Texto

(1)

Complexidade de Algoritmos

Edson Prestes

(2)

Complexidade de Algoritmos

Algoritmo: Prod_Int(n, p , q : Int) → Int 1. se n = 1

2. Então r ← p . q ;

3. retorne-saída( r ); {saída direta}

4. fim-então

5. Senão x ← p1 + p2 ; y ← q1 + q2 ;.

6. z Prod_Int(n/2, x2 , y2 ) ;

7. t ← ( x1 * y1 ) * b

n

+ ( x1 * y2 + x2 * y1 ) * b

(n/2)

+ z ; 8. u Prod_Int(n/2, p1 , q1 ) ;

9. v Prod_Int(n/2, p2 , q2 ) ;

10. r u * b

n

+ ( t - u - v ) * b

(n/2)

+ v ; {combinação}

11. retorne-saída( r ) {saída combinada}

12. fim-senão

X e Y têm comprimento n/2 ou 1+n/2. X2 e Y2 têm comprimento n/2. X1 e Y1 corresponde aos dígitos mais a esquerda de X e Y, respectivamente, os quais podem ser zero ou 1.

Projeto e Análise de Algoritmos

Quais são as árvores de execução para a entrada (n=2, p=12, q=35) ?

(3)

Complexidade de Algoritmos

Podemos descrever o algoritmo através da seguinte equação de recorrência

Projeto e Análise de Algoritmos

Baseado nisto, mostre que o algoritmo é

Lembre que

(4)

Complexidade de Algoritmos

Divisão e conquista m-ária

Funcao Div_Conq_m(d:D) → R

1. Se smpl(d)

2. Então r ← drt(d) 3. Fim-então

4. Senão

5. D

1

← part

1

(d); …; D

m

← part

m

(d)

6. r

1

← Div_Conq_m (d

1

); … ; r

m

← Div_Conq_m (d

m

) 7. r ← combina_m (r

1

, … , r

m

)

8. Retornar-saída (r) 9. Fim-senão

10. Fim-se

11. Fim-função

Métodos de Projeto de Algoritmos

(5)

Complexidade de Algoritmos

Métodos de Projeto de Algoritmos

Caso smpl(d) seja verdadeiro, temos

Desemp[Div_Conq_m] (d) = aval[smpl](d) + desemp[drt](d) Caso smpl(d) seja falso, temos

Desemp[Div_Conq_m] (d) = aval[smpl](d) +

+ desemp[part

1

](d) + … + desemp[part

m

](d)

+ Desemp[Div_Conq_m] (part

1

(d)) + … + Desemp[Div_Conq_m] (part

m

(d))

+ Desemp[cmbn_m](Div_Conq_m(part

1

(d)), …, Div_Conq_m(part

m

(d)))

(6)

Complexidade de Algoritmos

Métodos de Projeto de Algoritmos

Adicionando um discriminador a ∈ N, temos

Caso tam(d) ≤ a (smpl(d) verdadeiro)

Desemp[Div_Conq_m] (d) = aval[smpl](d) + desemp[drt](d) Caso tam(d)>a (smpl(d) falso), temos

Desemp[Div_Conq_m] (d) = aval[smpl](d) +

+ desemp[part

1

](d) + … + desemp[part

m

](d)

+ Desemp[Div_Conq_m] (part

1

(d)) + … + Desemp[Div_Conq_m] (part

m

(d))

+ Desemp[cmbn_m](Div_Conq_m(part

1

(d)), …, Div_Conq_m(part

m

(d)))

(7)

Complexidade de Algoritmos

Métodos de Projeto de Algoritmos

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

Logo podemos simplificar a notação considerando-os como o esforço de recursão Desemp[Recrs_m] (d) = aval[smpl](d) +

+ desemp[part

1

](d) + … + desemp[part

m

](d)

+ Desemp[cmbn_m](Div_Conq_m(part

1

(d)), …, Div_Conq_m(part

m

(d)))

Caso smpl(d), temos

Desemp[Div_Conq_m] (d) = aval[smpl](d) + desemp[drt](d) Caso smpl(d) seja falso, temos

Desemp[Div_Conq_m] (d) = Desemp[Recrs_m] (d) +

+ Desemp[Div_Conq_m] (part

1

(d)) +… + Desemp[Div_Conq_m] (part

m

(d))

(8)

Complexidade de Algoritmos

Métodos de Projeto de Algoritmos

Considerando que o esforço de recursão tem cota

A divisão e conquista m-ária pode ser dada pela função

k

F

m

: N → N

Onde

(9)

Complexidade de Algoritmos

Divisão e conquista discriminante:

– Sob subtração constante de ε >0 , temos S(d)=tam(d) - ε – Sob divisão constante por c>1 , temos S(d)= tam(d)/c 

Métodos de Projeto de Algoritmos

Onde H(d) corresponde a profundidade da recursão.

(10)

Complexidade de Algoritmos

Métodos de Projeto de Algoritmos

Considerando que o esforço de recursão tem cota

A divisão e conquista m-ária sob subtração é dada pela função

k

S

m

: N → N

(11)

Complexidade de Algoritmos

Considere um algoritmo baseado em divisão e conquista com

 subtração constante da entrada s(n)=n- ε , com ε >0

 esforço polinomial O(n

k

)

 particionamento em m >1 partes.

Considere que smpl(d) refere-se a tam(d) ≤ a e que drt tenha um custo constante c’

A equação de recorrência que descreve o algoritmo é

Projeto e Análise de Algoritmos

Mostre que a complexidade do algoritmo tem ordem

(12)

Complexidade de Algoritmos

Complexidade da Divisão e Conquista sob subtração com Esforço Polinomial.

Considere ε >0 ; discriminador a ∈ N e esforço de recursão polinomial de ordem O(n

k

), com k ≥ 0

Métodos de Projeto de Algoritmos

(13)

Complexidade de Algoritmos

Complexidade da Divisão e Conquista sob subtração

Métodos de Projeto de Algoritmos

(14)

Complexidade de Algoritmos

Qual é a complexidade da Busca sequencial em tabela definida por

Métodos de Projeto de Algoritmos

m=1, ε =1, k=0, a=1, complexidade pessimista n

0+1

=O(n)

m=1, ε =1, k=1, a=1, complexidade pessimista n

1+1

=O(n

2

)

Qual é a complexidade da Classificação por Seleção definida por

Divisão e conquista sob subtração da entrada

(15)

Complexidade de Algoritmos

Métodos de Projeto de Algoritmos

Considerando que o esforço de recursão tem cota

A divisão e conquista m-ária sob divisão pode ser dada pela função

k

Q

m

: N → N

(16)

Complexidade de Algoritmos

Considere um algoritmo baseado em divisão e conquista com

 divisão constante da entrada s(n)=n/c, c>1

 esforço polinomial O(n

k

)

 particionamento em m partes, onde m<c

k

Considere que smpl(d) refere-se a tam(d) ≤ a e que drt tenha um custo constante c’

A equação de recorrência que descreve o algoritmo é

Projeto e Análise de Algoritmos

Mostre que a complexidade do algoritmo tem ordem

(17)

Complexidade de Algoritmos

Complexidade da Divisão e Conquista sob divisão com Esforço Polinomial.

Considere c>1 ; discriminador a ∈ N e esforço de recursão polinomial de ordem O(n

k

), com k ≥ 0

Métodos de Projeto de Algoritmos

(18)

Complexidade de Algoritmos

Complexidade da Divisão e Conquista sob divisão (Generalização)

Métodos de Projeto de Algoritmos

(19)

Complexidade de Algoritmos

Qual é a complexidade da Busca binária em tabela definida por

Métodos de Projeto de Algoritmos

m=1, c=2, k=0, (m=c

k

) complexidade pessimista O(log

2

n)

Qual é a complexidade da Classificação por Intercalação definida por

m=2, c=2, k=1, (m=c

k

) complexidade pessimista n

1

log

2

n =O(n log

2

n)

Divisão e conquista sob divisão da entrada

(20)

No Produto de números inteiros, m=3, c=2, k=1, a=1, (m>c

k

) complexidade pessimista

Complexidade de Algoritmos

Qual é a complexidade do máximo e mínimo em uma tabela expresso por

Métodos de Projeto de Algoritmos

m=2, c = 2, k=0, a=2, (m>c

k

) complexidade pessimista O(n)

Divisão e conquista sob divisão da entrada

Referências

Documentos relacionados

Mineração de conhecimento interativa em níveis diferentes de abstração: Como é  difícil  prever  o  que  exatamente  pode  ser  descoberto  de  um  banco 

vassourar – varrer... Que género de texto acabaste de ler? Justifica a tua resposta. Transcreve alguns versos que ilustrem a azáfama da vassoura. A dona da casa está descontente com

2. Identifica as personagens do texto.. Indica o tempo da história. Indica o espaço da história. Classifica as palavras quanto ao número de sílabas. Copia do texto três

Em janeiro, o hemisfério sul recebe a radiação solar com menor inclinação e tem dias maiores que as noites, encontrando-se, assim, mais aquecido do que o hemisfério norte.. Em julho,

Os elementos caracterizadores da obra são: a presença constante de componentes da tragédia clássica e o fatalismo, onde o destino acompanha todos os momentos das vidas das

A bicharada já andava toda admirada, mas muito desconfiada!.

a) O polícia disse um palavrão, após ter saído da casa de Adrian. Corrige as falsas.. A mãe também está com gripe. “Quase que não consegui ficar calado quando vi que não

Classifica os verbos sublinhados na frase como transitivos ou intransitivos, transcrevendo- os para a coluna respetiva do quadro.. Frase: Escondi três livros na estante