Análise e Síntese de Algoritmos. Revisão CLRS, Cap. 7-10

Documentos relacionados
Análise e Síntese de Algoritmos

Análise e Síntese de Algoritmos. Revisão CLRS, Cap. 4, 6

Ordenação em Tempo Linear

Algoritmos de Ordenação: Tempo Linear

Ordenação em tempo linear

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

Análise de Algoritmos

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

Análise de Algoritmos Algoritmos de Ordenação

Tópico 5 Algoritmos de Ordenação. Parte I - métodos de ordenação: inserção, mergesort, heapsort e quicksort.

Algoritmos de ordenação Quicksort

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

Aula 03: Análise de algoritmos melhor caso, pior caso e caso médio

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

Análise de algoritmos

Estruturas de Dados 2

Algoritmos de ordenação Heapsort

Ordenação Interna. Prof. Jonas Potros

Análise de algoritmos

AULA 13. Algoritmos p.526/582

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

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

QuickSort CI/2015. Análise e Projeto de Algoritmos. - Prof. Lucídio A. F. Cabral

Projeto e Análise de Algoritmos

Algoritmos de Ordenação

Algoritmos e Estruturas de Dados LEE 2013/2014. popular devido à facilidade de implementação e eficiência

Aula 13: Ordenação - Heapsort. Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP

Filas de prioridade. Marcelo K. Albertini. 3 de Dezembro de 2013

Análise de algoritmos

Projeto e Análise de Algoritmos

Filas de prioridade. Marcelo K. Albertini. 27 de Novembro de 2014

BCC202 - Estrutura de Dados I

Listas (Parte 1) Túlio Toffolo BCC202 Aula 09 Algoritmos e Estruturas de Dados I

Algoritmos e Estruturas de Dados 2006/2007

Análise de Complexidade para algoritmos iterativos e recursivos

Pedro Ribeiro 2014/2015

Carlos Eduardo Batista. Centro de Informática - UFPB

HeapSort Filas de Prioridade Heap. David Menotti Algoritmos e Estruturas de Dados II DInf UFPR

Bubble Sort. Tempo total O(n 2 )

Quicksort [1] Quicksort [2]

1. O que é a eficiência assintótica de um algoritmo. Explique com suas palavras.

Ordenação de Dados (IV) MergeSort

Edital de Seleção 023/2018 PROPESP/UFAM. Prova de Conhecimento. Caderno de Questões

Ordenação e Pesquisa

Edital de Seleção 016/2018 PROPESP/UFAM. Prova de Conhecimento. Caderno de Questões

ALGORITMOS E ESTRUTURAS DE DADOS CES-11 Prof. Paulo André Castro Sala 110 Prédio da Computação IECE - ITA

Edital de Seleção 024/2017 PROPESP/UFAM. Prova de Conhecimento. Caderno de Questões

Ordenação. Prof. Jonas Potros

ESTRUTURAS DE DADOS E ALGORITMOS ALGORITMOS DE ORDENAÇÃO POR COMPARAÇÃO - I

Divisão e conquista. Eficiência de divisão e conquista

Algoritmos e Estrutura de Dados

5. Algoritmos de Ordenação

AED2 - Aula 11 Problema da separação e quicksort

Análise e Complexidade de Algoritmos

Marcelo Keese Albertini Faculdade de Computação Universidade Federal de Uberlândia

Estrutura de Dados. Algoritmos de Ordenação. Prof. Othon M. N. Batista Mestre em Informática

Edital de Seleção 032/2016 PROPESP/UFAM. Prova de Conhecimento. Caderno de Questões

Análise e Síntese de Algoritmos. Programação Dinâmica CLRS, Cap. 15

Ordenação: Heapsort. Algoritmos e Estruturas de Dados II

Edital de Seleção 053/2016 PROPESP/UFAM. Prova de Conhecimento. Caderno de Questões

Complexidade de algoritmos Notação Big-O

Divisão e conquista. Há divisão quando o algoritmo tem pelo menos 2 chamadas recursivas no corpo

ESTRUTURAS DE DADOS E ALGORITMOS HEAP BINÁRIA

Filas de prioridade. Algoritmos e Estruturas de Dados AED 2005/2006 AEDA 2009/2010

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

Ordenação: MergeSort. Prof. Túlio Toffolo BCC202 Aula 14 Algoritmos e Estruturas de Dados I

Carlos Eduardo Batista. Centro de Informática - UFPB

Grupo 2 - Implementação de uma Classe Simples

UNIVERSIDADE DA BEIRA INTERIOR

Divisão-e-Conquista ( ) CAL ( ) MIEIC/FEUP. ./rr (1) Técnicas de Concepção de Algoritmos

Divisão e Conquista. Fernando Lobo. Algoritmos e Estrutura de Dados II. É uma técnica para resolver problemas (veremos outras técnicas mais adiante).

Aula T19 BCC202 Pesquisa (Parte 1) Pesquisa Binária. Túlio Toffolo

MAC121 ALGORITMOS E ESTRUTURAS DE DADOS I 2O. SEMESTRE DE 2017

MÉTODOS DE CLASSIFICAÇÃO EM MEMÓRIA PRIMÁRIA. George Gomes Cabral

Métodos de Ordenação Parte 4

Universidade Federal do ABC Avaliação Disciplina Turma Professor Data Instruções para a prova (leia antes de começar): SelectionSort selectonsortrec

QUESTÕES DE PROVAS ANTIGAS

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

Algoritmos e Estruturas de Dados 2005/2006

DAINF - Departamento de Informática

CES-11. Algoritmos e Estruturas de Dados. Representação. A estrutura heap. Heap é uma árvore binária com duas propriedades:

Ordenação. Insertion Sort

UNIVERSIDADE FEDERAL DO PIAUÍ COLÉGIO TÉCNICO DE TERESINA-TÉCNICO EM INFORMÁTICA DISCIPLINA: ESTRUTURA DE DADOS PROFESSOR: Valdemir Junior

Algoritmos de Ordenação em LISP

Pesquisa: operação elementar

Análise e Síntese de Algoritmos

QuickSort. Algoritmos e Estruturas de Dados Verão Cátia Vaz 1

Universidade Estadual de Mato Grosso do Sul Bacharelado em Ciência da Computação Algoritmos e Estruturas de Dados II Prof. Fabrício Sérgio de Paula

UNIVERSIDADE FEDERAL DO ESPÍRITO SANTO CENTRO UNIVERSITÁRIO NORTE DO ESPÍRITO SANTO

Estruturas de Dados 2

Ordenação: HeapSort. Prof. Túlio Toffolo BCC202 Aula 17 Algoritmos e Estruturas de Dados I

Ordenação em Tempo Linear

Mergesort. Aula 04. Algoritmo Mergesort. Divisão e Conquista. Divisão e Conquista- MergeSort

Algoritmos Eficientes de Ordenação

Ordenação: QuickSort. Prof. Túlio Toffolo BCC202 Aula 15 Algoritmos e Estruturas de Dados I

Estrutura de Dados. Diego Silveira Costa Nascimento

Busca Binária. Aula 05. Busca em um vetor ordenado. Análise do Busca Binária. Equações com Recorrência

Heap Sort. Algoritmos e Estruturas de Dados Verão Cátia Vaz 1

Transcrição:

Análise e Síntese de Algoritmos Revisão CLRS, Cap. 7-10

Contexto Revisão Algoritmos e complexidade Notação Fundamentos: somatórios, recorrências, etc. Exemplos de algoritmos Ordenação Procura Selecção 2006/2007 Análise e Síntese de Algoritmos 2

Resumo Ordenação QuickSort; CountingSort; RadixSort Procura & Selecção Pesquisa linear e pesquisa binária Tópicos sobre selecção Estruturas de dados elementares Exemplos 2006/2007 Análise e Síntese de Algoritmos 3

Ordenação: O Algoritmo QuickSort QuickSort(A, p, r) if p < r q = Partition(A, p, r) QuickSort(A, p, q-1) QuickSort(A, q+1, r) Exemplo Partition(A, p, r) x = A[r] i = p - 1 for j = p to r-1 do if A[j] x then i = i + 1 swap(a[i], A[j]) swap(a[i+1], A[j]) return i+1 2006/2007 Análise e Síntese de Algoritmos 4

Comparação com MergeSort QuickSort Array não necessariamente dividido em 2 partes iguais Constantes menores Pior caso (array ordenado): O(n 2 ) MergeSort Array dividido em 2 partes iguais Necessário fazer Merge Constantes maiores Pior caso: O(n lg n) Na prática: QuickSort (aleatorizado) mais rápido 2006/2007 Análise e Síntese de Algoritmos 5

Ordenação: O Algoritmo CountingSort Chaves: inteiros de 1 a k Contar ocorrências de cada chave, e inserir na região respectiva do array Complexidade: O(n + k) = O(n), se k = O(n) CountingSort(A) for i = 1 to k C[i] = 0 for j = 1 to length[a] C[A[j]]++ for I = 2 to k C[I] = C[I] + C[I-1] for j = length[a] downto 1 B[C[A[j]]] = A[j] C[A[j]]-- 2006/2007 Análise e Síntese de Algoritmos 6

Ordenação: O Algoritmo RadixSort RadixSort(A, d) for i = 1 to d Ordenar A no dígito i com algoritmo de ordenação estável Se utilizar CountingSort Complexidade: O(d(n + k)) Não ordena no lugar, i.e. requer memória adicional... 2006/2007 Análise e Síntese de Algoritmos 7

Procura: Pesquisa Linear Procurar elemento em array (ou lista) Array/lista pode não estar ordenada Complexidade: O(n) LinearSearch(A, key) for i = 1 to length[a] if A[i] = key return i return 0 2006/2007 Análise e Síntese de Algoritmos 8

Procura: Pesquisa Binária Procurar elemento em array Array tem que estar ordenado Complexidade: O(lg n) BinarySearch(A, l, r, key) if l <= r m = (l + r) / 2 if A[m] = key return m if A[m] < key return BinarySearch(A, m+1, r, key) else if A[m] > key return BinarySearch(A, l, m-1, key) return 0 2006/2007 Análise e Síntese de Algoritmos 9

Encontrar Máximo e Mínimo Comparações para encontrar valor mínimo em array? n-1, valor óptimo Comparações para encontrar valor máximo em array? n-1, valor óptimo Comparações para encontrar conjuntamente valor máximo e mínimo em array? 2n-2, se selecção é realizada independentemente 3 n / 2, se elementos analisados aos pares, e max e min seleccionados conjuntamente 2006/2007 Análise e Síntese de Algoritmos 10

Estruturas de Dados Elementares Amontoados Pilhas, Filas Listas Ligadas Árvores binárias Árvores equilibradas 2006/2007 Análise e Síntese de Algoritmos 11

Um Problema Implementar uma fila (FIFO) com uma fila de prioridade?? Primeiro elemento inserido é sempre o primeiro retirado Operações: queue(value) & dequeue() 2006/2007 Análise e Síntese de Algoritmos 12

Solução Topo do amontoado é o valor mínimo Manter contador do número total de elementos inseridos Cada elemento inserido no amontoado é caracterizado pelo número de elementos inseridos antes desse elemento Push corresponde a insert() O(lg n) Pop corresponde a extractmin() O(lg n) 2006/2007 Análise e Síntese de Algoritmos 13

Operações sobre Amontoados Min & ExtractMin Complexidade: Min: O(1) ExtractMin: O(lg n) Min(A) return A[1] ExtractMin(A) min = A[1] A[1] = A[heap_size[A]] heap_size[a]-- SiftDown(A, 1) return min 2006/2007 Análise e Síntese de Algoritmos 14

Operações sobre Amontoados Insert & SiftUp Complexidade: SiftUp: O(lg n) Insert: O(lg n) Insert(A, key) heap_size[a]++ i = heap_size[a] A[i] = key SiftUp(A, i) SiftUp(A, i) j = Parent(i) if j > 0 and A[j] < A[i] swap(a[i], A[j]) SiftUp(A, j) 2006/2007 Análise e Síntese de Algoritmos 15

Outro Problema... Matriz (nxn) Cada entrada é 0 ou 1 Cada linha monotonamente crescente Cada coluna monotonamente crescente Objectivo: Encontrar algoritmo eficiente para contar número de 0 s e de 1 s na matriz 2006/2007 Análise e Síntese de Algoritmos 16

Revisão Exemplos de Algoritmos & Estruturas de Dados Ordenação Procura & Selecção Estruturas de dados elementares 2006/2007 Análise e Síntese de Algoritmos 17