1 / 14

Paradigma de Divisão e Conquista

Paradigma de Divisão e Conquista. II Trabalho Prático da Disciplina de ATP II Gustavo Eloi , Taygor Pradella. 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.

raquel
Download Presentation

Paradigma de Divisão e Conquista

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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 QuickSortdifere 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:

  5. Multiplicação de inteiros • Apresentação do Pseudocódigo:

  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 10n/2 + q. • Defina r e s analogamente para v, de modo que v = r 10n/2 + s.  Teremos então uv  =  pr 10n + (ps+qr) 10n/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 10n + ( y − pr − qs) 10n/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. Sen não é par, basta trocar n/2 por k = ⌈n/2⌉.  Teremos então  u = p 10k + q  e  v = r 10k + s  e portanto uv  =  pr 102k + ( y − pr − qs) 10k + 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. 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.

  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 .. j−1] consiste em zero ou mais elementos < x  seguidos de zero ou mais elementos > x     ou zero ou mais elementos < x ,  seguidos de exatamente um elemento igual ax , seguido de zero ou mais elementos > x .

  13. Descrição detalhada • No primeiro caso, o algoritmo chega à linha 11 com j = i−1. • No segundo caso, o algoritmo chega à linha 11 com j = i. • Assim o algoritmo cumpre sua função; em particular, que p ≤ j <r na linha 11.

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

More Related