Estruturas de Dados 2
|
|
- Stefany Padilha Caetano
- 7 Há anos
- Visualizações:
Transcrição
1 Estruturas de Dados 2 Técnicas de Projeto de Algoritmos Dividir e Conquistar IF64C Estruturas de Dados 2 Engenharia da Computação Prof. João Alberto Fabro - Slide 1/83
2 Projeto de Algoritmos por Divisão e Conquista Introdução Busca Recursiva Ordenação: InsertionSort, MergeSort, HeapSort e QuickSort Resumo IF64C Estruturas de Dados 2 Engenharia da Computação Prof. João Alberto Fabro - Slide 2/83
3 Introdução Dividir e Conquistar é uma técnica de projeto de algoritmos que consiste em resolver um problema a partir da solução de sub-problemas menores do mesmo tipo. IF64C Estruturas de Dados 2 Engenharia da Computação Prof. João Alberto Fabro - Slide 3/83
4 Introdução Dividir e Conquistar é uma técnica de projeto de algoritmos que consiste em resolver um problema a partir da solução de sub-problemas menores do mesmo tipo. Se os sub-problemas obtidos após a divisão ainda são muito grandes para a solução direta, aplica-se novamente a divisão, até ter problemas pequenos o suficiente para terem solução trivial ou direta. IF64C Estruturas de Dados 2 Engenharia da Computação Prof. João Alberto Fabro - Slide 4/83
5 Introdução Após o processo de divisão em sub-problemas menores, e sua conquista, basta combinar os resultados dos sub-problemas menores, para obter a solução para o problema como um todo. IF64C Estruturas de Dados 2 Engenharia da Computação Prof. João Alberto Fabro - Slide 5/83
6 Passos para divisão e conquista : 1. Divisão: propor uma forma de dividir o problema original em sub-problemas iguais, porém menores (recursivamente); 2. Conquista: ao se obter sub-problemas pequenos o suficiente, resolvê-los diretamente; 3. Combinação: combinar as soluções de forma a obter a solução ao problema original. IF64C Estruturas de Dados 2 Engenharia da Computação Prof. João Alberto Fabro - Slide 6/83
7 Vantagens Solução direta do ponto de vista da recursividade; Elegância; Usualmente produz algoritmos eficientes (complexidade logarítmica!!!) Desvantagem Recursão!!!! IF64C Estruturas de Dados 2 Engenharia da Computação Prof. João Alberto Fabro - Slide 7/83
8 Como aplicar? Processo Indutivo ao projeto de algoritmos(recursão) Aplicável sempre que for possível obter subproblemas menores independentes entre si Procurar uma divisão igualitária de um problema em diversos sub-problemas... Deve ser possível (e de preferência simples e rápido) combinar os resultados dos sub-problemas... IF64C Estruturas de Dados 2 Engenharia da Computação Prof. João Alberto Fabro - Slide 8/83
9 Justificativa Esta técnica pode ser empregada em diversas situações comuns porém importantes: Somar N números; Encontrar um elemento em um vetor ordenado; IF64C Estruturas de Dados 2 Engenharia da Computação Prof. João Alberto Fabro - Slide 9/83
10 Exemplo da aplicação da técnica: Como somar N números, a 1, a 2,..., a n? Se n é 1, a soma é o próprio a 1. Se n>1, podemos dividir o problema em dois subproblemas menores: 1.Somar os números de a 1 até a n/2 ; 2.Somar os número de a n/2 até a n ; 3.Somar os resultados!!! IF64C Estruturas de Dados 2 Engenharia da Computação Prof. João Alberto Fabro - Slide 10/83
11 Exemplo da aplicação da técnica: Como somar N números, a 1, a 2,..., a n? Eficiência???? IF64C Estruturas de Dados 2 Engenharia da Computação Prof. João Alberto Fabro - Slide 11/83
12 Exemplo da aplicação da técnica: Como somar N números, a 1, a 2,..., a n? Eficiência???? O(n)...(Melhor que uma abordagem exaustiva????) IF64C Estruturas de Dados 2 Engenharia da Computação Prof. João Alberto Fabro - Slide 12/83
13 Exemplo da aplicação da técnica: Como somar N números, a 1, a 2,..., a n? Eficiência???? O(n)...(Melhor que uma abordagem exaustiva????) Claramente NÃO!!!! IF64C Estruturas de Dados 2 Engenharia da Computação Prof. João Alberto Fabro - Slide 13/83
14 Exemplo da aplicação da técnica: Como somar N números, a 1, a 2,..., a n? Eficiência???? O(n)...(Melhor que uma abordagem exaustiva????) Claramente NÃO!!!! Portanto, aplicar Divisão e Conquista não garante, por si só, a obtenção de algoritmos eficientes! IF64C Estruturas de Dados 2 Engenharia da Computação Prof. João Alberto Fabro - Slide 14/83
15 OUTRO exemplo: Buscar um elemento! Como encontrar o elemento em um vetor de tamanho N: a 1, a 2,..., a n? Se n é 1, e o elemento a 1 é o procurado, achou, senão não achou! Se n>1, podemos dividir o problema em dois subproblemas menores: 1.Encontrar o elemento no vetor de a 1 até a n/2 2.Encontrar o elemento no vetor de a n/2 até a n IF64C Estruturas de Dados 2 Engenharia da Computação Prof. João Alberto Fabro - Slide 15/83
16 Mas esta técnica não consegue gerar resultados melhores que a Força Bruta??? IF64C Estruturas de Dados 2 Engenharia da Computação Prof. João Alberto Fabro - Slide 16/83
17 Mas esta técnica não consegue gerar resultados melhores que a Força Bruta??? Pode sim... IF64C Estruturas de Dados 2 Engenharia da Computação Prof. João Alberto Fabro - Slide 17/83
18 Mas esta técnica não consegue gerar resultados melhores que a Força Bruta??? Pode sim... Basta aplicá-la adequadamente...! IF64C Estruturas de Dados 2 Engenharia da Computação Prof. João Alberto Fabro - Slide 18/83
19 Mas esta técnica não consegue gerar resultados melhores que a Força Bruta??? Pode sim... Basta aplicá-la adequadamente...! Exemplo de uso adequado: Busca Binária. IF64C Estruturas de Dados 2 Engenharia da Computação Prof. João Alberto Fabro - Slide 19/83
20 Busca Binária: Dividir e Conquistar Encontrar um determinado elemento (chave) em um vetor ordenado de tamanho N: a 1, a 2,..., a n?: Verificar se a chave está na posição a x = a n/2 : Se estiver, encontrou! Se não estiver, realizar a busca binária nos vetores: a 1 até a x-1,se chave < a x, ou em a x+1 até a n se chave > a x. IF64C Estruturas de Dados 2 Engenharia da Computação Prof. João Alberto Fabro - Slide 20/83
21 Busca Binária: Exemplo: Encontrar o número 12 na lista: IF64C Estruturas de Dados 2 Engenharia da Computação Prof. João Alberto Fabro - Slide 21/83
22 Busca Binária: Exemplo: Encontrar o número 12 na lista: (está na posição X=n/2?)Ñ! IF64C Estruturas de Dados 2 Engenharia da Computação Prof. João Alberto Fabro - Slide 22/83
23 Busca Binária: Exemplo: Encontrar o número 12 na lista: (está na posição X=n/2?)Ñ! (está na posição X=n/2?)S! IF64C Estruturas de Dados 2 Engenharia da Computação Prof. João Alberto Fabro - Slide 23/83
24 Busca Binária: Tá, mas e daí???? Dividir e Conquistar Bem, a eficiência deste algoritmo é Θ(lg n)... Muito mais eficiente que a abordagem Força Bruta......pena que o vetor precisa estar ordenado......mas podemos aplicar a técnica de Divisão e Conquista para ordenar vetores também!!!!! IF64C Estruturas de Dados 2 Engenharia da Computação Prof. João Alberto Fabro - Slide 24/83
25 Ordenação com Divisão e Conquista: Problema: Ordenar um vetor de tamanho N: a 1, a 2,..., a n Um vetor de um elemento já está ordenado! Um vetor de tamanho n pode ser ordenado pela intercalação de dois sub-vetores: 1.Um vetor de a 1 até a n/2 2.Outro vetor de a n/2 até a n IF64C Estruturas de Dados 2 Engenharia da Computação Prof. João Alberto Fabro - Slide 25/83
26 Ordenação com Divisão e Conquista: Problema: Ordenar um vetor de tamanho N: a 1, a 2,..., a n Um vetor de um elemento já está ordenado! Um vetor de tamanho n pode ser ordenado pela intercalação de dois sub-vetores: 1.Um vetor de a 1 até a n/2 2.Outro vetor de a n/2 até a n Esta maneira de ordenar dá origem ao algoritmo recursivo de ordenação MergeSort!!! IF64C Estruturas de Dados 2 Engenharia da Computação Prof. João Alberto Fabro - Slide 26/83
27 Ordenação com Divisão e Conquista: Problema: Ordenar um vetor de tamanho N: a 1, a 2,..., a n Um vetor de um elemento já está ordenado! Um vetor de tamanho n pode ser ordenado pela intercalação de dois sub-vetores: 1.Um vetor de a 1 até a n/2 2.Outro vetor de a n/2 até a n Esta maneira de ordenar dá origem ao algoritmo recursivo de ordenação MergeSort!!! Isto é projetar um algoritmo por divisão e conquista!!! IF64C Estruturas de Dados 2 Engenharia da Computação Prof. João Alberto Fabro - Slide 27/83
28 MergeSort: Se a função intercala for eficiente=o(n) Detalhe: para conseguir implementar a intercalação de forma eficiente, é necessário um vetor auxiliar, o que aumenta a memória necessária para o algoritmo...não é uma ordenação in-place,como a Ordenação por Seleção T(n) = 2T(n/2) + O(n) Logo, Mergesort é Θ(n lg n) (Master) IF64C Estruturas de Dados 2 Engenharia da Computação Prof. João Alberto Fabro - Slide 28/83
29 MergeSort(A, e, d): : Pseudo-Código IF64C Estruturas de Dados 2 Engenharia da Computação Prof. João Alberto Fabro - Slide 29/83
30 Intercala(A, e, d): Pseudo-Código IF64C Estruturas de Dados 2 Engenharia da Computação Prof. João Alberto Fabro - Slide 30/83
31 Aplicando Dividir e Conquistar de outra forma: Seja S um conjunto de n 2 inteiros e x um elemento qualquer de S. IF64C Estruturas de Dados 2 Engenharia da Computação Prof. João Alberto Fabro - Slide 31/83
32 Aplicando Dividir e Conquistar de outra forma: Seja S um conjunto de n 2 inteiros e x um elemento qualquer de S. Sejam S1 e S2 os subconjuntos de {S x} dos elementos menores ou iguais a x e maiores que x, respectivamente. IF64C Estruturas de Dados 2 Engenharia da Computação Prof. João Alberto Fabro - Slide 32/83
33 Aplicando Dividir e Conquistar de outra forma: Seja S um conjunto de n 2 inteiros e x um elemento qualquer de S. Sejam S1 e S2 os subconjuntos de {S x} dos elementos menores ou iguais a x e maiores que x, respectivamente. Ambos S1 e S2 possuem menos de n elementos. Por hipótese de indução, sabemos ordenar os conjuntos S1 e S2. IF64C Estruturas de Dados 2 Engenharia da Computação Prof. João Alberto Fabro - Slide 33/83
34 Aplicando Dividir e Conquistar de outra forma: Seja S um conjunto de n 2 inteiros e x um elemento qualquer de S. Sejam S1 e S2 os subconjuntos de {S x} dos elementos menores ou iguais a x e maiores que x, respectivamente. Ambos S1 e S2 possuem menos de n elementos. Por hipótese de indução, sabemos ordenar os conjuntos S1 e S2. Podemos obter S ordenado concatenando S1 ordenado, x e S2 ordenado. IF64C Estruturas de Dados 2 Engenharia da Computação Prof. João Alberto Fabro - Slide 34/83
35 Aplicando Dividir e Conquistar de outra forma: Seja S um conjunto de n 2 inteiros e x um elemento qualquer de S. Sejam S1 e S2 os subconjuntos de {S x} dos elementos menores ou iguais a x e maiores que x, respectivamente. Ambos S1 e S2 possuem menos de n elementos. Por hipótese de indução, sabemos ordenar os conjuntos S1 e S2. Podemos obter S ordenado concatenando S1 ordenado, x e S2 ordenado. Esta abordagem dá origem ao algoritmo QuickSort!!! IF64C Estruturas de Dados 2 Engenharia da Computação Prof. João Alberto Fabro - Slide 35/83
36 Em contraste ao Mergesort, no Quicksort é a operação de divisão que é mais custosa: depois de escolhermos o pivô(x), temos que separar os elementos do vetor maiores que o x dos menores ou iguais a x. IF64C Estruturas de Dados 2 Engenharia da Computação Prof. João Alberto Fabro - Slide 36/83
37 Em contraste ao Mergesort, no Quicksort é a operação de divisão que é mais custosa: depois de escolhermos o pivô(x), temos que separar os elementos do vetor maiores que o x dos menores ou iguais a x. Conseguimos fazer essa divisão com (n) operações: basta varrer o vetor com dois apontadores, um varrendo da direita para a esquerda e outro da esquerda para a direita, em busca de elementos situados na parte errada do vetor, e trocar um par de elementos de lugar quando encontrado. IF64C Estruturas de Dados 2 Engenharia da Computação Prof. João Alberto Fabro - Slide 37/83
38 Em contraste ao Mergesort, no Quicksort é a operação de divisão que é mais custosa: depois de escolhermos o pivô(x), temos que separar os elementos do vetor maiores que o x dos menores ou iguais a x. Conseguimos fazer essa divisão com (n) operações: basta varrer o vetor com dois apontadores, um varrendo da direita para a esquerda e outro da esquerda para a direita, em busca de elementos situados na parte errada do vetor, e trocar um par de elementos de lugar quando encontrado. Após essa etapa basta ordenarmos os dois trechos do vetor recursivamente para obtermos o vetor ordenado, ou seja, a conquista é imediata. IF64C Estruturas de Dados 2 Engenharia da Computação Prof. João Alberto Fabro - Slide 38/83
39 Quicksort(A,e,d) - Pseudo-Código: IF64C Estruturas de Dados 2 Engenharia da Computação Prof. João Alberto Fabro - Slide 39/83
40 Quicksort(A,e,d) - Pseudo-Código(cont): IF64C Estruturas de Dados 2 Engenharia da Computação Prof. João Alberto Fabro - Slide 40/83
41 Quicksort- Idéia Base 1. Selecionar um elemento para ser o pivô 2. Rearranjar a lista de modo que todos os elementos nas posições a esquerda do pivô sejam menores ou iguais a ele, e aqueles a direita do pivô sejam maiores que ele. 3. Permutar o pivô com o último elemento da primeira sub-lista(menores ou iguais). Agora o pivô está em sua posição final. 4. Ordenar as duas sub-listas. IF64C Estruturas de Dados 2 Engenharia da Computação Prof. João Alberto Fabro - Slide 41/83
42 QuickSort Exemplo partition partition partition partition partition IF64C Estruturas de Dados 2 Engenharia da Computação Prof. João Alberto Fabro - Slide 42/83
43 Quicksort Análise da Complexidade Quantas comparações e quantas trocas o algoritmo Quicksort executa no pior caso? IF64C Estruturas de Dados 2 Engenharia da Computação Prof. João Alberto Fabro - Slide 43/83
44 Quicksort Análise da Complexidade Quantas comparações e quantas trocas o algoritmo Quicksort executa no pior caso? Certamente a operação de divisão tem complexidade (n), mas o tamanho dos dois subproblemas depende do pivô escolhido. IF64C Estruturas de Dados 2 Engenharia da Computação Prof. João Alberto Fabro - Slide 44/83
45 Quicksort Análise da Complexidade Quantas comparações e quantas trocas o algoritmo Quicksort executa no pior caso? Certamente a operação de divisão tem complexidade (n), mas o tamanho dos dois subproblemas depende do pivô escolhido. No pior caso, cada divisão sucessiva do Quicksort separa um único elemento dos demais, recaindo na recorrência: T(n) = 0, se n = 1 T(n) = T(n 1) + n, se n > 1, IF64C Estruturas de Dados 2 Engenharia da Computação Prof. João Alberto Fabro - Slide 45/83
46 Quicksort Análise da Complexidade Quantas comparações e quantas trocas o algoritmo Quicksort executa no pior caso? Certamente a operação de divisão tem complexidade (n), mas o tamanho dos dois subproblemas depende do pivô escolhido. No pior caso, cada divisão sucessiva do Quicksort separa um único elemento dos demais, recaindo na recorrência: T(n) = 0, se n = 1 T(n) = T(n 1) + n, se n > 1, Portanto, (n2 ) comparações e trocas são executadas no pior caso!!!!!! IF64C Estruturas de Dados 2 Engenharia da Computação Prof. João Alberto Fabro - Slide 46/83
47 Mas o Quicksort não era o algoritmo de ordenação mais eficiente???? IF64C Estruturas de Dados 2 Engenharia da Computação Prof. João Alberto Fabro - Slide 47/83
48 Mas o Quicksort não era o algoritmo de ordenação mais eficiente???? Então, o algoritmo Quicksort é assintoticamente menos eficiente que o Mergesort no pior caso. IF64C Estruturas de Dados 2 Engenharia da Computação Prof. João Alberto Fabro - Slide 48/83
49 Mas o Quicksort não era o algoritmo de ordenação mais eficiente???? Então, o algoritmo Quicksort é assintoticamente menos eficiente que o Mergesort no pior caso. Entretanto, no caso médio, o Quicksort efetua (n log n) comparações e trocas. IF64C Estruturas de Dados 2 Engenharia da Computação Prof. João Alberto Fabro - Slide 49/83
50 Mas o Quicksort não era o algoritmo de ordenação mais eficiente???? Então, o algoritmo Quicksort é assintoticamente menos eficiente que o Mergesort no pior caso. Entretanto, no caso médio, o Quicksort efetua (n log n) comparações e trocas. Assim, na prática, o Quicksort é bastante eficiente, com uma vantagem adicional em relação ao Mergesort: é in place, isto é, não utiliza um vetor auxiliar. IF64C Estruturas de Dados 2 Engenharia da Computação Prof. João Alberto Fabro - Slide 50/83
51 Considerando que o pior caso não ocorre com freqüência, pois usualmente, pegando um pivô aleatório, é muito difícil escolher sempre um pivô que divida o vetor de tamanho n em dois vetores, um dos menores e outro dos maiores que o pivô, com tamanhos (n-1) e 1... IF64C Estruturas de Dados 2 Engenharia da Computação Prof. João Alberto Fabro - Slide 51/83
52 Considerando que o pior caso não ocorre com freqüência, pois usualmente, pegando um pivô aleatório, é muito difícil escolher sempre um pivô que divida o vetor de tamanho n em dois vetores, um dos menores e outro dos maiores que o pivô, com tamanhos (n-1) e 1... Desta forma, supondo uma divisão do vetor de tamanho n em dois sub-vetores (n/2), e considerando o tempo de separação entre os maiores e os menores que o pivô sendo O(n)... IF64C Estruturas de Dados 2 Engenharia da Computação Prof. João Alberto Fabro - Slide 52/83
53 Considerando que o pior caso não ocorre com freqüência, pois usualmente, pegando um pivô aleatório, é muito difícil escolher sempre um pivô que divida o vetor de tamanho n em dois vetores, um dos menores e outro dos maiores que o pivô, com tamanhos (n-1) e 1... Desta forma, supondo uma divisão do vetor de tamanho n em dois sub-vetores (n/2), e considerando o tempo de separação entre os maiores e os menores que o pivô sendo O(n)... O tempo médio T(n)=2T(n/2)+O(n) = O(n lg n) IF64C Estruturas de Dados 2 Engenharia da Computação Prof. João Alberto Fabro - Slide 53/83
54 Ordenação: Mas não há um algoritmo que seja eficiente em todos os casos, e in place ao mesmo tempo? IF64C Estruturas de Dados 2 Engenharia da Computação Prof. João Alberto Fabro - Slide 54/83
55 Ordenação: Mas não há um algoritmo que seja eficiente em todos os casos, e in place ao mesmo tempo? Vocês tinham que perguntar????? IF64C Estruturas de Dados 2 Engenharia da Computação Prof. João Alberto Fabro - Slide 55/83
56 Ordenação: Mas não há um algoritmo que seja eficiente em todos os casos, e in place ao mesmo tempo? Vocês tinham que perguntar????? Este algoritmo chama-se HeapSort. IF64C Estruturas de Dados 2 Engenharia da Computação Prof. João Alberto Fabro - Slide 56/83
57 Ordenação: Mas não há um algoritmo que seja eficiente em todos os casos, e in place ao mesmo tempo? Vocês tinham que perguntar????? Este algoritmo chama-se HeapSort. E é baseado numa estrutura de dados inteligente denominada Heap... implementa uma fila de prioridades... Podermos utilizá-la para fazer uma ordenação inplace e Θ(n lg n)!!!! (Mas o Quicksort ainda é mais rápido!!!!) IF64C Estruturas de Dados 2 Engenharia da Computação Prof. João Alberto Fabro - Slide 57/83
58 Ordenação por Heap(HeapSort): Tarefa: Implementar a estrutura de dados Heap para podermos utilizá-la para fazer uma ordenação in-place e Θ(n lg n)!!!! IF64C Estruturas de Dados 2 Engenharia da Computação Prof. João Alberto Fabro - Slide 58/83
59 Ordenação por Heap(HeapSort): Tarefa: Implementar a estrutura de dados Heap para podermos utilizá-la para fazer uma ordenação in-place e Θ(n lg n)!!!! Mas o que é um Heap??? IF64C Estruturas de Dados 2 Engenharia da Computação Prof. João Alberto Fabro - Slide 59/83
60 Ordenação por Heap(HeapSort): Tarefa: Implementar a estrutura de dados Heap para podermos utilizá-la para fazer uma ordenação in-place e Θ(n lg n)!!!! Mas o que é um Heap??? É uma simulação de uma árvore binária completa utilizando um vetor!!!! IF64C Estruturas de Dados 2 Engenharia da Computação Prof. João Alberto Fabro - Slide 60/83
61 Heap: Vetor que apresenta as seguintes características: Vetor A de tamanho N (lenght(a) = nº de nodos da árvore) A[1] = raiz da árvore binária (primeira posição do vetor) Para calcular a posição de qualquer nodo, utilizamos as funções PARENT, LEFT E RIGHT: PARENT(i) return i/2 LEFT(i) return 2i RIGHT(i) return 2i + 1 IF64C Estruturas de Dados 2 Engenharia da Computação Prof. João Alberto Fabro - Slide 61/83
62 Heap: (Cormen) IF64C Estruturas de Dados 2 Engenharia da Computação Prof. João Alberto Fabro - Slide 62/83
63 Heap: Característica que distingue um Heap de uma árvore binária : A[PARENT(i)] A[i] (Max-Heap) IF64C Estruturas de Dados 2 Engenharia da Computação Prof. João Alberto Fabro - Slide 63/83
64 Como utilizar um Heap para Ordenar???? O Heap permite que o elemento máximo do conjunto seja determinado e corretamente posicionado no vetor em tempo constante, trocando o primeiro elemento do heap com o último. O trecho restante do vetor (do índice 1 ao n 1), que pode ter deixado de ter a estrutura de heap, volte a tê-la com número de trocas de elementos proporcional à altura da árvore. O algoritmo Heapsort consiste então da construção de um heap com os elementos a serem ordenados, seguida de sucessivas trocas do primeiro com o último elemento e rearranjos do heap. IF64C Estruturas de Dados 2 Engenharia da Computação Prof. João Alberto Fabro - Slide 64/83
65 HeapSort(A, n) - Pseudo-Código: IF64C Estruturas de Dados 2 Engenharia da Computação Prof. João Alberto Fabro - Slide 65/83
66 AjustaHeap(A, i, n) - Pseudo-Código: IF64C Estruturas de Dados 2 Engenharia da Computação Prof. João Alberto Fabro - Slide 66/83
67 Exemplo do Funcionamento de AjustaHeap(A,2,10): IF64C Estruturas de Dados 2 Engenharia da Computação Prof. João Alberto Fabro - Slide 67/83
68 Exemplo do Funcionamento de AjustaHeap(A,2,10): IF64C Estruturas de Dados 2 Engenharia da Computação Prof. João Alberto Fabro - Slide 68/83
69 Exemplo do Funcionamento de AjustaHeap(A,2,10): IF64C Estruturas de Dados 2 Engenharia da Computação Prof. João Alberto Fabro - Slide 69/83
70 Complexidade do HeapSort: Quantas comparações e quantas trocas são executadas no pior caso na etapa de ordenação do algoritmo Heapsort? No pior caso, a função AjustaHeap efetua (h) comparações e trocas, onde h é a altura do heap que contém os elementos que resta ordenar. Como o heap representa uma árvore binária completa, então h Θ(log i ), onde i é o número de elementos do heap. IF64C Estruturas de Dados 2 Engenharia da Computação Prof. João Alberto Fabro - Slide 70/83
71 Complexidade do HeapSort: Logo, a complexidade da etapa de ordenação do Heapsort é: Portanto, no pior caso, a etapa de ordenação efetua O(n log n) comparações e trocas! Mas e a construção do Heap???? IF64C Estruturas de Dados 2 Engenharia da Computação Prof. João Alberto Fabro - Slide 71/83
72 ConstroiHeap()\ Se o trecho de 1 a i do vetor tem estrutura de Heap, é fácil adicionar a folha i + 1 ao Heap e em seguida rearranjá-lo,garantindo que o trecho de 1 a i + 1 tem estrutura de Heap. Esta é a abordagem top-down para construção do Heap. IF64C Estruturas de Dados 2 Engenharia da Computação Prof. João Alberto Fabro - Slide 72/83
73 ConstroiHeap(A, n) Pseudo-Código (Top-Down): IF64C Estruturas de Dados 2 Engenharia da Computação Prof. João Alberto Fabro - Slide 73/83
74 ConstroiHeap(A, n) (Top-Down): Quantas comparações e quantas trocas são executadas no pior caso na construção do heap pela abordagem top-down? O rearranjo do heap na iteração i efetua (h) comparações e trocas no pior caso, onde h é a altura da árvore representada pelo trecho do Heap de 1 a i. Logo, h Θ(log i ). Portanto, o número de comparações e trocas efetuadas construção do Heap por esta abordagem é: IF64C Estruturas de Dados 2 Engenharia da Computação Prof. João Alberto Fabro - Slide 74/83
75 Então, o algoritmo Heapsort efetua ao todo Θ (n log n) comparações e trocas no pior caso. IF64C Estruturas de Dados 2 Engenharia da Computação Prof. João Alberto Fabro - Slide 75/83
76 Então, o algoritmo Heapsort efetua ao todo Θ (n log n) comparações e trocas no pior caso. (Bem...sendo mais preciso, executa 2 n log n comparações e trocas...) IF64C Estruturas de Dados 2 Engenharia da Computação Prof. João Alberto Fabro - Slide 76/83
77 Então, o algoritmo Heapsort efetua ao todo Θ (n log n) comparações e trocas no pior caso. (Bem...sendo mais preciso, executa 2 n log n comparações e trocas...) Mas existe maneira mais eficiente de construir um Heap? IF64C Estruturas de Dados 2 Engenharia da Computação Prof. João Alberto Fabro - Slide 77/83
78 Suponha que o trecho de i a n do vetor é tal que, para todo j, i j n, a subárvore de raiz j representada por esse trecho do vetor tem estrutura de heap. Note que, em particular, o trecho de n/2 + 1 a n do vetor satisfaz a propriedade, pois inclui apenas folhas da árvore binária de n elementos. Podemos então executar AjustaHeap(A, i 1, n), garantindo assim que o trecho de i 1 a n satisfaz a propriedade. Esta é a abordagem bottom-up para construção do Heap. IF64C Estruturas de Dados 2 Engenharia da Computação Prof. João Alberto Fabro - Slide 78/83
79 ConstroiHeap(A, n) Pseudo-Código Alternativo...: IF64C Estruturas de Dados 2 Engenharia da Computação Prof. João Alberto Fabro - Slide 79/83
80 ConstroiHeap(A, 6) Exemplo: A=[2,9,7,6,5,8] IF64C Estruturas de Dados 2 Engenharia da Computação Prof. João Alberto Fabro - Slide 80/83
81 ConstroiHeap Complexidade: Quantas comparações e quantas trocas são executadas no pior caso na construção do Heap pela abordagem bottom-up? O(n lo g n)! Mas é possível provar matematicamente que este pior caso é O(n)... utilizando o conhecimento sobre a altura de cada sub-árvore aonde se executa o AjustaHeap(). Ainda assim, o algoritmo HeapSort() continua sendo Θ(n log n) IF64C Estruturas de Dados 2 Engenharia da Computação Prof. João Alberto Fabro - Slide 81/83
82 Parte Prática: Implementar os algoritmos MergeSort, QuickSort e HeapSort apresentados, rodar uma batelada de testes para medir os tempos de execução e a quantidade de comparações executada por cada algoritmo, comparando os resultados! IF64C Estruturas de Dados 2 Engenharia da Computação Prof. João Alberto Fabro - Slide 82/83
83 - Conclusão: Estes slides são baseados no material disponibilizado pelos profs. Cid Carvalho de Souza e Cândida Nunes da Silva, da UNICAMP. Qualquer incorretude é, entretanto, de inteira responsabilidade do prof. João Alberto Fabro, da UTFPR. IF64C Estruturas de Dados 2 Engenharia da Computação Prof. João Alberto Fabro - Slide 83/83
84 Prós: Dividir e Conquistar - Prós e Contras: IF64C Estruturas de Dados 2 Engenharia da Computação Prof. João Alberto Fabro - Slide 84/83
85 Contras: Dividir e Conquistar - Prós e Contras: IF64C Estruturas de Dados 2 Engenharia da Computação Prof. João Alberto Fabro - Slide 85/83
Estruturas de Dados 2
Estruturas de Dados 2 Algoritmos de Ordenação em Tempo Linear IF64C Estruturas de Dados 2 Engenharia da Computação Prof. João Alberto Fabro - Slide 1/38 Algoritmos de Ordenação em Tempo Linear Limite Assintótico
Leia maisAlgoritmos de Ordenação: QuickSort
Algoritmos de Ordenação: QuickSort ACH2002 - Introdução à Ciência da Computação II Delano M. Beder Escola de Artes, Ciências e Humanidades (EACH) Universidade de São Paulo dbeder@usp.br 10/2008 Material
Leia maisAnálise e Complexidade de Algoritmos
Análise e Complexidade de Algoritmos Professor Ariel da Silva Dias Algoritmos Divisão e Conquista Construção incremental Resolver o problema para um sub-conjunto dos elementos de entrada; Então, adicionar
Leia maisTópico 5 Algoritmos de Ordenação. Parte I - métodos de ordenação: inserção, mergesort, heapsort e quicksort.
Tópico 5 Algoritmos de Ordenação Parte I - métodos de ordenação: inserção, mergesort, heapsort e quicksort. 1 Problema Computacional: Ordenação Problema computacional que surge em diversas situações. Definição:
Leia maisBCC202 - Estrutura de Dados I
BCC202 - Estrutura de Dados I Aula 13: Ordenação: MergeSort Reinaldo Fortes Universidade Federal de Ouro Preto, UFOP Departamento de Computação, DECOM Website: www.decom.ufop.br/reifortes Email: reifortes@iceb.ufop.br
Leia maisAlgoritmos de Ordenação
Algoritmos de Ordenação ACH2002 - Introdução à Ciência da Computação II Delano M. Beder Escola de Artes, Ciências e Humanidades (EACH) Universidade de São Paulo dbeder@usp.br 10/2008 Material baseado em
Leia maisEstruturas de Dados 2
Estruturas de Dados 2 Recorrências IF64C Estruturas de Dados 2 Engenharia da Computação Prof. João Alberto Fabro - Slide 1/31 Recorrências Análise da Eficiência de Algoritmos: Velocidade de Execução; Análise
Leia maisAnálise de algoritmos
Análise de algoritmos Introdução à Ciência de Computação II Baseados nos Slides do Prof. Dr. Thiago A. S. Pardo Análise de algoritmos Existem basicamente 2 formas de estimar o tempo de execução de programas
Leia maisAED2 - Aula 11 Problema da separação e quicksort
AED2 - Aula 11 Problema da separação e quicksort Projeto de algoritmos por divisão e conquista Dividir: o problema é dividido em subproblemas menores do mesmo tipo. Conquistar: os subproblemas são resolvidos
Leia maisOrdenação: MergeSort. Prof. Túlio Toffolo BCC202 Aula 14 Algoritmos e Estruturas de Dados I
Ordenação: MergeSort Prof. Túlio Toffolo http://www.toffolo.com.br BCC202 Aula 14 Algoritmos e Estruturas de Dados I DIVISÃO E CONQUISTA Motivação É preciso revolver um problema com uma entrada grande
Leia maisAnálise e Síntese de Algoritmos. Revisão CLRS, Cap. 4, 6
Análise e Síntese de Algoritmos Revisão CLRS, Cap. 4, 6 Contexto Revisão Algoritmos e complexidade Notação Fundamentos: somatórios, logaritmos, etc. Exemplos de algoritmos Ordenação Procura Selecção 2007/2008
Leia maisUniversidade 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 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 Tópicos Introdução Ordenação por bolha (bubble sort)
Leia maisProjeto e Análise de Algoritmos Aula 4: Dividir para Conquistar ou Divisão e Conquista ( )
Projeto e Análise de Algoritmos Aula 4: Dividir para Conquistar ou Divisão e Conquista (2.1-2.2) DECOM/UFOP 2013/1 5º. Período Anderson Almeida Ferreira Adaptado do material desenvolvido por Andréa Iabrudi
Leia maisALGORITMOS DE ORDENAÇÃO
ALGORITMOS DE ORDENAÇÃO Prof. André Backes Conceitos básicos 2 Ordenação Ato de colocar um conjunto de dados em uma determinada ordem predefinida Fora de ordem 5, 2, 1, 3, 4 Ordenado 1, 2, 3, 4, 5 OU 5,
Leia maisOrdenação de Dados (III) HeapSort
UFSC-CTC-INE INE53 - Estruturas de Dados Ordenação de Dados (III) Prof. Ronaldo S. Mello 00/ HeapSort HeapSort também é um método de seleção ordena através de sucessivas seleções do elemento correto a
Leia maisALGORITMOS E ESTRUTURAS DE DADOS CES-11 Prof. Paulo André Castro Sala 110 Prédio da Computação IECE - ITA
ALGORITMOS E ESTRUTURAS DE DADOS CES-11 Prof. Paulo André Castro pauloac@ita.br Sala 110 Prédio da Computação www.comp.ita.br/~pauloac IECE - ITA MÉTODOS MAIS EFICIENTES QUE O(N 2 ) Método Quicksort Método
Leia maisMétodos de Ordenação Parte 3
Estrutura de Dados II Métodos de Ordenação Parte 3 Prof a Márcio Bueno ed2tarde@marciobueno.com / ed2noite@marciobueno.com Material baseado nos materiais do Prof. Robson Lins Classificação em Memória Primária
Leia maisMergesort. Aula 04. Algoritmo Mergesort. Divisão e Conquista. Divisão e Conquista- MergeSort
Mergesort Aula 0 Divisão e Conquista- MergeSort Prof. Marco Aurélio Stefanes marco em dct.ufms.br www.dct.ufms.br/ marco Mergesort é um algoritmo de ordenação recursivo Ele recursivamente ordena as duas
Leia maisAlgoritmos de ordenação Quicksort
Algoritmos de ordenação Quicksort Sumário Introdução Descrição do quicksort Desempenho do quicksort Pior caso Melhor caso Particionamento balanceado Versão aleatória do quicksort Análise do quicksort Pior
Leia maisAula 19: Métodos eficientes de ordenação
Algoritmos e Estruturas de Dados I Aula 19: Métodos eficientes de ordenação (Merge sort e Quick sort) Prof. Jesús P. Mena-Chalco jesus.mena@ufabc.edu.br 1Q-2019 1 Intercalando 2 vetores ordenados 2 Intercalando
Leia maisAnálise de algoritmos
Análise de algoritmos Heapsort Conteúdo Introdução A estrutura de dados heap Definição Manutenção da propriedade de heap A construção de um heap O algoritmo heapsort Exercícios Referências Introdução Heapsort
Leia maisBusca Binária. Aula 05. Busca em um vetor ordenado. Análise do Busca Binária. Equações com Recorrência
Busca Binária Aula 05 Equações com Recorrência Prof. Marco Aurélio Stefanes marco em dct.ufms.br www.dct.ufms.br/ marco Idéia: Divisão e Conquista Busca_Binária(A[l...r],k) 1:if r < lthen 2: index = 1
Leia maisAlgoritimos e Estruturas de Dados III CIC210
Algoritimos e Estruturas de Dados III CIC210 Divisão e Conquista Haroldo Gambini Santos Concurso Universidade Federal de Ouro Preto - UFOP 3 de setembro de 2009 Haroldo Gambini Santos Divisão e Conquista
Leia maisDivisão e Conquista. Fernando Lobo. Algoritmos e Estrutura de Dados II. É uma técnica para resolver problemas (veremos outras técnicas mais adiante).
Divisão e Conquista Fernando Lobo Algoritmos e Estrutura de Dados II 1 / 27 Divisão e Conquista É uma técnica para resolver problemas (veremos outras técnicas mais adiante). Consiste em 3 passos: Dividir
Leia maisAlgoritmos de ordenação Heapsort
Algoritmos de ordenação Heapsort Sumário Introdução A estrutura de dados heap Definição Manutenção da propriedade de heap A construção de um heap O algoritmo heapsort Introdução Características do heapsort
Leia maisProjeto e Análise de Algoritmos
Projeto e Análise de Algoritmos A. G. Silva Baseado nos materiais de Souza, Silva, Lee, Rezende, Miyazawa Unicamp Ribeiro FCUP Manber, Introduction to Algorithms (989) Livro de abril de 08 Conteúdo programático
Leia maisUNIVERSIDADE FEDERAL DO ESPÍRITO SANTO CENTRO UNIVERSITÁRIO NORTE DO ESPÍRITO SANTO
Disciplina: Estrutura de Dados II Turma: 4EC/5CC Data: 13/11/15 Nota: Professor: Renato E. N. de Moraes Semestre: 2015-2 Valor: 0,0 pts Aluno: Lista de exercícios 04 1. O que é a eficiência assintótica
Leia maisAnálise de algoritmos
Análise de algoritmos Heapsort Prof. Flávio Rogério Uber Autor: Prof. Marco Aurélio Lopes Barbosa (UEM/DIN) Conteúdo Introdução A estrutura de dados heap Definição Manutenção da propriedade de heap A construção
Leia maisHeapSort. Estrutura de Dados II Jairo Francisco de Souza
HeapSort Estrutura de Dados II Jairo Francisco de Souza HeapSort Algoritmo criado por John Williams (1964) Complexidade O(NlogN) no pior e médio caso Mesmo tendo a mesma complexidade no caso médio que
Leia maisAlgoritmos de Ordenação. Profº Carlos Alberto T. Batista
Algoritmos de Ordenação Profº Carlos Alberto T. Batista E-mail: carlos.batista@facape.br carlos36_batista@yahoo.com.br Por que ordenar os dados? Encontrar elementos em uma lista torna-se algo simples e
Leia maisAlgoritmos de Ordenação
Algoritmos de Ordenação! Problema: encontrar um número de telefone em uma lista telefônica! simplificado pelo fato dos nomes estarem em ordem alfabética! e se estivesse sem uma ordem?! Problema: busca
Leia maisSCC-601 Introdução à Ciência da Computação II. Ordenação e Complexidade Parte 3. Lucas Antiqueira
SCC-60 Introdução à Ciência da Computação II Ordenação e Complexidade Parte 3 Lucas Antiqueira Ordenação: Utiliza uma estrutura de dados chamada heap para ordenar. Um heap é um vetor (array) que representa
Leia mais1. O que é a eficiência assintótica de um algoritmo. Explique com suas palavras.
Disciplina: Estrutura de Dados II Turma: 4EC/5CC Data: 13/11/15 Nota: Professor: Renato E. N. de Moraes Semestre: 2015-2 Valor: 0,0 pts Aluno: Lista de exercícios 04 1. O que é a eficiência assintótica
Leia maisDivisão e Conquista. Norton T. Roman. Apostila baseada nos trabalhos de Cid de Souza, Cândida da Silva e Delano M. Beder
Divisão e Conquista Norton T. Roman Apostila baseada nos trabalhos de Cid de Souza, Cândida da Silva e Delano M. Beder Divisão e Conquista Construção incremental Ex: Consiste em, inicialmente, resolver
Leia maisAnálise de Complexidade para algoritmos iterativos e recursivos
Disciplina: Matemática Discreta Agostinho Iaqchan Ryokiti Homa Análise de Complexidade para algoritmos iterativos e recursivos Algoritmos iterativos - complexidade expressa através de somatórios. Algoritmos
Leia maisAlgoritmos de Ordenação: Cota Inferior
Algoritmos de Ordenação: Cota Inferior ACH2002 - Introdução à Ciência da Computação II Delano M. Beder Escola de Artes, Ciências e Humanidades (EACH) Universidade de São Paulo dbeder@usp.br 10/2008 Material
Leia maisEstruturas de Dados 2
Estruturas de Dados 2 IF64C Estruturas de Dados 2 Engenharia da Computação Prof. João Alberto Fabro - Slide 1/34 Introdução Técnica de Projeto de Algoritmos utilizada para Problemas de Otimização; Idéia:
Leia maisUNIVERSIDADE FEDERAL DO PIAUÍ COLÉGIO TÉCNICO DE TERESINA-TÉCNICO EM INFORMÁTICA DISCIPLINA: ESTRUTURA DE DADOS PROFESSOR: Valdemir Junior
UNIVERSIDADE FEDERAL DO PIAUÍ COLÉGIO TÉCNICO DE TERESINA-TÉCNICO EM INFORMÁTICA DISCIPLINA: ESTRUTURA DE DADOS PROFESSOR: Valdemir Junior ALGORITMO DE ORDENAÇÃO HEAPSORT Alyson Pereira Barbosa Erisvaldo
Leia mais5. Algoritmos de Ordenação
Introdução à Computação II 5952011 5. Algoritmos de Ordenação Prof. Renato Tinós Depto. de Computação e Matemática (FFCLRP/USP) 1 Principais Tópicos 5.1. Ordenação por Inserção 5.2. Ordenação por Seleção
Leia maisAlgoritmos de Ordenação
Algoritmos de Ordenação Introdução à Ciência da Computação Prof. Edison Ishikawa Objetivo Apresentar diferentes algoritmos de ordenação de dados Mostrar como analisar os algoritmos em termos de tempo de
Leia maisEstruturas de Dados 2
Estruturas de Dados 2 Técnicas de Projeto de Algoritmos Força Bruta IF64C Estruturas de Dados 2 Engenharia da Computação Prof. João Alberto Fabro - Slide 1/36 Técnica de Projeto de Algoritmos por Força
Leia maisProjeto e Análise de Algoritmos
Projeto e Algoritmos Pontifícia Universidade Católica de Minas Gerais harison@pucpcaldas.br 26 de Maio de 2017 Sumário A complexidade no desempenho de Quando utilizamos uma máquina boa, ela tende a ter
Leia maisESTRUTURAS DE DADOS E ALGORITMOS ALGORITMOS DE ORDENAÇÃO POR COMPARAÇÃO - II
ESTRUTURAS DE DADOS E ALGORITMOS ALGORITMOS DE ORDENAÇÃO POR COMPARAÇÃO - II Adalberto Cajueiro Departamento de Sistemas e Computação Universidade Federal de Campina Grande ALGORITMOS VISTOS ANTERIORMENTE
Leia maisMétodos de Ordenação Parte 4
Métodos de Ordenação Parte 4 Introdução à Ciência de Computação II Prof. Diego Raphael Amancio Baseado no material do Prof. Rudinei Goularte e Prof. Thiago A. S. Pardo 1 Ordenação por Intercalação Revisando...
Leia maisALGORITMOS AVANÇADOS. UNIDADE III Algoritmo de Ordenação por Intercalação (Mergesort) Luiz Leão
UNIDADE III Algoritmo de Ordenação por Intercalação (Mergesort) Luiz Leão luizleao@gmail.com http://www.luizleao.com Conteúdo Programático 3.1 - Definição 3.2 - Dividir para conquistar 3.3 - Problema da
Leia maisAnálise de algoritmos
Análise de algoritmos Recorrências Conteúdo Introdução O método mestre Referências Introdução O tempo de execução de um algoritmo recursivo pode frequentemente ser descrito por uma equação de recorrência.
Leia maisOrdenação por Seleção Métodos de Ordenação Parte 3
Ordenação por Seleção Métodos de Ordenação Parte SCC-6 Introdução à Ciência da Computação II Rosane Minghim Idéia básica: os elementos são selecionados e dispostos em suas posições corretas Seleção direta
Leia maisMétodos de Ordenação
Métodos de Ordenação Parte 3 SCC-601 Introdução à Ciência da Computação II Rosane Minghim 2010/2011 Baseado no material dos Professores Rudinei Goularte e Thiago Pardo 1 Ordenação por Seleção Idéia básica:
Leia maisMétodos de Ordenação
Métodos de Ordenação Conceitos básicos sobre ordenação Ordenar corresponde ao processo de rearranjar um conjunto de objetos em uma ordem específica. Objetivo da ordenação: facilitar a recuperação posterior
Leia maisANÁLISE DE ALGORITMOS
ANÁLISE DE ALGORITMOS Paulo Feofiloff Instituto de Matemática e Estatística Universidade de São Paulo agosto 2009 Introdução P. Feofiloff (IME-USP) Análise de Algoritmos agosto 2009 2 / 102 Introdução
Leia maisAlgoritmos de Ordenação: Tempo Linear
Algoritmos de Ordenação: Tempo Linear ACH2002 - Introdução à Ciência da Computação II Delano M. Beder Escola de Artes, Ciências e Humanidades (EACH) Universidade de São Paulo dbeder@usp.br 10/2008 Material
Leia maisAnálise empírica de algoritmos de ordenação
Análise empírica de algoritmos de ordenação Mario E. Matiusso Jr. (11028407) Bacharelado em Ciências da Computação Universidade Federal do ABC (UFABC) Santo André, SP Brasil mario3001[a]ig.com.br Resumo:
Leia maisAnálise de Algoritmos
Algoritmos p. 1/28 Análise de Algoritmos Parte destes slides são adaptações de slides do Prof. Paulo Feofiloff e do Prof. José Coelho de Pina. Algoritmos p. 2/28 Análise de Algoritmos CLRS 7 Essas transparências
Leia maisÉ interessante comparar algoritmos para valores grandes de n. Para valores pequenos de n, mesmo um algoritmo ineficiente não custa muito para ser
É interessante comparar algoritmos para valores grandes de n. Para valores pequenos de n, mesmo um algoritmo ineficiente não custa muito para ser executado 1 Fazendo estimativas e simplificações... O número
Leia maisEstruturas de Dados, Análise de Algoritmos e Complexidade Estrutural. Carlos Alberto Alonso Sanches
CT-234 Estruturas de Dados, Análise de Algoritmos e Complexidade Estrutural Carlos Alberto Alonso Sanches CT-234 2) Algoritmos recursivos Indução matemática, recursão, recorrências Indução matemática Uma
Leia maisAlgoritmos de Ordenação. Cota inferior. Professora: Fátima L. S. Nunes SISTEMAS DE INFORMAÇÃO
Algoritmos de Ordenação Cota inferior Professora: Fátima L. S. Nunes 1 1 1 Algoritmos de Ordenação Algoritmos de ordenação que já conhecemos: 2 2 2 Algoritmos de Ordenação Algoritmos de ordenação que já
Leia maisProjeto e Análise de Algoritmos
Projeto e Análise de Algoritmos A. G. Silva Baseado nos materiais de Souza, Silva, Lee, Rezende, Miyazawa Unicamp Ribeiro FCUP 18 de agosto de 2017 Conteúdo programático Introdução (4 horas/aula) Notação
Leia maisESTRUTURAS DE DADOS E ALGORITMOS HEAP BINÁRIA
ESTRUTURAS DE DADOS E ALGORITMOS 1 HEAP BINÁRIA Adalberto Cajueiro Departamento de Sistemas e Computação Universidade Federal de Campina Grande HEAP BINÁRIA É uma árvore binária satisfazendo duas propriedades:
Leia maisBucketsort. CLRS sec 8.4. Algoritmos p. 1
Bucketsort CLRS sec 8.4 Algoritmos p. 1 Bucket Sort Recebe um inteiro n e um vetor A[1..n] onde cada elemento é um número no intervalo [0, 1). Algoritmos p. 2 Bucket Sort Recebe um inteiro n e um vetor
Leia maisAula 2. Divisão e conquista. Exemplo 1: Número de inversões de uma permutação (problema 2-4 do CLRS; veja também sec 5.4 do KT)
Aula 2 Divisão e conquista Exemplo 1: Número de inversões de uma permutação (problema 2-4 do CLRS; veja também sec 5.4 do KT) Exemplo 2: Par de pontos mais próximos (sec 33.4 do CLRS) Essas transparências
Leia maisOrdenação: Heapsort. Algoritmos e Estruturas de Dados II
Ordenação: Heapsort Algoritmos e Estruturas de Dados II Introdução Possui o mesmo princípio de funcionamento da ordenação por seleção Selecione o menor item do vetor Troque-o pelo item da primeira posição
Leia maisSolução de Recorrências
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS Solução de Recorrências Algoritmos e Estruturas de Dados I Natália Batista https://sites.google.com/site/nataliacefetmg/ nataliabatista@decom.cefetmg.br
Leia maisQuickSort. Estrutura de Dados II Jairo Francisco de Souza
QuickSort Estrutura de Dados II Jairo Francisco de Souza Particionamento Mecanismo principal dentro do algoritmo do QuickSort Para particionar um determinado conjunto de dados, separamos de um lado todos
Leia maisQuickSort CI/2015. Análise e Projeto de Algoritmos. - Prof. Lucídio A. F. Cabral
QuickSort 1 Quicksort A[p q] A[q+1 r] Ordena um vetor A[p r] Divisão Particiona um vetor A em 2 subvetores A[p..q] e A[q+1..r], de tal modo que cada elemento de A[p..q] seja menor ou igual a cada elemento
Leia maisAnálise de Algoritmos Algoritmos de Ordenação
Análise de Algoritmos Algoritmos de Ordenação Nelson Cruz Sampaio Neto nelsonneto@ufpa.br Universidade Federal do Pará Instituto de Ciências Exatas e Naturais Faculdade de Computação 5 de abril de 2016
Leia maisAnálise de Algoritmos
Análise de Algoritmos Estes slides são adaptações de slides do Prof. Paulo Feofiloff e do Prof. José Coelho de Pina. Algoritmos p. 1 Introdução CLRS 2.2 e 3.1 AU 3.3, 3.4 e 3.6 Essas transparências foram
Leia maisUniversidade Federal do ABC Avaliação Disciplina Turma Professor Data Instruções para a prova (leia antes de começar): SelectionSort selectonsortrec
Universidade Federal do ABC Avaliação: Prova 02 Disciplina: BC1424 - Algoritmos e Estruturas de Dados I Turma: Noturno Professor: Jesús P. Mena-Chalco Data: 03/05/2016 Nome completo: RA: Instruções para
Leia maisExtra- Algoritmos de Ordenação
Extra- Algoritmos de Ordenação 1 Introdução Ordenar: processo de rearranjar um conjunto de objetos em uma ordem ascendente ou descendente. A ordenação visa facilitar a recuperação posterior de itens do
Leia maisAlgoritmos de Ordenação
Ordenação é uma das operações mais usuais em listas lineares Consequentemente, uma implementação ineficiente pode afetar diretamente o desempenho geral da aplicação! Por ser um problema bem estudado, existem
Leia maisAnálise de Algoritmos
Análise de Algoritmos CLRS 2.3, 3.2, 4.1 e 4.2 Essas transparências foram adaptadas das transparências do Prof. Paulo Feofiloff e do Prof. José Coelho de Pina. Algoritmos p. 1 Número de inversões Problema:
Leia maisOrdenação: QuickSort. Prof. Túlio Toffolo BCC202 Aula 15 Algoritmos e Estruturas de Dados I
Ordenação: QuickSort Prof. Túlio Toffolo http://www.toffolo.com.br BCC202 Aula 15 Algoritmos e Estruturas de Dados I QuickSort Proposto por Hoare em 1960 e publicado em 1962. É o algoritmo de ordenação
Leia maisEdital de Seleção 032/2016 PROPESP/UFAM. Prova de Conhecimento. Caderno de Questões
Edital de Seleção 032/2016 PROPESP/UFAM Prova de Conhecimento Caderno de Questões CANDIDATO: INSCRIÇÃO: Assinatura conforme identidade INSTRUÇÕES PARA O CANDIDATO: Verifique o seu nome e o número da sua
Leia maisheapsort (int *x, int n) { int i, e, s, f, aux; /*fase de pré-processamento - cria heap inicial*/ for (i=1; i<n; i++) { e = x[i]; s = i; f = (s-1)/2;
heapsort (int *x, int n) { int i, e, s, f, aux; /*fase de pré-processamento - cria heap inicial*/ for (i=1; i0 && x[f]
Leia maisFilas de prioridade. Marcelo K. Albertini. 3 de Dezembro de 2013
Filas de prioridade Marcelo K. Albertini de Dezembro de / Filas de prioridade O que é uma fila de prioridade? Estrutura de dados que generaliza a ideia de ordenação. Coleções de elementos: inserir e remover
Leia maisAnálise de Algoritmos
Algoritmos p. 1/25 Análise de Algoritmos Parte destes slides são adaptações de slides do Prof. Paulo Feofiloff e do Prof. José Coelho de Pina. Algoritmos p. 2/25 Ordenação em tempo linear CLRS cap 8 Algoritmos
Leia maisFilas de prioridade. Marcelo K. Albertini. 27 de Novembro de 2014
Filas de prioridade Marcelo K. Albertini de Novembro de / Filas de prioridade O que é uma fila de prioridade? Estrutura de dados que generaliza a ideia de ordenação. Coleções de elementos: inserir e remover
Leia maisEstruturas de Dados Algoritmos de Ordenação
Estruturas de Dados Prof. Eduardo Alchieri (introdução) Considere uma sequência arbitrária S = {s1, s2, s3,...sn} composta por n 0 elementos retirados do conjunto universo U O objetivo da ordenação é arrumar
Leia maisAlgoritmos de Ordenação: HeapSort
Algoritmos de Ordenação: HeapSort ACH2002 - Introdução à Ciência da Computação II Delano M. Beder Escola de Artes, Ciências e Humanidades (EACH) Universidade de São Paulo dbeder@usp.br 10/2008 Material
Leia maisIntrodução Paradigmas
Introdução Paradigmas Recursividade Algoritmos tentativa e erro Divisão e conquista Programação dinâmica Algoritmos gulosos Algoritmos aproximados 1 Introdução O projeto de algoritmos requer abordagens
Leia maisOrdenação de Dados. Ordenação de Dados
UFSC-CTC-INE INE38 - Estruturas de Dados Ordenação de Dados Prof. Ronaldo S. Mello 00/ Ordenação de Dados Processo bastante utilizado na computação de uma estrutura de dados Dados ordenados garantem uma
Leia maisAlgoritmos e Estrutura de dados II. Fila de Prioridade e Heaps
Algoritmos e Estrutura de dados II Fila de Prioridade e Heaps 1 Heap Sort...mas antes Agenda Implementação de uma Fila de Prioridade usando um HEAP Propriedade do Heap e exemplos adcionar min/max Remover
Leia maisAlgoritmos de Ordenação: MergeSort
Algoritmos de Ordenação: MergeSort ACH2002 - Introdução à Ciência da Computação II Delano M. Beder Escola de Artes, Ciências e Humanidades (EACH) Universidade de São Paulo dbeder@usp.br 10/2008 Material
Leia maisEstrutura de Dados. Algoritmos de Ordenação. Prof. Othon M. N. Batista Mestre em Informática
Estrutura de Dados Algoritmos de Ordenação Prof. Othon M. N. Batista Mestre em Informática Roteiro Introdução Ordenação por Inserção Insertion Sort Ordenação por Seleção Selection Sort Ordenação por Bolha
Leia mais3. Conteúdo de um vértice v é conteúdo dos filhos de v.
Árvore Hierárquica Em inglês é chamada de Heap. Representar: conjunto C de elementos com relação. Operações: Ins x,c (inserir x em C e ExMax C (extrair o máximo do conjunto). Chamado também de Fila de
Leia maisQuick Sort. Considerações Sobre Algoritmos de Ordenação. Estagiário PAE: Jesimar da S. Arantes Professor: ClaudioQuick F. M.
Quick Sort Considerações Sobre Algoritmos de Ordenação Estagiário PAE: Jesimar da S. Arantes Professor: Claudio F. M. Toledo 27 de Setembro de 2017 Estagiário PAE: Jesimar da S. Arantes Professor: ClaudioQuick
Leia mais5. Análise de Complexidade de Algoritmos. João Pascoal Faria (versão original) Ana Paula Rocha (versão 2003/2004) Luís Paulo Reis (versão 2005/2006)
5. Análise de Complexidade de Algoritmos João Pascoal Faria (versão original) Ana Paula Rocha (versão 2003/2004) Luís Paulo Reis (versão 2005/2006) FEUP - MIEEC Prog 2-2006/2007 Introdução Algoritmo: conjunto
Leia maisOrdenação Interna. Prof. Jonas Potros
Ordenação Interna Prof. Jonas Potros Heap A estrutura de dados heap é um objeto arranjo que pode ser visto como uma árvore binária completa. A árvore está completamente preenchida em todos os níveis, exceto
Leia maisOrdenação por Intercalação Métodos de Ordenação Parte 4
Ordenação por Intercalação Métodos de Ordenação Parte 4 SCC-601 Introdução à Ciência da Computação II Rosane Minghim 2010 Revisando... Também chamado merge-sort Idéia básica: dividir para conquistar Um
Leia maisProjeto de Algoritmos por Divisão e Conquista
Projeto de Algoritmos por Divisão e Conquista Profa. Sheila Morais de Almeida DAINF-UTFPR-PG junho - 2018 Sheila Almeida (DAINF-UTFPR-PG) Divisão e Conquista junho - 2018 1 / 70 Este material é preparado
Leia maisAnálise de Problemas Recursivos. Algoritmos e Estruturas de Dados Flavio Figueiredo (
Análise de Problemas Recursivos Algoritmos e Estruturas de Dados 2 2017-1 Flavio Figueiredo (http://flaviovdf.github.io) 1 Lembrando de Recursividade Procedimento que chama a si mesmo Recursividade permite
Leia maisProjeto e Análise de Algoritmos
Projeto e Análise de Algoritmos A. G. Silva Baseado nos materiais de Souza, Silva, Lee, Rezende, Miyazawa Unicamp Ribeiro FCUP Manber, Introduction to Algorithms (1989) Livro 06 de abril de 2018 Conteúdo
Leia maisOrdenação: HeapSort. Prof. Túlio Toffolo BCC202 Aula 17 Algoritmos e Estruturas de Dados I
2014-01 Aula 16 Fila de Prioridade / HeapSort Adaptado por Reinaldo Fortes para o curso de 2014-01 Arquivo original: Aula 17: HeapSort Ordenação: HeapSort Prof. Túlio Toffolo http://www.toffolo.com.br
Leia maisComplexidade de Algoritmos
Complexidade de Algoritmos O que é um algoritmo? Sequência bem definida e finita de cálculos que, para um dado valor de entrada, retorna uma saída desejada/esperada. Na computação: Uma descrição de como
Leia maisAula 13: Ordenação - Heapsort. Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP
Aula 13: Ordenação - Heapsort Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP Filas de Prioridades É uma estrutura de dados onde a chave de cada item reflete sua habilidade relativa de abandonar
Leia maisSCC Capítulo 3 Análise de Algoritmos - Parte 2
SCC-501 - Capítulo 3 Análise de Algoritmos - Parte 2 João Luís Garcia Rosa 1 1 Departamento de Ciências de Computação Instituto de Ciências Matemáticas e de Computação Universidade de São Paulo - São Carlos
Leia maisEstruturas de Dados 2
Estruturas de Dados 2 Análise Empírica de Algoritmos IF64C Estruturas de Dados 2 Engenharia da Computação Prof. João Alberto Fabro - Slide 1/13 Análise da Eficiência de Algoritmos: Velocidade de Execução;
Leia maisMétodos de Ordenação: Selection, Insertion, Bubble, Merge (Sort)
Métodos de Ordenação: Selection, Insertion, Bubble, Merge (Sort) Hebert Coelho e Nádia Félix Ordenação É a operação de rearranjar os dados em uma determinada ordem. Problema da ordenação - Definição formal
Leia maisMÉTODOS DE ORDENAÇÃO. Introdução à Programação SI1
MÉTODOS DE ORDENAÇÃO Introdução à Programação SI1 2 Conteúdo Conceitos básicos Classificação por troca Classificação por inserção Classificação por seleção 3 Conceitos Básicos Ordenar: processo de rearranjar
Leia mais