O documento discute algoritmos de ordenação como merge sort e quick sort. Explica como cada algoritmo funciona dividindo a entrada, ordenando as partes e combinando os resultados. Também discute geração de números aleatórios e seus usos em simulações e criptografia.
1. Merge e Quick
Michel Alves dos Santos
Társis Wanderley Tolêdo
Universidade Federal do Estado de Alagoas
Instituto de Computação – Ciência da Computação
Projeto e Análise de Algoritmos – Prof. Sílvio Chagas
Novembro de 2009
2. Slide 2
Geração de Números Aleatórios e Algoritmos de Ordenação
True Random Number Generators
Pseudo-Random Number Generators
O emprego de TRNGs é mais adequado as loterias, jogos e segurança [geração de chaves criptografadas],
enquanto os PRNGs são largamente utilizados em simulações e modelagem computacional [Análise Visual,
Simulação Científica de Infecção Viral, Algoritmos Evolutivos, etc.]
PAA - Projeto e Análise de Algoritmos
3. Slide 3
Geração de Números Aleatórios e Algoritmos de Ordenação
PAA - Projeto e Análise de Algoritmos
• Método da Congruência Linear
• Outros Métodos PRNG [R250 e Mersenne Twistter]
• Distribuição, Ordem e o Efeito ‘Tartaruga’
Tabela com os períodos de alguns métodos de geração de números aleatórios.
Os números aleatórios são necessários em cálculo numérico, quando é necessário que não existam correlações
entre eventos independentes. São utilizados no método de Monte Carlo (determinação da área de um lago)
[1], em dinâmica de partículas com dissipação [2] para garantir que as forças entre as partículas sejam
independentes e em criptografia [3].
[2]
[1]
[3]
4. Slide 4
Geração de Números Aleatórios e Algoritmos de Ordenação
PAA - Projeto e Análise de Algoritmos
MERGE SORT – ORDENAÇÃO POR INTERCALAÇÃO
John von Neumann.
28 de dezembro de 1903
(Budapeste - Hungria) –
8 de fevereiro de 1957
(Washington, D.C.- EUA)
Algoritmo criado por von Neumann
Complexidade de tempo : Θ(nlogn)
Complexidade de espaço : Θ(n)
Algoritmo do tipo “Dividir para Conquistar”
Idéia Básica -> Dividir, Conquistar, Combinar
Desvantagem : Alto consumo de memória, devido
a série de chamadas recursivas.
6. Slide 6
Geração de Números Aleatórios e Algoritmos de Ordenação
PAA - Projeto e Análise de Algoritmos
QUICK SORT – ORDENAÇÃO RÁPIDA
• Algoritmo criado por Sir Charles Antony Richard
Hoare, em 1960, publicado em 1962.
• Algoritmo de ordenação não-estável
• Complexidade de tempo : Θ(nlogn) [melhor caso/caso médio]
• Complexidade de tempo : Θ(n^2) [no pior caso]
• Complexidade de espaço : Θ(logn) [melhor caso e caso médio]
• Complexidade de espaço : Θ(n) [pior caso]
• Algoritmo do tipo “Dividir para Conquistar”
• Idéia Básica -> Algoritmo do tipo dividir para
conquistar baseado em particionamento porém sem a
fase de combinação como o merge sort.
Desvantagem : No pior caso se comporta como um
algoritmo quadrático.
Charles Antony
Richard Hoare.
11 de janeiro de 1934
(Colombo – Sri Lanka)
8. Slide 8
Geração de Números Aleatórios e Algoritmos de Ordenação
PAA - Projeto e Análise de Algoritmos
QUICK SORT – ORDENAÇÃO RÁPIDA - Particionamento
Particionamento e Recuperação – melhor caso e caso médio
9. Slide 9
Geração de Números Aleatórios e Algoritmos de Ordenação
PAA - Projeto e Análise de Algoritmos
QUICK SORT – ORDENAÇÃO RÁPIDA – Pior caso
O pior caso para o Quick Sort
ocorre quando a entrada já se
encontra ordenada.
Torna-se tão “eficiente” quanto um
algoritmo quadrático convencional.
Nesse caso a profundidade da árvore
é de N-1 e não O(logn), pois a
mesma não é balanceada.
Finalmente sua complexidade será
dada por N(N-1)/2, ou seja, O(N^2)
10. Slide 10
Geração de Números Aleatórios e Algoritmos de Ordenação
PAA - Projeto e Análise de Algoritmos
QUADRO DE DESEMPENHO
Quadro de avaliação entre os algoritmos de ordenação, levando em conta o número de comparações, trocas
e outras operações necessárias a resolução do problema, realizadas em tempo constante. Abaixo
visualizamos um quadro de complexidade média de implementação de alguns algoritmos de
ordenação(excluindo linhas em branco e de comentários).
11. Slide 11
Geração de Números Aleatórios e Algoritmos de Ordenação
Screenshots & Testes – Bubble Versão 1
PAA - Projeto e Análise de Algoritmos
12. Slide 12
Geração de Números Aleatórios e Algoritmos de Ordenação
Screenshots & Testes – Bubble Versão 2
PAA - Projeto e Análise de Algoritmos
13. Slide 13
Geração de Números Aleatórios e Algoritmos de Ordenação
Screenshots & Testes – Shaker Sort
PAA - Projeto e Análise de Algoritmos
14. Slide 14
Geração de Números Aleatórios e Algoritmos de Ordenação
Screenshots & Testes – Merge Sort
PAA - Projeto e Análise de Algoritmos
15. Slide 15
Geração de Números Aleatórios e Algoritmos de Ordenação
• Screenshots & Testes – Quick Sort [Pivoteamento Central]
PAA - Projeto e Análise de Algoritmos