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

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

Paradigma de Divisão e Conquista II Trabalho Prático da Disciplina de ATP II Gustavo Eloi, Taygor Pradella.

Apresentações semelhantes


Apresentação em tema: "Paradigma de Divisão e Conquista II Trabalho Prático da Disciplina de ATP II Gustavo Eloi, Taygor Pradella."— Transcrição da apresentação:

1 Paradigma de Divisão e Conquista II Trabalho Prático da Disciplina de ATP II Gustavo Eloi, Taygor Pradella

2 Introdução Através do estudo de algoritmos baseados no método de Divisão e Conquista pode-se notar a eficiência desta ideia em diversas aplicações. A multiplicação com números muito grandes, ao contrário do que se pressupõe, se torna mais eficiente a partir de números de grandes de dimensões. Tratando-se de algoritmos já existente, é possível a leitura e compreensão dos métodos em sites diversos, assim o método utilizado para o QuickSort difere do esquema padrão.

3 Divisão e Conquista Esta técnica consiste em dividir um problema maior recursivamente em problemas menores até que o problema possa ser resolvido diretamente. Então a solução do problema inicial é dada através da combinação dos resultados de todos os problemas menores computados. Vários problemas podem ser solucionados através desta técnica, como o de ordenação que trataremos neste trabalho.

4 Divisão e Conquista Divisão: Conquistar: Combinar: SOLUÇÃO PROBLEMA SUBPROBLEMA SUB SOLUÇÃO

5 Multiplicação de inteiros Apresentação do Pseudocódigo: K ARATSUBA -O FMAN (u, v, n) 1 se n 3 2 então devolva u · v 3 senão m n/2 4 p u/10 m 5 q u mod 10 m 6 r v/10 m 7 s v mod 10 m 8 pr K ARATSUBA -O FMAN (p, r, m) 9 qs K ARATSUBA -O FMAN (q, s, m) 10 y K ARATSUBA -O FMAN (p+q, r+s, m+1) 11 x pr · 10 2m + (y pr qs) · 10 m + qs 12 devolva x

6 Descrição detalhada Sejam u e v dois números com no máximo n dígitos cada. Suponha, por enquanto, que n é par. Seja p o número formado pelos n/2 primeiros dígitos (dígitos mais significativos) de ue seja q o número formado pelos n/2 últimos dígitos (dígitos menos significativos) de u. Assim, u = p 10 n /2 + q. Defina r e s analogamente para v, de modo que v = r 10 n/2 + s. Teremos então uv = pr 10 n + ( ps + qr ) 10 n /2 + qs.

7 Descrição detalhada Esta expressão reduz a multiplicação de dois números com no máximo n dígitos cada a quatro multiplicações (a saber, p por r, p por s, q por r e q por s) de números com no máximo n/2 dígitos cada. Infelizmente, essa redução não é suficiente para tornar a multiplicação mais eficiente. Agora observe que os três números de que precisamos do lado direito de (*) a saber pr, (ps+qr) e qs podem ser obtidos com apenas três multiplicações, pois ps + qr = y pr qs, sendo y = ( p + q )( r + s ), e portanto a equação (*) pode ser substituída por uv = pr 10 n + ( y pr qs ) 10 n /2 + qs.

8 Conclusão do Método É bem verdade que esta equação envolve duas adições e duas subtrações adicionais, mas essas operações consomem muito menos tempo que as multiplicações. Se n não é par, basta trocar n/2 por k = n/2. Teremos então u = p 10 k + q e v = r 10 k + s e portanto uv = pr 10 2 k + ( y pr qs ) 10 k + qs. Esta é a base do algoritmo.

9 Algoritmo de QuickSort Este método baseia-se na divisão da tabela em duas sub-tabelas, dependendo de um elemento chamado pivô, normalmente o 1º elemento da tabela. Uma das sub-tabelas contém os elementos menores que o pivô enquanto a outra contém os maiores. O pivô é colocado entre ambas, ficando na posição correcta. As duas sub-tabelas são ordenadas de forma idêntica, até que se chegue à tabela com um só elemento.

10 Descrição detalhada Apresentação do Pseudocódigo: O Quicksort é um algoritmo de ordenação: ele recebe um vetor A[p..r] e rearranja o vetor em ordem crescente. Q UICKSORT (A, p, r) 1 se p < r 2 então q S EPARE (A, p, r) 3 Q UICKSORT (A, p, q) 4 Q UICKSORT (A, q+1, r) Obs: q p e q < r; portanto os vetores A[p..q] e A[q+1.. r] são estritamente menores que o vetor original A[p..r]. Isso garante que a execução do algoritmo termina, mais cedo ou mais tarde.

11 Descrição detalhada O algoritmo Separe rearranja o vetor A[p..r] e determinar um índice q tal que p q e cada elemento de A[p..q] é menor ou igual a x, q < r e cada elemento de A[q+1.. r] é maior ou igual a x para algum x. O número x é o pivô da separação. S EPARE (A, p, r) 1 x A[p] 2 i p1 3 j r+1 4 enquanto 0 = 0 faça 5 repita j j1 6 até que A[j] x 7 repita i i+1 8 até que A[i] x 9 se i < j 10 então troque A[i] A[j] 11 senão devolva j

12 Descrição detalhada Para entender como e por que o algoritmo funciona como deveria, observe que no início de cada iteração do loop que começa na linha 4 temos as seguintes propriedades invariantes: A [ p.. i ] x, i < j, A [ j.. r ] x. Na última passagem pela linha 4, o vetor A[i+1.. j1] consiste em zero ou mais elementos x ou zero ou mais elementos x. pijr x x x x x

13 Descrição detalhada No primeiro caso, o algoritmo chega à linha 11 com j = i1. No segundo caso, o algoritmo chega à linha 11 com j = i. Assim o algoritmo cumpre sua função; em particular, que p j

14 Visualização do Método e comparação com Bubble


Carregar ppt "Paradigma de Divisão e Conquista II Trabalho Prático da Disciplina de ATP II Gustavo Eloi, Taygor Pradella."

Apresentações semelhantes


Anúncios Google