Solução de Recorrências
Algoritmos e Estruturas de Dados I
Natália Batista
https://sites.google.com/site/nataliacefetmg/
nataliabatista@decom.cefetmg.br
1º semestre/ 2019
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS
2
Introdução
Equação de Recorrência: é uma equação (ou inequação) que descreve uma função em
termos dela mesma em entradas de tamanho
menor.
3
Introdução
Alguns métodos para resolver recorrências:
1) Expansão
2) Mudança de variáveis
3) Substituição (indução)
4) Árvores de recursão
5) Teorema mestre
4
1. Método da Expansão
(1/5)
Seja a seguinte função para calcular o fatorial de n:
int Fat(int n){
if (n<=1) return 1;
else
return n*Fat(n-1);
}
5
1. Método da Expansão
(1/5)
Seja a seguinte equação de recorrência para esta função:
Esta equação diz que quando n = 1 o custo para executar Fat é igual a d.
Para valores de n maiores que 1, o custo para executar
Fat é c mais o custo para executar T(n - 1).
6
1. Método da Expansão
(1/5)
Esta equação de recorrência pode ser
expressa da seguinte forma:
7
1. Método da Expansão
(1/5)
Método da expansão: Em cada passo, o valor do termo T é substituído pela sua definição.
A última equação mostra que depois da
expansão existem n - 1 c’s.
8
1. Método da Expansão
(1/5)
Desta forma, a recorrência pode ser
expressa como:
9
2. Mudança de variáveis
Exemplo 1:
Vamos supor que:
10
2. Mudança de variáveis
Resolvendo por expansão temos:
T(20) = T(1) = 0
11
3. Método da Substituição
Em algumas situações é difícil obter a solução de uma equação de recorrência.
Nesses casos é mais fácil:
Tentar adivinhar a solução ou
Chegar a um limite superior para a ordem de
complexidade da solução, em vez da solução
exata.
12
3. Método da Substituição
Dois passos:
1.
Adivinhe a forma da solução.
2.
Use indução matemática para encontrar as
constantes e mostrar que a solução funciona.
13
3. Método da Substituição
Indução:
Fonte: Souza et al.
14
3. Método da Substituição
Exemplo:
T(2n) ≤ 2T(n) + 2n -1, T(2) = 1,
definida para valores de n que são potências de 2.
O objetivo é encontrar um limite superior na
notação O, onde o lado direito da desigualdade representa o pior caso.
Fonte: Ziviani.
15
3. Método da Substituição
T(2n) ≤ 2T(n) + 2n -1, T(2) = 1
n
2?
nlogn?
cn?
16
3. Método da Substituição
Fonte: Ziviani.
17
3. Método da Substituição
Fonte: Ziviani.
Hipótese: T(n) ≤ O(n2)
18
3. Método da Substituição
Fonte: Ziviani.
●
Vamos tentar um palpite menor, f(n) = cn, para alguma constante c.
●
Hipótese: T(n) ≤ O(cn).
●
Passo base: T(2) = 1 ≤ f(2) = c2 para c ≥ ½.
19
3. Método da Substituição
Fonte: Ziviani.
20
3. Método da Substituição
Fonte: Ziviani.
21
3. Método da Substituição
Fonte: Ziviani.
= 2nlog2 + 2nlogn = 2nlogn + 2n
22
4. Método da árvore de recursão
Muito usada para resolver a equação de
recorrência de métodos que seguem a
abordagem divisão e conquista.
23
4. Método da árvore de recursão
Divisão e conquista:
Divida o problema em um número de subproblemas.
Conquiste os subproblemas resolvendo-os recursivamente.
Combine as soluções dos subproblemas na
solução do problema original.
24
4. Método da árvore de recursão
Exemplo: Mergesort
Dividir: divida a sequência de n elementos a
serem ordenados em duas subsequencias de n/2 elementos cada.
Conquistar: Ordene as duas subsequencias recursivamente usando Mergesort.
Combinar: Intercale (merge) as duas
subsequências para produzir a resposta
ordenada.
25
4. Método da árvore de recursão
Quando a recursividade pára?
26
4. Método da árvore de recursão
Fonte: CLRS.
27
4. Método da árvore de recursão
Análise do Mergesort:
Dividir: D(n) = (1)
Conquistar: contribui 2 T(n/2).
Combinar: C(n) = (n).
T(n) = c se n = 1 2T(n/2) + cn se n 1.
Fonte: CLRS.
28
4. Método da árvore de recursão
Construção da árvore de recursão:
Fonte: CLRS.
29
4. Método da árvore de recursão
Fonte: CLRS.
30
4. Método da árvore de recursão
Em uma árvore de recursão:
cada nó representa o custo de um subproblema no conjunto das invocações de funções
recursivas.
os custos de cada nível da árvore são somados.
os custos por nível são somados para determinar
o custo total de todos os níveis da recursão.
31
5. Teorema mestre
Fonte: Loureiro.
32
5. Teorema mestre
Fonte: Loureiro.
33
5. Teorema mestre
Fonte: Loureiro.
34
5. Teorema mestre: exemplo
Fonte: Loureiro.
35
6. Somatórios
Alguns somatórios úteis:
i
Soma dos termos de uma P.G.
finitai
36
Referências
Thomas Cormen et al. Introduction to Algorithms.
Editora Prentice Hall, 2006.
Antonio Alfredo Ferreira Loureiro. Projeto e Análise de Algoritmos: Análise de Complexidade. Notas de aula, 2010.
C. C. de Souza, C. N. da Silva, O. Lee, P. J. de
Rezende. Complexidade de Algoritmos. Notas de aula, 2010.