complexidade de algoritmos - infprestes/courses/complexity/aula20.pdfcomplexidade de algoritmos...

Post on 06-Oct-2020

9 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Complexidade de Algoritmos

Edson Prestes

Complexidade de Algoritmos

Algoritmo: Prod_Int(n, p , q : Int) →Int1. se n = 12. 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 ) * bn + ( 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 * bn + ( 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) ?

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

Complexidade de Algoritmos

Divisão e conquista m-áriaFuncao Div_Conq_m(d:D) → R1. Se smpl(d) 2. Então r← drt(d)3. Fim-então4. Senão 5. D1 ← part1 (d); …; Dm ← partm (d)6. r1 ← Div_Conq_m (d1); … ; rm ← Div_Conq_m (dm)

7. r ← combina_m (r1, … , rm)8. Retornar-saída (r)9. Fim-senão10. Fim-se11. Fim-função

Métodos de Projeto de Algoritmos

Complexidade de AlgoritmosMétodos de Projeto de Algoritmos

Caso smpl(d) seja verdadeiro, temosDesemp[Div_Conq_m] (d) = aval[smpl](d) + desemp[drt](d)

Caso smpl(d) seja falso, temosDesemp[Div_Conq_m] (d) = aval[smpl](d) + + desemp[part1](d) + … + desemp[partm](d) + Desemp[Div_Conq_m] (part1(d)) + … + Desemp[Div_Conq_m] (partm(d)) + Desemp[cmbn_m](Div_Conq_m(part1(d)), …, Div_Conq_m(partm(d)))

Complexidade de AlgoritmosMé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), temosDesemp[Div_Conq_m] (d) = aval[smpl](d) + + desemp[part1](d) + … + desemp[partm](d) + Desemp[Div_Conq_m] (part1(d)) + … + Desemp[Div_Conq_m] (partm(d)) + Desemp[cmbn_m](Div_Conq_m(part1(d)), …, Div_Conq_m(partm(d)))

Complexidade de AlgoritmosMé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ãoDesemp[Recrs_m] (d) = aval[smpl](d) + + desemp[part1](d) + … + desemp[partm](d) + Desemp[cmbn_m](Div_Conq_m(part1(d)), …, Div_Conq_m(partm(d)))

Caso smpl(d), temosDesemp[Div_Conq_m] (d) = aval[smpl](d) + desemp[drt](d)

Caso smpl(d) seja falso, temosDesemp[Div_Conq_m] (d) = Desemp[Recrs_m] (d) + + Desemp[Div_Conq_m] (part1(d)) +… + Desemp[Div_Conq_m] (partm(d))

Complexidade de AlgoritmosMé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 kFm: N → N

Onde

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.

Complexidade de AlgoritmosMé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 kSm: N → N

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(nk) 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

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 deordem O(nk), com k≥ 0

Métodos de Projeto de Algoritmos

Complexidade de Algoritmos

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

Métodos de Projeto de Algoritmos

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 n0+1=O(n)

m=1, ε=1, k=1, a=1, complexidade pessimista n1+1=O(n2)

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

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

Complexidade de AlgoritmosMé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 kQm: N → N

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(nk) particionamento em m partes, onde m<ck

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

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 deordem O(nk), com k≥ 0

Métodos de Projeto de Algoritmos

Complexidade de Algoritmos

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

Métodos de Projeto de Algoritmos

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=ck) complexidade pessimista O(log2n)

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

m=2, c=2, k=1, (m=ck) complexidade pessimista n1 log2n =O(n log2n)

Divisão e conquista sob divisão da entrada

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

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>ck) complexidade pessimista O(n)

Divisão e conquista sob divisão da entrada

top related