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

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

5COP096 – Teoria da Computação Aula 7 – Ordenação 5COP096 Teoria da Computação Aula 7 Prof. Dr. Sylvio Barbon Junior Sylvio Barbon Jr –

Apresentações semelhantes


Apresentação em tema: "5COP096 – Teoria da Computação Aula 7 – Ordenação 5COP096 Teoria da Computação Aula 7 Prof. Dr. Sylvio Barbon Junior Sylvio Barbon Jr –"— Transcrição da apresentação:

1 5COP096 – Teoria da Computação Aula 7 – Ordenação 5COP096 Teoria da Computação Aula 7 Prof. Dr. Sylvio Barbon Junior Sylvio Barbon Jr –

2 5COP096 – Teoria da Computação Aula 7 – Ordenação Sumário 1)Ordenação 2)Ordenação Interna 3)Ordenação Externa Sylvio Barbon Jr –

3 5COP096 – Teoria da Computação Aula 7 – Ordenação Ordenação -A ordenação é um dos bons exemplos da resolução de problemas utilizando computador. -A maioria dos métodos de ordenação é baseada em: -Distribuição (Ordenação Digital, Radixsort ou Bucketsort): Não existe comparação entre chaves, sendo o principal problema associado a memória, uma vez que cada grupo exige memória extra. Exemplos: ordenar Cartas de Baralho, classificar cartões perfurados, distribuição de correspondências por bairro/rua etc. O custo para ordenar elementos é da ordem de O(n), pois cada elemento é manipulado algumas vezes. -Comparação (maioria dos métodos): Utilizam normalmente uma chave e serão estudados detalhadamente. Sylvio Barbon Jr –

4 5COP096 – Teoria da Computação Aula 7 – Ordenação Ordenação Sylvio Barbon Jr – Exemplo de Ordenação por Distribuição

5 5COP096 – Teoria da Computação Aula 7 – Ordenação Ordenação Sylvio Barbon Jr – Exemplo de Ordenação por Distribuição

6 5COP096 – Teoria da Computação Aula 7 – Ordenação Ordenação -Um método de ordenação é dito estável, se a ordem relativa dos itens com chaves iguais mantém-se inalterada pelo processo de ordenação. Exemplo: Se uma lista alfabética de nomes de funcionários de uma empresa é ordenada pelo campo salário, então um método estável produz uma lista em que os funcionários com mesmo salário aparecem em ordem alfabética Sylvio Barbon Jr –

7 5COP096 – Teoria da Computação Aula 7 – Ordenação Ordenação -Os métodos de ordenação são classificados em dois grupos: -Ordenação Interna: Quando o arquivo a ser ordenado cabe todo na memória principal. Exemplo: Quando o número de registros a ser ordenado é pequeno o bastante para caber em um array de Java. -Ordenação Externa: Quando o arquivo não cabe na memória principal, e por isso deve ser armazenado em outros dispositivos, por exemplos fitas ou discos. -A principal diferença seria a necessidade de lidar com os registros de forma sequencial para o caso de Ordenação Externa. Sylvio Barbon Jr –

8 5COP096 – Teoria da Computação Aula 7 – Ordenação Ordenação Interna -Trata principalmente o tempo gasto comparando as chaves e movimentações de itens avaliados, assim vamos utilizar a seguinte notação: C(n) – Comparações entre as chaves; M(n) – Movimentações entre os itens; n – Quantidade de itens. - Algoritmos is situ (in place) são métodos que utilizam permutações entre os itens do próprio vetor, não precisando de memória extra. Sylvio Barbon Jr –

9 5COP096 – Teoria da Computação Aula 7 – Ordenação Ordenação Interna Sylvio Barbon Jr – Ordenação Distribuição Comparação Externa Interna Método Simples Método Eficientes

10 5COP096 – Teoria da Computação Aula 7 – Ordenação Ordenação Interna Sylvio Barbon Jr – Os métodos internos são classificados em: - Métodos Simples, são adequados para pequenos arquivos e requerem O(n²) comparações, são programas pequenos, fáceis de entender com simplicidade nos seus princípios. - Métodos Eficientes, são aqueles para arquivos maiores e requerem O(n log n) comparações, comparações complexas como a implementação. Considerando Ordenação Interna, serão estudados: 1) Ordenação por Seleção (Selectionsort); 2) Ordenação por Inserção (Insertionsort); 3) Shellsort; 4) Quicksort; 5) Heapsort;

11 5COP096 – Teoria da Computação Aula 7 – Ordenação Ordenação Interna Sylvio Barbon Jr – Selectionsort (Ordenação por Seleção) - É um dos métodos mais simples; C(n) = n²/2 – n/2 M(n) = 3(n-1) C(n) = n²/2 – n/2 M(n) = 3(n-1) Aspectos negativos: - O fato do arquivo estar ordenado não auxilia em nada; - O algoritmo não é estável, pois ele nem sempre mantém os registros com chaves iguais na mesma posição relativa.

12 5COP096 – Teoria da Computação Aula 7 – Ordenação Ordenação Interna Sylvio Barbon Jr – 12 Insertionsort (Ordenação por Inserção) - A partir de i=2, o i-ésimo item da sequência é transferido para a sequência de destino, sendo inserido no local correto. Os itens maiores são movidos para a direita e inserido o item na posição vazia deixada. - O método é estável. - Registro sentinela marca o registro avaliado. C(n) = n-1 Melhor Caso Pior Caso C(n) = n²/2+n/2-1 M(n) = 3(n-1) M(n) = n²/2+5n/2-3 Caso Médio C(n) = n²/4+3n/4-1 M(n) = n²/4+11n/4-3 -O número mínimo ocorre quando os itens já estão organizados; -O número máximo de comparações ocorrem quando o arquivo está na ordem inversa.

13 5COP096 – Teoria da Computação Aula 7 – Ordenação Ordenação Interna Sylvio Barbon Jr – 13 Shellsort - Foi proposto em 1959 como uma extensão do algoritmo de ordenação por inserção, contornando as trocas separados por h posições. - O método não é estável. - A sua análise contém problemas matemáticos complexos, e uma analise formalizada ainda não foi realizada. - O tempo de execução é sensível à ordem inicial. C(n) = O(n(ln n)²)

14 5COP096 – Teoria da Computação Aula 7 – Ordenação Ordenação Interna Sylvio Barbon Jr – 14 Shellsort vs Insertionsort Insertionsort: Eficiente quando os itens estão quase ordenados Shellsort: Opção com separações h

15 5COP096 – Teoria da Computação Aula 7 – Ordenação Ordenação Interna Sylvio Barbon Jr – 15 Quicksort - Foi publicado em 1962 e é o algoritmo mais rápido e mais utilizado para ordenação. - Utiliza um pivô para particionamento e comparação. - Sua ineficiência aparece quando o arquivo já está ordenado e o pivô escolhido não é adequado. Porém isso pode ser evitado com pequenos ajustes no código. - Os aspectos negativos são: a versão recursiva tem pior caso quadrático de operações, a implementação é muito delicada e o método não é estável.

16 5COP096 – Teoria da Computação Aula 7 – Ordenação Ordenação Interna Sylvio Barbon Jr – 16 Quicksort C(n) = O(n log n) Melhor Caso Pior Caso C(n) = O(n²) Caso Médio C(n) = O(n log n) Para evitar o pior caso do algoritmo, recomenda-se utilizar como o item divisor com valor mais próximo da mediana de três valores quaisquer do arquivo.

17 5COP096 – Teoria da Computação Aula 7 – Ordenação Ordenação Interna 17 Heapsort - É semelhante ao Selectionsort, onde são feitas trocas com o primeiro item da lista. - O custo n para encontrar o menor item da fila pode ser reduzido utilizando estruturas de dados como a fila por prioridade. - Não é estável. - Não é recomendado para arquivos com poucos registros, devido ao tempo para construir o heap. - Em média o Quicksort é duas vezes mais rápido do que o Heapsort. - Heapsort é melhor que o Shellsort para grandes arquivos. C(n) = O(n log n) Melhor Caso Pior Caso C(n) = O(n log n) Caso Médio C(n) = O(n log n)

18 5COP096 – Teoria da Computação Aula 7 – Ordenação Ordenação Interna 18 Heapsort - É semelhante ao Selectionsort, onde são feitas trocas com o primeiro item da lista. - O custo n para encontrar o menor item da fila pode ser reduzido utilizando estruturas de dados como a fila por prioridade. - Não é estável. - Não é recomendado para arquivos com poucos registros, devido ao tempo para construir o heap. - Em média o Quicksort é duas vezes mais rápido do que o Heapsort. - Heapsort é melhor que o Shellsort para grandes arquivos. C(n) = O(n log n) Melhor Caso Pior Caso C(n) = O(n log n) Caso Médio C(n) = O(n log n)

19 5COP096 – Teoria da Computação Aula 7 – Ordenação Ordenação Interna 19 Heapsort

20 5COP096 – Teoria da Computação Aula 7 – Ordenação Ordenação Interna 20 Comparação entre os métodos Métodos Simples O (n 2 ) Métodos Simples O (n 2 ) Selectiosort Insertionsort Métodos Eficientes O( n log n) Métodos Eficientes O( n log n) Shellsort Quicksort Heapsort Analiticamente sem formalização, mas considerado eficiente Mais rápido São constantes para todos os tamanhos (heapsort, maislento) Shellsort é mais rápido que o Heapsort para listas pequenas. É melhor em diversos tamanhos, comparando os métodos simples Pior caso para elementos decrescentes e mais rápido para elementos ordenados (O(n)) Mais simples

21 5COP096 – Teoria da Computação Aula 7 – Ordenação Ordenação Interna 21 Comparação entre os métodos e sua ordem inicial Métodos Simples O (n 2 ) Métodos Simples O (n 2 ) Selectiosort Insertionsort Métodos Eficientes O( n log n) Métodos Eficientes O( n log n) Shellsort Quicksort Heapsort Sensível à ordenação, executa mais rápido para elementos ordenados Sensível à ordenação, mais rápido quando ordenado. Não é sensível a ordenação, porém 10% mais lento quando estiver ordenado Método interessante para arquivos com menos de 20 elementos A vantagem é o número de movimentos, assim adequado para arquivos grandes.

22 5COP096 – Teoria da Computação Aula 7 – Ordenação Ordenação Externa 22 -A ordenação externa envolve arquivos compostos por um número de registros que é maior do que a memória interna do computador pode armazenar. - Restrição: O registro pode ser acessado somente em um dado momento. - Diferenças com Ordenação Interna: 1)O custo para acessar o dado é maior do que o custo para processá-lo. 2)Restrições Severas de acesso aos dados, por exemplo, os dados em uma fita magnética só podem ser acessados sequencialmente. Em um disco magnético o acesso direto é mais custoso do que o acesso sequêncial. 3)Alta dependência da tecnologia.

23 5COP096 – Teoria da Computação Aula 7 – Ordenação Ordenação Externa 23 - A grande ênfase deve ser na minimização do número de vezes que cada item é transferido entre as memórias. - A maioria dos métodos de Ordenação Externa utilizam a estratégia de: 1)É realizada uma varredura na memória externa, quebrando-a em blocos compatíveis com a memória interna. 2)Os blocos são intercalados, fazendo várias leituras sobre o arquivo, criando blocos ordenados cada vez maiores. -Os métodos que serão estudados são: -Intercalação Balanceada de Vários Caminhos; -Seleção por Substituição; -Intercalação Polifásica; -Quicksort Externo;

24 5COP096 – Teoria da Computação Aula 7 – Ordenação Ordenação Externa Intercalação Balanceada de Vários Caminhos -Considerando o seguinte arquivo com 22 registros: - Considerando que a memória interna tem apenas espaço para 3 registros. - Os registros são escritos nas fitas 1, 2 e 3. INTERCALACAOBALANCEADA INTERCALACAOBALANCEADA INT CER AAL Fita 1 Fita 2 Fita 3 ACO ACN A ADE ABL

25 5COP096 – Teoria da Computação Aula 7 – Ordenação Ordenação Externa Intercalação Balanceada de Vários Caminhos - O processo é repetido até formar novos conjuntos inseridos em novas fitas. INTCERAAL Fita 1 Fita 2 Fita 3 Memória Interna ICA Fita 4 A

26 5COP096 – Teoria da Computação Aula 7 – Ordenação Ordenação Externa Intercalação Balanceada de Vários Caminhos - Os registros serão intercalados, o primeiro registro de cada fita é transferido para M.I. e o menor é retirado da fita, dando lugar ao próximo elemento da mesma. Fita 4 AACEILNRT INT CER AAL Fita 1 Fita 2 Fita 3 ACO ACN A ADE ABL Fita 5 Fita 6 AAABCCLNO AADE Memória Interna AAA Fita 7 Intercalação 1 Intercalação 2

27 5COP096 – Teoria da Computação Aula 7 – Ordenação Ordenação Externa Intercalação Balanceada de Vários Caminhos - Considere um arquivo contendo n registros, f fitas e uma memória interna de m palavras. Dessa forma é possível encontrar a Função de Complexidade P, sendo P(n) o número de intercalações. P(n) = log f n/m -No exemplo anterior P(n) = log3 22/3 = 2 - Um arquivo com 1 bilhão de palavras e com uma memória de 2 milhões de palavras, utilizando quatro fita, obtemos P(n) = 5.

28 5COP096 – Teoria da Computação Aula 7 – Ordenação Ordenação Externa Seleção por Substituição - É uma implementação semelhante à intercalação balanceada com o acréscimo de uma abordagem de filas por prioridade, implementadas por um heap. - Exemplo: RAPAZ E123 AARP ZARP PRZ RZ Z AARPZ

29 5COP096 – Teoria da Computação Aula 7 – Ordenação Ordenação Externa Intercalação Polifásica - Um dos problemas com a Intercalação Balanceada pode ser a necessidade de utilizar um grande número de fitas para garantir a sua operação. - O método Intercalação Polifásica elimina a necessidade de cópias adicionais pois distribui os blocos ordenados por meio de uma seleção desigual. -Exemplo. Passo 1 INTRECALACAOBLAANCEADA INRTACELAABCLO Fita 1 Fita 2 AACEN AAD

30 5COP096 – Teoria da Computação Aula 7 – Ordenação Ordenação Externa Intercalação Polifásica Passo 2 - Intercala-se para a Fita 3, deixando a Fita 2 livre. Passo 3 - Intercala-se a Fita 1 e Fita 3 na Fita 2, deixando a Fita 1 livre. AABCLO Fita 1 Fita 2 AACEINNRTAAACDEL Fita 3 Fita 1 Fita 2 AAAABCCEILNNORT AAACDEL Fita 3

31 5COP096 – Teoria da Computação Aula 7 – Ordenação Ordenação Externa Intercalação Polifásica Passo 4 - Intercala-se para a Fita 3, deixando a Fita 2 livre. A intercalação polifásica é ligeiramente melhor do que a intercalação balanceada para valores pequenos de fitas (f), para f > 8 a intercalação balanceada pode ser mais rápida. Fita 1 Fita 2 Fita 3 AAAAAAABCCCDEEILLNNORT

32 5COP096 – Teoria da Computação Aula 7 – Ordenação Ordenação Externa Quicksort Externo -Proposto em 1980, utiliza o paradigma divisão e conquista, sendo a versão in situ para ordenação de registros. -O algoritmo utiliza memória interna em O(log n), não sendo necessário memória externa (além da que armazena os registros). -A complexidade de melhor caso é O(n/b), sendo b é o tamanho do bloco de leitura e gravação sistema operacional. -A complexidade de pior caso é O(n²/tamArea), sendo tamArea o número de registros que podem ser armazenados na memória interna. -A complexidade de médio caso é O(n/b log(n/tamArea)), segundo o trabalho de Monard(1980) este é o caso com maior probabilidade de ocorrer.

33 5COP096 – Teoria da Computação Aula 7 – Ordenação Exercícios 33 1 – Monte uma tabela com as características de melhor caso, pior caso, caso médio, sensibilidade de ordenação, influência de n e estabilidade para os algoritmos: Selectionsort, Insertionsort, Shellsort, Heapsort, Quicksort, Intercalação Balanceada, Seleção por Substituição, Intercalação Polifásica e Quicksort Externo. 2- Entregue um resumo do artigo Quicksort Externo, de Fabiano Cupertino Botelho e Ligiane Alves de Souza.

34 5COP096 – Teoria da Computação Aula 7 – Ordenação Referências Ziviani, Nivio. Projeto de algoritmos: com implementações em Java e C. Thomson Learning, Leiserson, Charles E., Ronald L. Rivest, and Clifford Stein. Introduction to algorithms. Ed. Thomas H. Cormen. The MIT press, 2001.


Carregar ppt "5COP096 – Teoria da Computação Aula 7 – Ordenação 5COP096 Teoria da Computação Aula 7 Prof. Dr. Sylvio Barbon Junior Sylvio Barbon Jr –"

Apresentações semelhantes


Anúncios Google