A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Recorrências. Recorrências e Tempo de Execução Uma equação ou inequação que descreve uma função em termos de seu valor sobre pequenas entradas T(n) =

Apresentações semelhantes


Apresentação em tema: "Recorrências. Recorrências e Tempo de Execução Uma equação ou inequação que descreve uma função em termos de seu valor sobre pequenas entradas T(n) ="— Transcrição da apresentação:

1 Recorrências

2 Recorrências e Tempo de Execução Uma equação ou inequação que descreve uma função em termos de seu valor sobre pequenas entradas T(n) = T(n-1) + n Recorrências aparecem quando um algoritimo contém chamadas recursivas para ele mesmo Qual é de fato o tempo de exeução de um algoritmo? É preciso resolver a recorrência –Encontrar um fórmula explícita de uma expressão –Limitar a recorrência por uma expressão que envolve n

3 Exemplos de Recorrências T(n) = T(n-1) + nΘ(n 2 ) –Algoritmo recursivo que a cada loop examina a entrada e elimina um item T(n) = T(n/2) + cΘ(lgn) –Algoritmo recursivo que divide a entrada em cada passo T(n) = T(n/2) + nΘ(n) –Algoritmo recursivo que divide a entrada, mas precisa examinar cada item na entrada T(n) = 2T(n/2) + 1Θ(n) –Algoritmo recursivo que divide a entrada em duas metades e executa uma quantidade constante de operações

4 Algoritmos Recursivos BINARY-SEARCH Para um vetor ordenado A, verifique se x está no vetor A[lo…hi] Alg.: BINARY-SEARCH (A, lo, hi, x) if (lo > hi) return FALSE mid (lo+hi)/2 if x = A[mid] return TRUE if ( x < A[mid] ) BINARY-SEARCH (A, lo, mid-1, x) if ( x > A[mid] ) BINARY-SEARCH (A, mid+1, hi, x) mid lohi

5 Exemplo A[8] = {1, 2, 3, 4, 5, 7, 9, 11} –lo = 1hi = 8 x = 7 mid = 4, lo = 5, hi = 8mid = 6, A[mid] = x Encontrado!!!

6 Outro exemplo A[8] = {1, 2, 3, 4, 5, 7, 9, 11} –lo = 1hi = 8 x = 6 mid = 4, lo = 5, hi = 8mid = 6, A[6] = 7, lo = 5, hi = mid = 5, A[5] = 5, lo = 6, hi = 5 NÃO ENCONTRADO!

7 Análise do BINARY-SEARCH Alg.: BINARY-SEARCH (A, lo, hi, x) if ( lo > hi ) return FALSE mid (lo+hi)/2 if x = A[mid] return TRUE if ( x < A[mid] ) BINARY-SEARCH ( A, lo, mid-1, x ) if ( x > A[mid] ) BINARY-SEARCH ( A, mid+1, hi, x ) T(n) = c + T(n/2) –T(n) – tempo de execução para um vetor de tamanho n tempo contante: c 2 mesmo problema de tamanho n/2 tempo contante: c 1 tempo contante: c 3

8 Métodos para resolver recorrências Iteração Substituição Árvore de Recursão Teorema Mestre

9 O Método da Iteração Converter a recorrência em um somatório e tentar limitá-lo usando uma série conhecida –Iterar a recorrência até a condição inicial ser alcançada. –Usar retro-substituição para expressar a recorrência em termos de n e a condição inicial.

10 O Método da Iteração T(n) = c + T(n/2) = c + c + T(n/4) = c + c + c + T(n/8) Assume n = 2 k T(n) = c + c + … + c + T(1) = clgn + T(1) = Θ(lgn) k times T(n/2) = c + T(n/4) T(n/4) = c + T(n/8)

11 Método da Iteração– Exemplo T(n) = n + 2T(n/2) = n + 2(n/2 + 2T(n/4)) = n + n + 4T(n/4) = n + n + 4(n/4 + 2T(n/8)) = n + n + n + 8T(n/8) … = in + 2 i T(n/2 i ) = kn + 2 k T(1) = nlgn + nT(1) = Θ(nlgn) Assume: n = 2 k T(n/2) = n/2 + 2T(n/4)

12 O método da substituição 1.Adivinhe uma solução 2.Use indução para provar que a solução está correta

13 Método da substituição Adivinhe uma solução (um chute) – T(n) = O(g(n)) –Objetivo da indução: aplicar a definição de notação assintótica T(n) d g(n), para algum d > 0 e n n 0 –Hipótese indutiva: T(k) d g(k) para todo k < n Prove a indução –Use a hipótese indutiva para encontrar alguns valores de constantes d e n 0 para os quais a indução seja válida

14 Exemplo: Binary Search T(n) = c + T(n/2) Chute: T(n) = O(lgn) –Indução: T(n) d lgn, para algum d e n n 0 –Hipótese indutiva: T(n/2) d lg(n/2) Prova da indução: T(n) = T(n/2) + c d lg(n/2) + c = d lgn – d + c d lgn se : – d + c 0, d c Caso base?

15 Exemplo 2 T(n) = T(n-1) + n Chute: T(n) = O(n 2 ) –Indução: T(n) c n 2, para algum c e n n 0 –Hipótese indutiva : T(n-1) c(n-1) 2 para todo k < n Prova da indução: T(n) = T(n-1) + n c (n-1) 2 + n = cn 2 – (2cn – c - n) cn 2 se: 2cn – c – n 0 c n/(2n-1) c 1/(2 – 1/n) –Para n 1 2 – 1/n 1 qualquer c 1 irá satisfazer

16 Exemplo 3 T(n) = 2T(n/2) + n Chute: T(n) = O(nlgn) –Indução: T(n) cn lgn, para algum c e n n 0 –Hipótese indutiva : T(n/2) cn/2 lg(n/2) Prova da indução: T(n) = 2T(n/2) + n 2c (n/2)lg(n/2) + n = cn lgn – cn + n cn lgn se: - cn + n 0 c 1 Caso base?

17 Mudança de variáveis –Fazendo: m = lgn n = 2 m T ( 2 m ) = 2T(2 m/2 ) + m –Tomando: S(m) = T(2 m ) S(m) = 2S(m/2) + m S(m) = O(mlgm) (como visto anteriormente) T(n) = T(2 m ) = S(m) = O(mlgm)=O(lgnlglgn) Idéia: transformar a recorrência em uma que seja conhecida T(n) = 2T( ) + lgn

18 O método da árvore de recursão Converter a recorrência em uma árvore: –Cada nó representa o custo incorrido ´nos vários níveis de recursão –Some os custos de todos os níveis Usado para adivinhar uma solução para a recorrência

19 Exemplo 1 W(n) = 2W(n/2) + n 2 Tamanho do subproblema no nível i é: n/2 i Tamanho de subproblema alcança 1 quando 1 = n/2 i i = lgn Custo de um problema no nível i = ( n/2 i ) 2 Número de nós no nível i = 2 i Custo total: W(n) = O(n 2 )

20 Exemplo 2 E.g.: T(n) = 3T(n/4) + cn 2 Tamanho do subproblema no nível i é: n/4 i Tamanho do subproblema alcança 1quando 1 = n/4 i i = log 4 n Custo de um nó no nível i = c( n/4 i ) 2 Número de nós no nível i = 3 i último nível tem 3 log 4 n = n log 4 3 nós Custo total: T(n) = O(n 2 )

21 Exemplo 2 - Substituição T(n) = 3T(n/4) + cn 2 Chute: T(n) = O(n 2 ) –Indução: T(n) dn 2, para algum d e n n 0 –Hipótese indutiva: T(n/4) d (n/4) 2 Prova da indução: T(n) = 3T(n/4) + cn 2 3d (n/4) 2 + cn 2 = (3/16) d n 2 + cn 2 d n 2 se: d (16/13)c Portanto: T(n) = O(n 2 )

22 Exemplo 3 W(n) = W(n/3) + W(2n/3) + n O maior caminho da raiz até uma folha é: n (2/3)n (2/3) 2 n … 1 Tamanho de subproblema alcança 1 quando 1 = (2/3) i n i=log 3/2 n Custo de um problema no nível i = n Custo total: W(n) = O(nlgn)

23 Example 3 - Substitution W(n) = W(n/3) + W(2n/3) + O(n) Chute: W(n) = O(nlgn) –Indução: W(n) d nlgn, para algum d e n n 0 –Hipótese indutiva: W(k) d klgk para qualquer K < n (n/3, 2n/3) Prova da indução: Fica como exercício! T(n) = O(nlgn)

24 Teorema Mestre Receita de bolo para resolver recorrências da forma: onde, a 1, b > 1, e f(n) > 0 Idéia: comparar f(n) com n log b a f(n) é assintoticamente menor ou maior do que n log b a por um fator polinomial n f(n) é assintoticamente igual a n log b a

25 Teorema Mestre Receita de bolo para resolver recorrências da forma: onde, a 1, b > 1, e f(n) > 0 Caso 1: se f(n) = O(n log b a - ) para algum > 0, então: T(n) = (n log b a ) Caso 2: se f(n) = (n log b a ), então: T(n) = (n log b a lgn) Caso 3: se f(n) = (n log b a + ) para algum > 0, e se af(n/b) cf(n) para algum c < 1 e todo n suficientemente grande, então: T(n) = (f(n)) Condição de regularidade

26 Why n log b a ? Tomando n = b k k = log b n Ao final da iteração i = k: Case 1: –Se f(n) é dominada por n log b a : T(n) = (n log b n ) Case 3: –Se f(n) domina n log b a : T(n) = (f(n)) Case 2: –Se f(n) = (n log b a ) : T(n) = (n log b a logn)

27 Exemplos T(n) = 2T(n/2) + n a = 2, b = 2, log 2 2 = 1 Compare n log 2 2 com f(n) = n f(n) = (n) Caso 2 T(n) = (nlgn)

28 Exemplos T(n) = 2T(n/2) + n 2 a = 2, b = 2, log 2 2 = 1 Compare n com f(n) = n 2 f(n) = (n 1+ ) Caso 3 verificando a condição de regularidade a f(n/b) c f(n) 2 n 2 /4 c n 2 c = ½ é uma solução (c<1) T(n) = (n 2 )

29 Exemplos (cont.) T(n) = 2T(n/2) + a = 2, b = 2, log 2 2 = 1 Compare n com f(n) = n 1/2 f(n) = O(n 1- ) Caso 1 T(n) = (n)

30 Exemplos T(n) = 3T(n/4) + nlgn a = 3, b = 4, log 4 3 = Compare n com f(n) = nlgn f(n) = (n log 4 3+ ) Case 3 Verificando a condição de regularidade: 3 (n/4)lg(n/4) (3/4)nlgn = c f(n), c=3/4 T(n) = (nlgn)

31 Árvore de Recursão Considere T(n)=3T(n/4)+cn 2 T(n) cn 2 T(n/4)

32 Árvore de Recursão Considere T(n)=3T(n/4)+cn 2 T(n) cn 2 c(n/4) 2 T(n/16)

33 Árvore de Recursão Considere T(n)=3T(n/4)+cn 2 T(n) cn 2 c(n/4) 2 c(n/16) 2 T(1) T(1) T(1) T(1) T(1) T(1) T(1) T(1) T(1) log 4 n n log 4 3 cn 2 3cn 2 / cn 2 /16 2 (n ) log


Carregar ppt "Recorrências. Recorrências e Tempo de Execução Uma equação ou inequação que descreve uma função em termos de seu valor sobre pequenas entradas T(n) ="

Apresentações semelhantes


Anúncios Google