complexidade de algoritmos - infprestes/courses/complexity/aula20.pdfcomplexidade de algoritmos...
TRANSCRIPT
![Page 1: Complexidade de Algoritmos - INFprestes/Courses/Complexity/aula20.pdfComplexidade de Algoritmos Métodos de Projeto de Algoritmos Para uma entrada não simples, os processos de decomposição](https://reader034.vdocuments.site/reader034/viewer/2022051813/60327da7daec5326d72a6135/html5/thumbnails/1.jpg)
Complexidade de Algoritmos
Edson Prestes
![Page 2: Complexidade de Algoritmos - INFprestes/Courses/Complexity/aula20.pdfComplexidade de Algoritmos Métodos de Projeto de Algoritmos Para uma entrada não simples, os processos de decomposição](https://reader034.vdocuments.site/reader034/viewer/2022051813/60327da7daec5326d72a6135/html5/thumbnails/2.jpg)
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) ?
![Page 3: Complexidade de Algoritmos - INFprestes/Courses/Complexity/aula20.pdfComplexidade de Algoritmos Métodos de Projeto de Algoritmos Para uma entrada não simples, os processos de decomposição](https://reader034.vdocuments.site/reader034/viewer/2022051813/60327da7daec5326d72a6135/html5/thumbnails/3.jpg)
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
![Page 4: Complexidade de Algoritmos - INFprestes/Courses/Complexity/aula20.pdfComplexidade de Algoritmos Métodos de Projeto de Algoritmos Para uma entrada não simples, os processos de decomposição](https://reader034.vdocuments.site/reader034/viewer/2022051813/60327da7daec5326d72a6135/html5/thumbnails/4.jpg)
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
![Page 5: Complexidade de Algoritmos - INFprestes/Courses/Complexity/aula20.pdfComplexidade de Algoritmos Métodos de Projeto de Algoritmos Para uma entrada não simples, os processos de decomposição](https://reader034.vdocuments.site/reader034/viewer/2022051813/60327da7daec5326d72a6135/html5/thumbnails/5.jpg)
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)))
![Page 6: Complexidade de Algoritmos - INFprestes/Courses/Complexity/aula20.pdfComplexidade de Algoritmos Métodos de Projeto de Algoritmos Para uma entrada não simples, os processos de decomposição](https://reader034.vdocuments.site/reader034/viewer/2022051813/60327da7daec5326d72a6135/html5/thumbnails/6.jpg)
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)))
![Page 7: Complexidade de Algoritmos - INFprestes/Courses/Complexity/aula20.pdfComplexidade de Algoritmos Métodos de Projeto de Algoritmos Para uma entrada não simples, os processos de decomposição](https://reader034.vdocuments.site/reader034/viewer/2022051813/60327da7daec5326d72a6135/html5/thumbnails/7.jpg)
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))
![Page 8: Complexidade de Algoritmos - INFprestes/Courses/Complexity/aula20.pdfComplexidade de Algoritmos Métodos de Projeto de Algoritmos Para uma entrada não simples, os processos de decomposição](https://reader034.vdocuments.site/reader034/viewer/2022051813/60327da7daec5326d72a6135/html5/thumbnails/8.jpg)
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
![Page 9: Complexidade de Algoritmos - INFprestes/Courses/Complexity/aula20.pdfComplexidade de Algoritmos Métodos de Projeto de Algoritmos Para uma entrada não simples, os processos de decomposição](https://reader034.vdocuments.site/reader034/viewer/2022051813/60327da7daec5326d72a6135/html5/thumbnails/9.jpg)
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.
![Page 10: Complexidade de Algoritmos - INFprestes/Courses/Complexity/aula20.pdfComplexidade de Algoritmos Métodos de Projeto de Algoritmos Para uma entrada não simples, os processos de decomposição](https://reader034.vdocuments.site/reader034/viewer/2022051813/60327da7daec5326d72a6135/html5/thumbnails/10.jpg)
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
![Page 11: Complexidade de Algoritmos - INFprestes/Courses/Complexity/aula20.pdfComplexidade de Algoritmos Métodos de Projeto de Algoritmos Para uma entrada não simples, os processos de decomposição](https://reader034.vdocuments.site/reader034/viewer/2022051813/60327da7daec5326d72a6135/html5/thumbnails/11.jpg)
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
![Page 12: Complexidade de Algoritmos - INFprestes/Courses/Complexity/aula20.pdfComplexidade de Algoritmos Métodos de Projeto de Algoritmos Para uma entrada não simples, os processos de decomposição](https://reader034.vdocuments.site/reader034/viewer/2022051813/60327da7daec5326d72a6135/html5/thumbnails/12.jpg)
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
![Page 13: Complexidade de Algoritmos - INFprestes/Courses/Complexity/aula20.pdfComplexidade de Algoritmos Métodos de Projeto de Algoritmos Para uma entrada não simples, os processos de decomposição](https://reader034.vdocuments.site/reader034/viewer/2022051813/60327da7daec5326d72a6135/html5/thumbnails/13.jpg)
Complexidade de Algoritmos
Complexidade da Divisão e Conquista sob subtração
Métodos de Projeto de Algoritmos
![Page 14: Complexidade de Algoritmos - INFprestes/Courses/Complexity/aula20.pdfComplexidade de Algoritmos Métodos de Projeto de Algoritmos Para uma entrada não simples, os processos de decomposição](https://reader034.vdocuments.site/reader034/viewer/2022051813/60327da7daec5326d72a6135/html5/thumbnails/14.jpg)
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
![Page 15: Complexidade de Algoritmos - INFprestes/Courses/Complexity/aula20.pdfComplexidade de Algoritmos Métodos de Projeto de Algoritmos Para uma entrada não simples, os processos de decomposição](https://reader034.vdocuments.site/reader034/viewer/2022051813/60327da7daec5326d72a6135/html5/thumbnails/15.jpg)
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
![Page 16: Complexidade de Algoritmos - INFprestes/Courses/Complexity/aula20.pdfComplexidade de Algoritmos Métodos de Projeto de Algoritmos Para uma entrada não simples, os processos de decomposição](https://reader034.vdocuments.site/reader034/viewer/2022051813/60327da7daec5326d72a6135/html5/thumbnails/16.jpg)
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
![Page 17: Complexidade de Algoritmos - INFprestes/Courses/Complexity/aula20.pdfComplexidade de Algoritmos Métodos de Projeto de Algoritmos Para uma entrada não simples, os processos de decomposição](https://reader034.vdocuments.site/reader034/viewer/2022051813/60327da7daec5326d72a6135/html5/thumbnails/17.jpg)
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
![Page 18: Complexidade de Algoritmos - INFprestes/Courses/Complexity/aula20.pdfComplexidade de Algoritmos Métodos de Projeto de Algoritmos Para uma entrada não simples, os processos de decomposição](https://reader034.vdocuments.site/reader034/viewer/2022051813/60327da7daec5326d72a6135/html5/thumbnails/18.jpg)
Complexidade de Algoritmos
Complexidade da Divisão e Conquista sob divisão (Generalização)
Métodos de Projeto de Algoritmos
![Page 19: Complexidade de Algoritmos - INFprestes/Courses/Complexity/aula20.pdfComplexidade de Algoritmos Métodos de Projeto de Algoritmos Para uma entrada não simples, os processos de decomposição](https://reader034.vdocuments.site/reader034/viewer/2022051813/60327da7daec5326d72a6135/html5/thumbnails/19.jpg)
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
![Page 20: Complexidade de Algoritmos - INFprestes/Courses/Complexity/aula20.pdfComplexidade de Algoritmos Métodos de Projeto de Algoritmos Para uma entrada não simples, os processos de decomposição](https://reader034.vdocuments.site/reader034/viewer/2022051813/60327da7daec5326d72a6135/html5/thumbnails/20.jpg)
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