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

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

5COP096 Teoria da Computação

Apresentações semelhantes


Apresentação em tema: "5COP096 Teoria da Computação"— Transcrição da apresentação:

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

2 Ordenação Ordenação Interna Ordenação Externa
Sumário Ordenação Ordenação Interna Ordenação Externa Sylvio Barbon Jr –

3 Sylvio Barbon Jr – barbon@uel.br
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 Sylvio Barbon Jr – barbon@uel.br
Ordenação Exemplo de Ordenação por Distribuição Sylvio Barbon Jr –

5 Sylvio Barbon Jr – barbon@uel.br
Ordenação Exemplo de Ordenação por Distribuição Sylvio Barbon Jr –

6 Sylvio Barbon Jr – barbon@uel.br
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 Sylvio Barbon Jr – barbon@uel.br
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 Sylvio Barbon Jr – barbon@uel.br
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 Sylvio Barbon Jr – barbon@uel.br
Ordenação Interna Distribuição Ordenação Comparação Interna Externa Método Eficientes Método Simples Sylvio Barbon Jr –

10 Sylvio Barbon Jr – barbon@uel.br
Ordenação Interna 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; Sylvio Barbon Jr –

11 Sylvio Barbon Jr – barbon@uel.br
Ordenação Interna Selectionsort (Ordenação por Seleção) - É um dos métodos mais simples; 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. Sylvio Barbon Jr –

12 Sylvio Barbon Jr – barbon@uel.br
Ordenação Interna 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. Melhor Caso C(n) = n-1 M(n) = 3(n-1) Caso Médio C(n) = n²/4+3n/4-1 M(n) = n²/4+11n/4-3 Pior Caso C(n) = n²/2+n/2-1 M(n) = n²/2+5n/2-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. Sylvio Barbon Jr –

13 Sylvio Barbon Jr – barbon@uel.br
Ordenação Interna 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)²) Sylvio Barbon Jr –

14 Sylvio Barbon Jr – barbon@uel.br
Ordenação Interna Shellsort vs Insertionsort Insertionsort: Eficiente quando os itens estão quase ordenados Shellsort: Opção com separações h Sylvio Barbon Jr –

15 Sylvio Barbon Jr – barbon@uel.br
Ordenação Interna 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. Sylvio Barbon Jr –

16 Sylvio Barbon Jr – barbon@uel.br
Ordenação Interna Quicksort Melhor Caso C(n) = O(n log n) Caso Médio C(n) = O(n log n) Pior Caso C(n) = O(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. Sylvio Barbon Jr –

17 Ordenação Interna 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. Melhor Caso C(n) = O(n log n) Caso Médio C(n) = O(n log n) Pior Caso C(n) = O(n log n)

18 Ordenação Interna 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. Melhor Caso C(n) = O(n log n) Caso Médio C(n) = O(n log n) Pior Caso C(n) = O(n log n)

19 Ordenação Interna Heapsort

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

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

22 Ordenação Externa 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: O custo para acessar o dado é maior do que o custo para processá-lo. 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. Alta dependência da tecnologia.

23 Ordenação Externa 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: É realizada uma varredura na memória externa, “quebrando-a” em blocos compatíveis com a memória interna. 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 Ordenação Externa 1- 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. I N T E R C A L O B D I N T E R C A L O B D Fita 1 I N T A C O A D E Fita 2 C E R A B L A Fita 3 A L A C N

25 Ordenação Externa 1- Intercalação Balanceada de Vários Caminhos
O processo é repetido até formar novos conjuntos inseridos em novas fitas. Fita 1 Fita 2 Fita 3 Fita 4 I N T C E R A L A I C A Memória Interna

26 Ordenação Externa 1- 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 1 I N T A C O A D E Intercalação 1 Fita 2 C E R A B L A Fita 3 A L A C N A C E I L N R T Fita 4 A Fita 5 A B C L N O Memória Interna Fita 7 Intercalação 2 Fita 6 A D E

27 P(n) = logf n/m Ordenação Externa
1- 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) = logf 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 Ordenação Externa 2- 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: R A P Z E 1 2 3 A R P Z A R P Z

29 Ordenação Externa 3- 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 I N T R E C A L O B D I N R T A C E L A B C L O Fita 1 Fita 2 A C E N A D

30 Ordenação Externa 3- 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. Fita 1 A B C L O Fita 2 Fita 3 A C E I N R T A C D E L Fita 1 Fita 2 A B C E I L N O R T Fita 3 A C D E L

31 Ordenação Externa 3- 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 A B C D E I L N O R T Fita 2 Fita 3

32 Ordenação Externa 4- 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 Exercícios 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 Referências Ziviani, Nivio. Projeto de algoritmos: com implementações em Java e C. Thomson Learning, 2007. 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"

Apresentações semelhantes


Anúncios Google