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

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

UFES Berilhes B. Garcia Dividir-e-Conquistar Recursividade em estruturas –Divida o problema em vários sub- problemas menores que são similares ao original,

Apresentações semelhantes


Apresentação em tema: "UFES Berilhes B. Garcia Dividir-e-Conquistar Recursividade em estruturas –Divida o problema em vários sub- problemas menores que são similares ao original,"— Transcrição da apresentação:

1 UFES Berilhes B. Garcia Dividir-e-Conquistar Recursividade em estruturas –Divida o problema em vários sub- problemas menores que são similares ao original, mas de tamanho menor –Conquiste os sub-problemas, resolvendo-os recursivamente. Se eles são pequenos o bastante, então resolvo-os de uma maneira direta. –Combine as soluções para criar uma solução para o problema original.

2 UFES Berilhes B. Garcia Um Exemplo: Merge Sort Dividir: Divida a seqüência de n - elementos a ser ordenada em duas subsequências de n/2 elementos cada uma. Conquistar: Ordene as duas subseqüências recursivamente utilizando o merge sort. Combinar: Funda as duas subseqüências ordenadas de modo a produzir uma resposta ordenada.

3 UFES Berilhes B. Garcia Merge-Sort (A, p, r) Entrada: uma seqüência de n números armazenados em um vetor A Saída: uma seqüência ordenada de n números 1. if p < r 2. then q [(p+r)/2] 3. Merge-Sort (A, p, q) 4. Merge-Sort (A, q+1, r) 5. Merge (A, p, q, r)

4 UFES Berilhes B. Garcia Análise do Merge Sort Dividir: computar o elemento do méio toma (1) Conquistar: resolver 2 sub-problemas toma 2T(n/2) Combinar: fundir n -elementos toma (n) Total: T(n) = (1) se n = 1 T(n) = 2T(n/2) + (n) se n > 1 T(n) = (n lg n)

5 UFES Berilhes B. Garcia Relações de Recorrência Recurrências –Método da Substituição –Método da Iteração –Método Mestre Surgem a partir da abordagem Dividir e Conquistar (exemplo. MERGE-SORT) T(n) = (1) se n c T(n) = a T(n/b) + D(n) + C(n) caso contrário

6 UFES Berilhes B. Garcia Método da Substituição Adivinhando a forma das soluções, e então utilizando indução matemática para encontrar as constantes e mostrar que a solução está correta. Este funciona bem quando é fácil adivinhar. Mas, não há nenhuma maneira gerak de adivinhar a solução correta.

7 UFES Berilhes B. Garcia Um Exemplo Resolver: T(n) = 3T( n/3 ) + n T(n) 3c n/3 lg n/3 + n c n lg (n/3) + n = c n lg n - c n lg3 + n = c n lg n - n (c lg 3 - 1) c n lg n * O último passo é verdade para c 1 / lg3.

8 UFES Berilhes B. Garcia Fazendo uma Boa Adivinhação Adivinhando uma solução similar para uma recorrência que você já tenha visto antes –T(n) = 3T( n/3 + 5 ) + n similar à T(n) = 3T( n/3 ) + n quando n é grande, a diferença entre n/3 e ( n/3 + 5 ) é insignificante. Outra maneira é provar limites superior e inferior para a recorrência e então reduzir o alcance da incerteza. –Comece com T(n) = (n) & T(n) = O(n 2 ) T(n) = (n log n)

9 UFES Berilhes B. Garcia Sutilezas Quando a prova matemática não pode ser obtida por indução, tente ajustar sua adivinhação com um termo de ordem mais baixa. Por exemplo: –Nós adivinhamos T(n) O(n) para T(n) = 3T( n/3 )+ 4, mas nós temos que T(n) 3c n/3 + 4 = c n + 4 –Nova adicinhação é T(n) c n - b, onde b 0 T(n) 3(c n/3 - b)+4 = c n - 3b + 4 = c n - b - (2b-4) Portanto, T(n) c n - b, se 2b ou se b 2

10 UFES Berilhes B. Garcia Mudança de Variáveis Utilize manipulação algébrica para transformar uma recorrência desconhecida em uma similar que você já tenha visto. –Considere T(n) = 2T( n 1/2 ) + lg n –Chame m = lg n e nós temos T(2 m ) = 2T(2 m/2 ) + m –Ajust S(m) = T(2 m ) e nós temos S(m) = 2S(m/2) + m S(m) = O(m lg m) –Mudando de volta de S(m) para T(n), nós temos T(n) = T(2 m ) = S(m) = O(m lg m) = O(lg n lg lg n)

11 UFES Berilhes B. Garcia Evitando Armadilhas Cuidado para não utilizar de forma inadequada. Por exemplo: –Nós podemos erroneamente provar T(n) = O(n) adivinhando que T(n) c n para T(n) = 2T( n/2 ) + n T(n) 2c n/2 + n c n + n = O(n) Errado! –O erro é que nós não provamos que T(n) c n

12 UFES Berilhes B. Garcia Método da Iteração Para expandir (iterar) a recorrência e expressa-lá como uma somatória de termos dependentes somente n e das condições iniciais. Técnicas para avaliar somatórias podem ser utilizadasd para fornecer os limites da solução. A chave é focalizar-se sobre 2 parâmetros –o número de vezes que a recorrência necessita ser iterada para alcançar uma condição de fronteira –A soma dos termos resultantes de cada nível do processo de

13 UFES Berilhes B. Garcia Um Exemplo Ressolver: T(n) = 3T(n/4) + n T(n) = n + 3T(n/4) = n + 3[n/4] + 9T(n/16) = n + 3[n/4] + 9 [n/16] + 27T(n/64) T(n) n + 3n/4 + 9 n/ n/64 + … + 3 log 4 n (1) n (3/4) i + (n log 4 3 ) = 4n+ o(n) = O(n)

14 UFES Berilhes B. Garcia Árvores de Recursão É uma maneira conveniente de visualizar o que ocorre quando a recursão é iterada. Esta ajuda a organizar a estrutura algébrica necessária para resolver a recorrência. Para T(n) = 2T(n/2) + n 2, nós temos

15 UFES Berilhes B. Garcia Árvores de Recursão T(n) = (n 2 )

16 UFES Berilhes B. Garcia Árvores de Recursão For T(n) = T(n/3) + T(2n/3) + n T(n) = O(n lg n)

17 UFES Berilhes B. Garcia Método Mestre Este fornece um método livro de receita para a resolução de recorrências da forma: T(n) = a T(n/b) + f(n) onde a 1 e b 1 são constantes e f(n) é uma função assintoticamente positiva A solução utilizando o método mestre depende do teorema mestre (a seguir).

18 UFES Berilhes B. Garcia O Teorema Mestre Assuma que a 1 e b > 1 são contantes, f(n) é função e T(n) está definido para inteiros positivos por meio da recorrência T(n) = a T(n/b) + f(n) sendo n/b interpretado como n/b ou como n/b. T(n) pode ser limitado assintoticamente como mostrado a seguir: 1. Se f(n)=O(n log b a- ) para alguma constante > 0, então T(n)= (n log b a ). 2. Se f(n) = (n log b a ), então T(n) = (n log b a lg n). 3. Se f(n) = ( n log b a+ ) para alguma constante > 0, e se a f(n/b) c f(n) para alguma constante c < 1 e n suficientemente grande, então T(n)= (f(n)).

19 UFES Berilhes B. Garcia Teorema Mestre Simplicado Assuma que a 1 e b > 1 são constantes e T(n) é a recorrência T(n) = a T(n/b) + c n k definida para n Se a > b k, então T(n) = ( n log b a ). 2. Se a = b k, então T(n) = ( n k lg n ). 3. Se a < b k, então T(n) = ( n k ).

20 UFES Berilhes B. Garcia Exemplos T(n) = 16T(n/4) + n – a = 16, b=4, f(n) = n, assim n log b a = n log 4 16 = (n 2 ) –Desde que f(n) = O(n log ) onde = 1 caso 1. –Portanto, T(n) = (n log b a ) = (n 2 ) T(n) = T(3n/7) + 1 – a = 1, b=7/3, f(n) = 1, assim n log b a = n log 7/3 1 = n 0 = 1 –Desde que f(n) = O(n log b a )= (1), caso 2. –Portanto, T(n) = (n log b a lg n) = (lg n)

21 UFES Berilhes B. Garcia Exemplos (Cont.) T(n) = 3T(n/4) + n lg n – a = 3, b=4, f(n) = n lg n, n log b a = n log 4 3 = O(n ) –Desde que f(n) = (n log ) onde 0.2 caso 3. –Portanto, T(n) = (f(n)) = (n lg n) T(n) = 2T(n/2) + n lg n – a = 2, b=2, f(n) = n lg n, e n log b a = n log 2 2 = n – f(n) é assintoticamente maior que n log b a, mas não polinomialmente maior. A razão lg n é assintoticamente menor que qualquer constante positiva n. Logo, o Teorema Mestre não se aplica.

22 UFES Berilhes B. Garcia Exercícios Utilize o Método Mestre para resolver as seguintes recorrências: T(n) = 4T(n/2) + n T(n) = 4T(n/2) + n 2 T(n) = 4T(n/2) + n 3


Carregar ppt "UFES Berilhes B. Garcia Dividir-e-Conquistar Recursividade em estruturas –Divida o problema em vários sub- problemas menores que são similares ao original,"

Apresentações semelhantes


Anúncios Google