resposta da lista 3 de algoritmos e estrutura de dados

3
1 - a) Considerando que é necessário realizar a ordenação no menor tempo possível, em ambos os arquivos de tamanho 75, 500 e 1000000 eu usaria o QuickSort, primeiramente pelo seu custo O (n log n) comparações e na tabela comparativa dos métodos de ordenação do Livro Projeto de Algoritmos com implementação em Pascal e C, ele se mostrou o mais eficiente e rápido para ordenar arquivos de 500, 5000, 1000 e 30000 registros. Uma implementação robusta desse método é a melhor escolha para ordenar vetores. b) Como eu não poderia usar um método em que a ocorrência seria possível de um pior caso não fosse permitida, e ainda assim precisaria realizar a ordenação dos elementos dos arquivos no pior tempo possível, para os casos de 75, 500 e 1000000 eu usaria o método da Seleção, pois é um dos métodos mais simples, e requer O(n²) comparações, além de ser apresentado como o método mais lentos nas tabelas de comparações do Livro Projeto de Algoritmos com implementação em Pascal e C. 2 - Pela análise dos fatos, podemos perceber que apesar de cada chave ter os seus 4 bits menos significativos aleatoriamente alterados, eles ainda estão ordenados, pois o computador não foi destruído, e antes da catástrofe as chaves já foram submetidas a uma ordenação por um método O(n log n). E já que teria que ser escolhido um algoritmo que ordene os novos números em O(n), o melhor método a ser escolhido é o Inserção, pois como cada chave já está ordenada, e para arquivos já ordenados, o custo para a descoberta que cada item já está em seu lugar é O(n). a) Quando há casos de restrições por estabilidade, a melhor escolha a ser feita é o de Inserção, tanto para verificar que os números já estão em ordem quanto para ordenar os 4 bits menos significativos de cada chave, pois entre os métodos estudados, foi o único que se apresentou estável. b) Quando se tem restrições de intolerância ao pior caso, para se ordenar os 4 bits menos significativos (que foram aleatoriamente alterados) a melhor escolha é o HeapSort, que qualquer que seja sua entrada, o comportamento dele é O(n log n).

Upload: marina

Post on 27-Sep-2015

214 views

Category:

Documents


1 download

TRANSCRIPT

1 - a) Considerando que necessrio realizar a ordenao no menor tempo possvel, em ambos os arquivos de tamanho 75, 500 e 1000000 eu usaria o QuickSort, primeiramente pelo seu custo O (n log n) comparaes e na tabela comparativa dos mtodos de ordenao do Livro Projeto de Algoritmos com implementao em Pascal e C, ele se mostrou o mais eficiente e rpido para ordenar arquivos de 500, 5000, 1000 e 30000 registros. Uma implementao robusta desse mtodo a melhor escolha para ordenar vetores.b) Como eu no poderia usar um mtodo em que a ocorrncia seria possvel de um pior caso no fosse permitida, e ainda assim precisaria realizar a ordenao dos elementos dos arquivos no pior tempo possvel, para os casos de 75, 500 e 1000000 eu usaria o mtodo da Seleo, pois um dos mtodos mais simples, e requer O(n) comparaes, alm de ser apresentado como o mtodo mais lentos nas tabelas de comparaes do Livro Projeto de Algoritmos com implementao em Pascal e C.2 - Pela anlise dos fatos, podemos perceber que apesar de cada chave ter os seus 4 bits menos significativos aleatoriamente alterados, eles ainda esto ordenados, pois o computador no foi destrudo, e antes da catstrofe as chaves j foram submetidas a uma ordenao por um mtodo O(n log n). E j que teria que ser escolhido um algoritmo que ordene os novos nmeros em O(n), o melhor mtodo a ser escolhido o Insero, pois como cada chave j est ordenada, e para arquivos j ordenados, o custo para a descoberta que cada item j est em seu lugar O(n). a) Quando h casos de restries por estabilidade, a melhor escolha a ser feita o de Insero, tanto para verificar que os nmeros j esto em ordem quanto para ordenar os 4 bits menos significativos de cada chave, pois entre os mtodos estudados, foi o nico que se apresentou estvel. b) Quando se tem restries de intolerncia ao pior caso, para se ordenar os 4 bits menos significativos (que foram aleatoriamente alterados) a melhor escolha o HeapSort, que qualquer que seja sua entrada, o comportamento dele O(n log n).

5 O algoritmo ShellSort divide o vetor a ser ordenado em partes menores para facilitar a ordenao dos itens, por isso, apesar de quando H=1 ele se comporta como o mtodo de Insero direta, o vetor j est pr-ordenado sendo necessrias somente algumas poucas trocas. Por ele no ordenar o vetor inteiro diretamente, em algum momento possvel que a ordem original dos registros de chaves iguais no seja preservada, o torna um mtodo no estvel. A imagem abaixo mostra a troca da ordem original dos registros de chaves iguais:

7 O mtodo de Insero para este caso o mais eficiente pois para arquivos j ordenados, verifica e ordena os arquivos em menos tempo que o QuickSort, tornando-se ideal para colocar em ordem arquivos quase ordenados, e tendo um custo de O(n), caso os arquivos estejam ordenados. Quando se trata de vetores j ordenados, o QuickSort cai em seu pior caso, onde as comparaes so em sua maior parte desequilibradas, fazendo o custo ser O(n).