Sei sulla pagina 1di 14

FACULDADE DE TECNOLOGIA DE PRAIA GRANDE - FATEC

GABRIELA ABDALA, LUIS EDUARDO, RODRIGO PETRI, VICTOR HENRIQUE

ALGORITMO DE ORDENAO:
ANLISE DO ALGORITMO MERGE SORT

PRAIA GRANDE 2013

GABRIELA ABDALA, LUIS EDUARDO, RODRIGO PETRI, VICTOR HENRIQUE

ALGORITMO DE ORDENAO:
ANLISE DO ALGORITMO MERGE SORT

Seminrio da disciplina Estrutura de Dados, ministrada pela Prof. Fenanda Schimitz de Almeida Larguesa, no Curso Superior de Tecnologia em Anlise e Desenvolvimento de Sistemas, 3 semestre, noturno.

PRAIA GRANDE 2013

LISTA DE ILUSTRAES

Figura 1 Funcionamento do algoritmo MergeSort........................................06 Figura 2 Representao de pseudocdigo..................................................08

SUMRIO

1 INTRODUO ....................................................................................................... 04 2 METODOLOGIA .................................................................................................... 05 3 IMPLEMENTAO ................................................................................................ 07 4 VANTAGENS E DESVANTAGENS ....................................................................... 11 5 CONSIDERAES FINAIS ................................................................................... 12 6 REFERNCIAS BIBLIOGRFICAS ...................................................................... 13

1 INTRODUO
Quando um problema pode ser dividido em vrios subproblemas idnticos ao original, porm menores em tamanho, pode-se resolve-los recursivamente, dividindo-os em partes cada vez menores, at que sua soluo seja simplificada e, depois, juntar o resultado das resolues em partes maiores para se obter a soluo do problema original. Um algoritmo que ordena um conjunto, geralmente representado num vetor, que chamado de algoritmo de ordenao. MergeSort uma tcnica de Dividir e Conquistar, utilizando mtodo de recursividade, que possibilita o acesso aos dados de maneira mais eficiente. O algoritmo que analisaremos neste trabalho realiza o mesmo trabalho que o Insertion Sort, porm, em um tempo de execuo bem menor, mas com custo maior de memria, por causa da recurso. Ainda existe uma discusso sobre sua criao, mas apareceram evidncias de que o algoritmo foi proposto por John Von Neumann em 1945. Essa discusso existe, pois estudar as vrias contribuies que ele fez , ao mesmo tempo, complexa e fascinante. Essa complexidade se deve em parte a existncia de muitas fontes de informao, algumas pouco acessveis, outras discordantes entre si ou polmicas. A atribuio a ele veio de Knuth, que argumentou no seu livro Arte de Programao Computacional: Ordenando e Procurando, onde Von Neumann foi o primeiro a descrever a idia. Classificado como ordenao por partio, utiliza o paradigma Dividir para Conquistar.

2 METODOLOGIA
Mergesort um algoritmo recursivo, que implementado dividindo uma sequncia original em pares de dados, ordena-as e depois as reagrupa em sequncias de quatro elementos, e assim por diante, at ter toda a sequncia dividida em apenas duas partes. Assim, sua idia bsica que muito fcil criar uma sequncia ordenada a partir de duas outras tambm ordenadas. O Mergesort classificado como ordenao por partio, que parte do princpio de "dividir para conquistar". Os trs passos que esta tcnica envolve, em cada nvel de recurso so. Dividir Dividir o problema em um conjunto de subproblemas que so instncias menores do mesmo problema principal. Conquistar Resolver os subproblemas a partir da mesma resoluo recursiva. Se o tamanho do subproblema pequeno o suficiente, aplicar uma resoluo trivial. Combinar Combinar a soluo dos subproblemas na soluo do problema original.

Este princpio uma tcnica que foi utilizada pela primeira vez por Anatolii Karatsuba em 1960. Algoritmos que utilizam o mtodo de partio so caracterizados por serem os mais rpidos dentre os outros algoritmos pelo fato de sua complexidade ser, na maioria das situaes, O (n log n). Os dois representantes mais ilustres desta classe so o quicksort e o mergesort. No um mtodo in-place. Em cincia da computao, um algoritmo in-place um algoritmo que transforma a entrada de informao usando Estrutura de Dados com uma pequena e constante quantidade de espao de memria extra. A entrada de informao geralmente sobrescrita por uma sada de dados, como o algoritmo executa. Um algoritmo que no in-place, no caso, o MergeSort, chamado de out-of-place. Antes de exibirmos o algoritmo completo do MergeSort vamos explicar e analisar um pouco melhor o algoritmo de merge.

Imagine que voc tm duas pilhas de cartas de baralho e que inicialmente elas j se encontram ordenadas (com as menores cartas no topo). Nosso objetivo formar uma nica pilha a partir destas duas, de maneira que o resultado final continue ordenado. Intuitivamente o que fariamos seria: Pegar uma carta da pilha da direita e uma da pilha da esquerda, descobrir qual a menor e coloca-la em uma terceira pilha (que representar o resultado final). Supondo que a carta menor foi a da pilha da direita, pegamos novamente outra carta da pilha da direita e comparamos novamente com a outra carta, que j estava em nossa mo (vinda da pilha esquerda). Repetimos os passos um e dois at que no haja cartas em ambas as pilhas. Se uma pilha se esgota primeiro, simplesmente continuamos pegando as cartas da pilha remanescente. Como partimos da premissa que antes do processo as duas pilhas j se encontravam ordenadas, e que a cada iterao a pilha resultante tambm continua ordenada, podemos concluir que ao fim do processo nosso objetivo ser alcanado. O procedimeto de Merge leva tempo linear, null, ou seja, o tempo de execuo deste algoritmo est relacionado ao nmero de itens sendo ordenados. Computacionalmente, cada passo leva um tempo constante j que apenas uma comparao entre os elementos do topo feita. J que realizamos no mximo null passos, podemos afirmar que o algoritmo de Merge leva um tempo linear.

3 IMPLEMENTAO
Implementando o paradigma Dividir para Conquistar no MergeSort:

Dividir: dividir a lista em duas listas com cerca da metade do tamanho. Se a sequncia tiver mais de um elemento, divida em duas partes. Conquistar: dividir cada uma das duas sublistas recursivamente at que tenham tamanho de cada subseqncia em separado usando MergeSort. Combinar: fundir as duas sublistas de volta em uma lista ordenada, ou seja, juntar as duas subseqncias em uma seqncia j ordenada.

A operao de fuso merge, do MergeSort, muito utilizada na busca online, aonde os dados chegam de blocos em blocos, so ordenados por qualquer mtodo e depois fundidos pela mesma. No entanto, esta abordagem pode demandar muito tempo e espao de armazenamento se os blocos recebidos forem pequenos em comparao com os dados ordenados.

Figura 1: Funcionamento do algoritmo MergeSort.

Na literatura da cincia da computao existe uma grande variedade de algoritmos de ordenao e todas elas parecem funcionar em vetores. Mas, e se quisermos ordenar algo mais do que um vetor? rvores binrias j so todas prordenadas, mas, e as listas ligadas? Para isso, temos o MergeSort que funciona ainda melhor em listas ligadas, realizando comparaes em matrizes. Isso evita a necessidade de um espao auxiliar e se torna um simples e confivel algoritmo de ordenao. Para o MergeSort no tem tanta importncia o estudo de complexidade, se o vetor est no melhor, mdio ou pior caso, porque, para qualquer que seja o caso ele sempre ter a complexidade de ordem (n*log n), ou seja, ele sempre ir dividir e intercalar. Vamos definir o que melhor, mdio e pior caso para o MergeSort. Melhor Caso nunca necessrio trocar aps comparaes. Mdio Caso h necessidade de realizar troca aps comparaes. Pior Caso sempre necessrio trocar aps comparaes.

Na prtica, difcil (seno impossvel) prever com rigor o tempo de execuo de um algoritmo ou programa. O tempo vai depender de vrias constantes, como por exemplo, o tempo de processamento de cada computador, do algoritmo implementado, entre outros. Para ilustrarmos o funcionamento do algoritmo MergeSort, vamos apresentar, a seguir, uma forma de representao de pseudocdigo deste algoritmo: Variveis: n = nmero de elementos X = vetor para ordenao T = auxiliar na comparao A,B = vetores auxiliares m = auxiliar na diviso do vetor i, j = auxiliares na intercalao e diviso k = auxiliar na intercalao

Figura 2: Representao de pseudocdigo.

Certos algoritmos so estveis a partir de sua concepo original, como o MergeSort. Porm, possvel implementar a estabilidade artificialmente em certos algoritmos. Por exemplo, numa comparao de dois objetos de mesmo valor pode aplicar-se uma comparao adicional para verificar se a ordem original dos registros associados foi mantida. Neste caso, a implementao de estabilidade requer um custo adicional de eficincia. O MergeSort dividido basicamente em 2 partes: A Parte de Diviso do vetor em partes iguais e a intercalao dos elementos dos vetores. O seu funcionamento o seguinte: Calcula-se a posio do meio tendo como referncia a posio inicial e final e chama-se a funo recursivamente para as duas partes. Depois das chamadas recursivas chama-se a funo intercala pra juntar as duas partes ordenadas. A funo intercala exige um vetor auxiliar para sua execuo. Segue um exemplo dessa descrio em cdigo C++:

10

// MergeSort
#include <cstdlib> #include <iostream> #include<stdio.h> using namespace std; void intercalar (int v[],int aux[],int ini1, int ini2,int fim2){ int in1=ini1,in2=ini2,fim1=in2-1,au=0,i,j; while(in1<=fim1 && in2<=fim2) { if (v[in1]<v[in2]) { aux[au++] = v[in1++]; } else { aux[au++] = v[in2++]; } } while(in1<=fim1) { aux[au++] = v[in1++]; } while(in2<=fim2) { aux[au++] = v[in2++]; } for(i=0;i<au;i++){ v[i+ini1]=aux[i]; } } void mergeSort (int v[], int aux[],int esq, int dir){ int meio,i; if(esq<dir) { meio=(esq+dir)/2; mergeSort(v,aux,esq,meio); mergeSort(v,aux,meio+1,dir); intercalar(v,aux,esq,meio+1,dir); } } int main(){ int v[5]={1,5,4,3,2},aux[5],i; mergeSort(v,aux,0,4); for(i=0;i<5;i++) { cout<<"\n"; printf("\n"" ""%d\t\n",v[i]); cout<<"\n"; } system("PAUSE"); return 0; system("PAUSE"); }

11

4 VANTAGENS E DESVANTAGENS
O algoritmo de ordenao MergeSort possui uma forma de ordenao estvel. Um algoritmo de ordenao diz-se estvel se preserva a ordem de registros de chaves iguais. Isto , se tais registros aparecem na sequncia ordenada, na mesma ordem em que esto na sequncia inicial. Esta propriedade til apenas quando h dados associados s chaves de ordenao. Por exemplo, um algoritmo estvel ordenando a sequncia de nmeros (chaves) com letras associadas (registros): 3[a], 2[b], 2[c], 1[d] Obrigatoriamente retornar: 1[d], 2[b], 2[c], 3[a] Enquanto algoritmos instveis sujeitam os elementos associados aos objetos a serem ordenados nas mudanas: 1[d], 2[c], 2[b], 3[a] Outras vantagens a serem consideradas: Pode ser utilizado como principio para a Ordenao Externa; Fcil implementao; Eficiente para ordenar listas; Implementao com programao paralela.

Desvantagens: Utiliza memria auxiliar; Alto consumo de memria.

12

5 CONSIDERAES FINAIS
Com a economia altamente globalizada as organizaes procuram desenvolver mecanismos cada vez mais eficazes, no intuito de otimizar seus processos administrativos. A evoluo da tecnologia dos algoritmos nos possibilita atingir um nvel cada vez mais avanado e satisfatrio na performance e na otimizao de diversos processos. A performance cria ento uma base comum de importncia para todos os processos. Desta forma a performance mede o que factvel ou no na computao. Algoritmos so planejados para resolver problemas e manter as boas prticas da engenharia de software. O algoritmo MergeSort divide a coleo de elementos apresentados nem determinado problema em duas, e chama o algoritmo recursivamente em ambas as partes, at que seu tamanho seja unitrio, onde, nessa ocasio, a recurso inicia seu retorno e o algoritmo de MergeSort as une em um pedao ordenado maior. A medida que a recurso volta, todas as partes ordenadas so juntadas at que o array principal esteja completamente ordenado.

13

6 REFERNCIAS BIBLIOGRFICAS
BOSCARIOL, LEANDRO A.; GAMEIRO, LUCAS B.; ARRUDA, RODRIGO L. S. Algoritmos de Ordenao. Disponvel em: < http://www2.dc.uel.br/~rlarruda/trab/algoritmosordenacao.pdf>. Acesso em: 30 de mar. de 2013.

JNIOR, ANTONIO CARLOS DE NAZAR. Algoritmos e Estruturas de Dados - Mtodos de ordenao Interna. Disponvel em: < http://www.decom.ufop.br/menotti/aedI082/tps/tp3sol1.pdf>. Acesso em: 30 de mar. de 2013.

FELDAR, Julia A. S.. Manual de Normas para sua Elaborao (Trabalho de Concluso de Curso TCC, trabalho de graduao interdisciplinar e outros). Praia Grande/SP: 2006.

Potrebbero piacerti anche