Aula 03 Limite assintótico para a ordenação, Ordenação em tempo linear



Documentos relacionados
Limite assintótico para a ordenação, Ordenação em tempo linear

Quão rápido podemos ordenar? Aula07-LimiteInferiorpara Ordenação. Quão rápido podemos ordenar? Árvore de Decisão- Exemplo. Ordenação em Tempo Linear

FACULDADE DE IMPERATRIZ - FACIMP BACHARELADO EM SISTEMAS DE INFORMAÇÃO ESTRUTURA DE DADOS 2. Vieira Lima Junior. Everson Santos Araujo

Aula 04 Ordenação parcial

Projeto e Análise de Algoritmos

Aula 19: Métodos eficientes de ordenação

Tópico 5 Algoritmos de Ordenação. Parte II - métodos de ordenação: counting sort, radix sort e bucket sort.

Métodos de Ordenação Parte 4

Ordenação em Tempo Linear

ESTRUTURAS DE DADOS E ALGORITMOS ALGORITMOS DE ORDENAÇÃO EM TEMPO LINEAR

Ordenação em tempo linear

Algoritmos de Ordenação

Ordenação. Prof. Jonas Potros

Pesquisa em Memória Primária. Prof. Jonas Potros

Estruturas de Dados 2

Aula 03 Custos de um algoritmo e funções de complexidade

ALGORITMOS DE ORDENAÇÃO. Algoritmos de comparação-e-troca. Bubble Sort Merge Sort Quick Sort

Árvore Binária de Busca

Ordenação por Intercalação Métodos de Ordenação Parte 4

Ordenação em Tempo Linear

Pesquisa em Memória Primária. Prof. Jonas Potros

Ordenação em Tempo Linear. Leitura: Cormen Capítulo 8

MCTA028 Programação Estruturada Aula 19 Custos de um algoritmo e funções de complexidade

Algoritmos de Ordenação: Tempo Linear

BCC202 - Estrutura de Dados I

Análise de Algoritmos

Algoritmos Eficientes de Ordenação

ALGORITMOS DE ORDENAÇÃO

FACULDADE CAMPO LIMPO PAULISTA MESTRADO EM CIÊNCIA DA COMPUTAÇÃO. Projeto e Análise de Algoritmos II Lista de Exercícios 2

Árvores. Algoritmos e Estruturas de Dados 2005/2006

BC1424 Algoritmos e Estruturas de Dados I. Aula 16: Árvores (introdução) Prof. Jesús P. Mena-Chalco. jesus.mena@ufabc.edu.br

Estruturas de Dados Pilhas, Filas e Deques

Figura 1 Busca Linear

EAD Árvore árvore binária

Sistemas Distribuídos: Princípios e Algoritmos Introdução à Análise de Complexidade de Algoritmos

Disciplina de Projetos e Análise de Algoritmos. Aula 1 - Apresentação aos Algoritmos Computacionais

Busca. Pesquisa sequencial

Algoritmos e Estrutura de Dados III. Árvores

ESTRUTURAS DE DADOS II

Métodos de Pesquisa em Memória Primária

Análise de Algoritmos Algoritmos de Ordenação

Capítulo 19. Algoritmos de Ordenação e de Pesquisa. Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Sumário. 5COP096 Teoria da Computação Aula 8 Pesquisa em Memória Primária

Estruturas de Dados. Prof. Gustavo Willam Pereira Créditos: Profa. Juliana Pinheiro Campos

2. Método de Monte Carlo

Algoritmos e Estrutura de Dados

Bacharelado em Ciência e Tecnologia Bacharelado em Ciências e Humanidades. Representação Gráfica de Funções

Análise de algoritmos

INF 1007 Programação II

Aula Teórica 12. Material Didático Proposto

1. Sistemas de numeração

Quick Sort. Considerações Sobre Algoritmos de Ordenação. Estagiário PAE: Jesimar da S. Arantes Professor: ClaudioQuick F. M.

Métodos Computacionais. Árvores

Algoritmos e Programação de Computadores Profs: Ronaldo Castro de Oliveira Anilton Joaquim da Silva

Sistemas de Numerações.

Estruturas de Armazenamento e Indexação. Rafael Lage Moreira Barbosa

Quick Sort. Considerações Sobre Algoritmos de Ordenação. Estagiário PAE: Jesimar da S. Arantes Professor: Claudio Quick F. M.

Hashing Letícia Rodrigues Bueno

Respostas dos Exercícios Cap. 2 Russell & Norvig

Definição do Plano de Execução. Estimativas sobre os Dados

Manual Sistema Proac Editais. Dúvidas Frequentes

Linguagem C: Árvores Binarias

CAPÍTULO 3 - TIPOS DE DADOS E IDENTIFICADORES

Organização de Arquivos

Árvores Binárias de Busca

Simulador didático de testes de algoritmos de ordenação

Ordenação. Prof. Túlio A. M. Toffolo Prof. Marco Antonio M. Carvalho BCC402 Aula 04 Algoritmos e Programação Avançada

Métodos de Ordenação

CI165 Introdução. André Vignatti. 31 de julho de 2014

BCC204 - Teoria dos Grafos

Algoritmos de Ordenação. Profº Carlos Alberto T. Batista

INF1007: Programação 2 10 Árvores Binárias. (c) Dept. Informática - PUC-Rio 1

Análise empírica de algoritmos de ordenação

Árvores Binárias Balanceadas

Sistemas Operacionais e Introdução à Programação. Vetores e matrizes

Gerenciamento de Transações

Complexidade de Algoritmos. Edson Prestes

Projetos. Universidade Federal do Espírito Santo - UFES. Mestrado em Informática 2004/1. O Projeto. 1. Introdução. 2.

NOVO ASSINADOR DO PROJUDI

Pedro Vasconcelos DCC/FCUP. Programação Funcional 15 a Aula Árvores de pesquisa

Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri. Banco de Dados Processamento e Otimização de Consultas

Algoritmos de Busca em Tabelas

Pesquisa Sequencial e Binária

Estruturas de Dados I

AULA 13. Algoritmos p.526/582

Projeto e Análise de Algoritmos

Banco de Dados I Módulo V: Indexação em Banco de Dados. (Aulas 1, 2 e 3) Clodis Boscarioli

Universidade Federal de Mato Grosso do Sul Faculdade de Computação Disciplina de Verão: Algoritmos e Programação II

Análise de Algoritmos: Melhor caso, pior caso, caso médio

6LPXODomR H0RGHODJHP &RPSXWDFLRQDO 1~PHURV $OHDWyULRV 3DUDTXH 6HUYHP " São responsáveis pela aleatoriedade nos modelos de simulação.

INF 1010 Estruturas de Dados Avançadas

Algoritmos de Pesquisa e Ordenação em Vectores

Filas com prioridade - Introdução (1)

Em um sistema de numeração de base b qualquer, um número positivo é representado pelo polinômio:

Caracterização temporal de circuitos: análise de transientes e regime permanente. Condições iniciais e finais e resolução de exercícios.

Capacidade = 512 x 300 x x 2 x 5 = ,72 GB

Possui como idéia central a divisão de um universo de dados a ser organizado em subconjuntos mais gerenciáveis.

PESQUISA EM INFORMÁTICA -COMO ESCREVER O TEXTO. Prof. Angelo Augusto Frozza, M.Sc.

Transcrição:

MC3305 Algoritmos e Estruturas de Dados II Aula 03 Limite assintótico para a ordenação, Ordenação em tempo linear Prof. Jesús P. Mena-Chalco jesus.mena@ufabc.edu.br 2Q-2015 1

2 Ordenação Ordenar corresponde ao processo de re-arranjar um conjunto de objetos em ordem ascendente ou descendente. O objetivo principal da ordenação é facilitar a recuperação posterior de itens do conjunto ordenado. Diversos algoritmos de ordenação já foram estudados e implementados...

3 Ordenação Os métodos de ordenação são classificados em 2 grandes grupos: Ordenação Interna: Se o arquivo a ser ordenado cabe todo na memória principal Ordenação Externa: Se o arquivo a ser ordenado não cabe todo na memória principal

4 Ordenação Os métodos de ordenação são classificados em 2 grandes grupos: Ordenação Interna: Se o arquivo a ser ordenado cabe todo na memória principal Algoritmos Baseados em Comparações Algoritmos Não Baseados em Comparações

Ordenação baseada em comparações 5

6 Ordenação Algoritmos basedos em Comparações Insertion sort Selection sort Bubble sort Merge sort Quick sort Complexidade computacional [limite matemático] [limite assintótico para a ordenação]

Livro-texto: Seção 7.7 7 [Árvore de decisão] - Qualquer algoritmo de ordenação por comparação pode ser representado por uma árvore de decisão.

Livro-texto: Seção 7.7 8 [Árvore de decisão] - Qualquer algoritmo de ordenação por comparação pode ser representado por uma árvore de decisão. - O número de comparações efetuadas pelo algoritmo corresponde ao maior comprimento do caminho da raiz até uma de suas folhas.

Fonte: http://users.informatik.uni-halle.de/~jopsi/dinf205/chap8.shtml 9

Ordenação baseada em comparações Sem perda de generalidade suponha que os valores a ser ordenados são sempre distintos [Árvore de decisão] [Cada nó folha está associada a uma permutação dos elementos do vetor] 10

[Qualquer algoritmo de ordenação deverá percorrer um caminho desta árvore] da raiz até a folha 11 Ordenação baseada em comparações Sem perda de generalidade suponha que os valores a ser ordenados são sempre distintos [Árvore de decisão]

[Qualquer algoritmo de ordenação deverá percorrer um caminho desta árvore] da raiz até a folha 12 Ordenação baseada em comparações Sem perda de generalidade suponha que os valores a ser ordenados são sempre distintos [Árvore de decisão] Número de folhas = n!

13 Ordenação baseada em comparações Seja L o número de folhas de uma árvore binária e h sua altura. Então h=3 L=8

14 Ordenação baseada em comparações Seja L o número de folhas de uma árvore binária e h sua altura. Então h=3 L=8

15 Ordenação baseada em comparações Seja L o número de folhas de uma árvore binária e h sua altura. Então h=3 L=8

16 Ordenação baseada em comparações Algoritmos basedo em Comparaçães Insertion sort Selection sort Bubble sort Merge sort Quick sort Vários algoritmos aqui listados são ótimos pois a sua complexidade computacional é

Ordenação em tempo linear 17

18 Ordenação Algoritmos basedo em Comparações Insertion sort Selection sort Bubble sort Merge sort Quick sort Algoritmos não baseados em Comparações (utilizam alguma informação sobre os dados) Counting sort Radix sort Bin sort / Bucket sort Algoritmos que fazem a ordenação em tempo linear

19 Counting sort Os elementos a serem ordenados são números inteiros pequenos Números inteiros todos menores ou iguais a k,

20 Counting sort Os elementos a serem ordenados são números inteiros pequenos Números inteiros todos menores ou iguais a k, Counting sort ordena estes n números em tempo Exemplo: n = 1 000 000 k = 30

21 Counting sort O algoritmo usa dois vetores auxiliares para ordenar A: C (de tamanho k), que guarda em C[i] o número de ocorrencias de elementos i em A. B (de tamanho n), onde se constroi o vetor ordenado. Simulação: https://www.cs.usfca.edu/~galles/visualization/countingsort.html

22 Counting sort A C B

23 Counting sort A C B

24 Counting sort A C B

25 Counting sort A C B

26 Counting sort A C B

27 Counting sort A C B

28 Counting sort A C B

29 Counting sort A C B

30 Counting sort A C B 10

31 Counting sort A C 16 B 10

32 Counting sort A C B 10 30

33 Counting sort A C 29 B 10 30

34 Counting sort Esboçe o algoritmo! (~7 min) Pode usar vetores auxiliares: C (de tamanho k), que guarda em C[i] o número de ocorrências de elementos i em A. B (de tamanho n), onde se constroi o vetor ordenado.

Counting sort 35

Counting sort 36

Counting sort 37

Counting sort M: número de movimentações de registros 38

39 M: número de movimentações de registros Se k=n², o algoritmo teria custo linear?

40 01. Atividade em aula Dado o seguinte vetor de 7 elementos e quatro sequências de índices do vetor que representam uma permutação. Selecione todas as sequências que pertencem ao resultado da execução de um algoritmo de ordenação estável. (a) 4 2 5 1 6 3 0 (b) 2 4 1 5 0 3 6 (c) 0 3 6 1 5 2 4 (d) 6 3 0 5 1 4 2 (e) nehuma sequência de índices pertence a um algoritmo de ordenação estável

41 01. Atividade em aula Um algoritmo de ordenação é estável quando números com o mesmo valor aparecem no arranjo de saída na mesma ordem em que se encontram no arranjo 7 5 2 5 2 5 5 7 Estável 2 5 5 7 Não-estável

42 01. Atividade em aula Dado o seguinte vetor de 7 elementos e quatro sequências de índices do vetor que representam uma permutação. Selecione todas as sequências que pertencem ao resultado da execução de um algoritmo de ordenação estável. (a) 4 2 5 1 6 3 0 (b) 2 4 1 5 0 3 6 (c) 0 3 6 1 5 2 4 (d) 6 3 0 5 1 4 2 (e) nehuma sequência de índices pertence a um algoritmo de ordenação estável

43 02. Atividade em aula v := 62 31 84 96 19 47 count := 0 0 0 0 0 0 i=0 3 0 1 1 0 0 O algoritmo é estável?

44 02. Atividade em aula v := 62 31 84 96 19 47 count := 0 0 0 0 0 0 i=0 i=1 i=2 i=3 i=4 3 0 1 1 0 0 3 1 2 2 0 1 3 1 4 3 0 1 3 1 4 5 0 1 3 1 4 5 0 2

45 02. Atividade em aula v := count := 62 31 84 96 19 47 3 1 4 5 0 2 s := 31 62 84 0 1 2 3 4 5

46 02. Atividade em aula (a) O algoritmo ordena através da contagem de elementos menores e maiores de cada elemento do vetor v. Afirmação correta (b) O algoritmo é O(n²) pois são realizadas n² comparações (2 laços aninhados) Afirmação incorreta

47 Counting sort O Counting sort é um algoritmo que faz a ordenação de forma estável: A posição relativa de elementos iguais que ocorrem no vetor ordenado permanecem na mesma ordem em que aparecem na entrada. Counting sort e Quick sort são estáveis Heap sort é não-estável.

48 Counting sort A C B 10 10

Radix sort Ordena o vetor A de n números inteiros com um número constante d de digitos A ordem começa pelo digito menos significativo. Simulação: https://www.cs.usfca.edu/~galles/visualization/radixsort.html 49

Radix sort Fonte: http://users.informatik.uni-halle.de/~jopsi/dinf205/chap8.shtml 50

51 Radix sort A complexidade computacional, considerando o número de movimentações de registros, e o counting sort: Counting sort = Merge sort = Vantajoso quando d<log(n)

52 Bucket sort (Ordenação por balde) Possui tempo linear, desde que os valores a serem ordenados sejam distribuídos uniformemente sobre o intervalo [0, 1). Divide o intervalo [0, 1) em n sub-intervalos iguais, denominados buckets (baldes), e então distribui os n números reais nos n buckets. Como a entrada é composta por dados distribuídos uniformemente, espera-se que cada balde possua, ao final deste processo, um número equivalente de elementos (usualmente 1).

Bucket sort (Ordenação por balde) 53

54 Bucket sort (Ordenação por balde) Cada elemento A[i] satisfaz 0 A[i] < 1. Para obter o resultado, basta ordenar os elementos em cada bucket e então apresentá-los em ordem Simulação: https://www.cs.usfca.edu/~galles/visualization/bucketsort.html

55 Desafio 01 opcional 0,5 na média final da disciplina Envio até 09/06 (23h50-Tidia) Implemente o algoritmo de ordenação RadixSort. Seu programa não deve impor limitações sobre o número de elementos (n), nem o número de digitos (d), nem o valor de k (os números podem estar em qualquer base, por exemplo, octal, hexadecimal, etc). Apresentação livre de exemplos (quanto mais completo melhor). Apenas 2 arquivos que deverá submeter pelo Tidia: Código fonte em C/C++ (RA_desafio1.c/cpp) Um PDF contendo uma simples descrição do programa (não maior a 4 páginas). O formato desse relatório é livre.