Análise amortizada CLRS 17. Algoritmos p. 1

Documentos relacionados
Análise de Algoritmos

AULA 20. Algoritmos p.725/759

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

Análise Amortizada. Exemplo: Tabelas dinâmicas. Resulta da análise de uma sequência de operações numa estrutura de dados.

Análise Amortizada. Fernando Lobo. Algoritmos e Estrutura de Dados II. Resulta da análise de uma sequência de operações numa estrutura de dados.

Análise de Algoritmos

Ordenação em tempo linear

Análise de Algoritmos

Elementos de Análise Assintótica

2. Ordenação por Seleção

INF70 Gerenciamento de Banco de Dados 2 Índices baseados em Hash

GBC053 Gerenciamento de Banco de Dados Índices baseados em Hash

Algoritmos de ordenação: Inserção e Shellsort

Análise de Algoritmos

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

Mediana. Aula 09. Menor. i-ésimo menor elemento. Algoritmo de Seleção. -ésimo menor elemento. Mediana é o n+1. -ésimo menor ou o n+1

Prova Substitutiva PMR3201 1o. semestre 2018 Prof. Thiago Martins

Algoritmo da IFT 2 / 16. Algoritmo da IFT Estrutura da fila de prioridade Resolvendo empates. Algoritmo 1 Algoritmo geral da IFT

AULA 21. Algoritmos p.760/792

Carlos Eduardo Batista. Centro de Informática - UFPB

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

Os métodos de ordenação que ordenam os elementos in situ podem ser classificados em três principais categorias:

Trabalho Prático 1. Valor: 1,0 pontos (10% da nota total) Data de Entrega: 02/05/2010

Programação II Aula 07

Algoritmos de Ordenação

Hashing Externo. SCC-503 Algoritmos e Estruturas de Dados II. Thiago A. S. Pardo M.C.F. de Oliveira Cristina Ciferri

Análise de Algoritmos

Conjuntos disjuntos dinâmicos

AULA 13. Algoritmos p.526/582

Armazenamento em disco com uso de índices

Análise de Algoritmos Algoritmos de Ordenação

Árvores-B (Parte Ib) SCC-203 Algoritmos e Estruturas de Dados II. Graça Nunes

Técnicas de projeto de algoritmos: Indução

Aula 12 Métodos de Classificação: - Classificação por Inserção Direta - Classificação por Seleção Direta

Aula 19 Conjuntos disjuntos (Union-find)

Lista Ordenada. Estrutura de Dados. Universidade Federal de Juiz de Fora Departamento de Ciência da Computação 1 / 35

Estruturas de Dados Estruturas de Dados Fundamentais

Estrutura de Dados e Algoritmos e Programação e Computadores II. Aula 4: Listas Estáticas e Dinâmicas

AULA 22. Algoritmos p.793/823

Complexidade Assintótica de Programas Letícia Rodrigues Bueno

HASHING HASHING 6/10/2008

Árvores-B (Parte Ia) SCC-203 Algoritmos e Estruturas de Dados II. Graça Nunes

Métodos de Ordenação Parte I

Algoritimos e Estruturas de Dados III CIC210

Ponteiros e alocação dinâmica de memória. Disciplina de Programação de Computadores I Universidade Federal de Ouro Preto

Método BubbleSort. Estrutura de Dados II Prof Jairo Francisco de Souza

Algoritmos de Ordenação: Tempo Linear

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

<identificador>[<tamanho>]: <tipo>;

MC102 Aula 26. Instituto de Computação Unicamp. 17 de Novembro de 2016

Tabela Hash. Disciplina de Algoritmos e Estrutura de Dados III. Prof. Marcos Antonio Schreiner 15/05/2015

SÍNTESE DE SIST. SEQUENCIAIS SÍNCRONOS. Sel Sistemas Digitais Prof. Homero Schiabel

Sistemas Operacionais

HASHING Hashing Motivação - Acesso Direto:

Árvore-B. Árvore B. Características Gerais. Sistemas de Banco de Dados. Características Gerais. Revisão

Códigos convolucionais

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

Radix Sorting. Várias aplicações têm chaves que são inteiros, definidos dentro de um intervalo

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)

distância list ranking

4. Algoritmos de Busca em Vetores

Análise e Projeto de Algoritmos

O que é um jogo digital?

Estruturas de Dados, Análise de Algoritmos e Complexidade Estrutural. Carlos Alberto Alonso Sanches

Projeto e Análise de Algoritmos

Construção de árvores-b. Árvores-B (Parte II) Características Gerais. Características Gerais. Leandro C. Cintra M.C.F. de Oliveira

Hashing convencional...

Árvores. Fabio Gagliardi Cozman. PMR2300 Escola Politécnica da Universidade de São Paulo

ANÁLISE DE ALGORITMOS

Compactação de Dados Letícia Rodrigues Bueno

FUNDAMENTOS DE ARQUITETURAS DE COMPUTADORES MEMÓRIA CACHE CAPÍTULO 5. Cristina Boeres

Análise de Algoritmos

Universidade de São Paulo

Classificação e Pesquisa Aula 6 Métodos de Ordenação: ShellSort e QuickSort. Prof. Esp. Pedro Luís Antonelli Anhanguera Educacional

TAD dicionário. Métodos do TAD dicionário:

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

Árvores. Thiago Martins, Fabio Gagliardi Cozman. PMR2300 / PMR3201 Escola Politécnica da Universidade de São Paulo

Carlos Eduardo Batista. Centro de Informática - UFPB

Árvores-B (Parte II) Leandro C. Cintra M.C.F. de Oliveira Fonte: Folk & Zoelick, File Structures

Estruturas de Dados Tabelas de Espalhamento

Prova de Recuperação PMR3201/PMR2300 1o. semestre 2015 Prof. Thiago Martins

Análise Amortizada de Complexidade

Algoritmos de Ordenação

Sistemas de Computação. Seção Notas. Endereçamento de Memória. Notas. Oitava Aula. Haroldo Gambini Santos. 3 de setembro de 2009.

Universidade Federal de Mato Grosso do Sul. Lista de Exercícios 2

Bucketsort. CLRS sec 8.4. Algoritmos p. 1

Índices. SCC-503 Algoritmos e Estruturas de Dados II. Thiago A. S. Pardo Leandro C. Cintra M.C.F. de Oliveira

Projeto e Análise de Algoritmos

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

MC-102 Aula 20 Ponteiros III

Programação de Computadores Ordenação de Arranjos

Árvores, Árvores Binárias e Árvores Binárias de Pesquisa. Rui Jorge Tramontin Jr.

Banco de Dados. Métodos de Ordenação de Dados. Prof. Walteno Martins Parreira Jr

Contexto. Algoritmos para conjuntos massivos de dados. Aplicação. Modelo de Data Stream 20/10/2016

Complexidade de Algoritmos

Introdução à Ciência da Computação II

Melhores momentos AULA 1. Algoritmos p.38/86

Aula 19 Árvores Rubro-Negras

INF 1010 Estruturas de Dados Avançadas

Transcrição:

Análise amortizada CLRS 17 Algoritmos p. 1

Análise amortizada Serve para analisar uma sequência de operações ou iterações onde o pior caso individual não reflete o pior caso da sequência. Em outras palavras, serve para melhorar análises de pior caso que baseiem-se diretamente no pior caso de uma operação/iteração e que deem uma delimitação frouxa para o tempo de pior caso da sequência. Métodos: agregado por créditos potencial Algoritmos p. 2

Odômetro binário Considere um contador binário, inicialmente zerado, representado em um vetor A[0..n 1], onde cada A[i] vale 0 ou 1. Operação: incrementa. INCREMENTA (A, n) 1 i 0 2 enquanto i < n e A[i] = 1 faça 3 A[i] 0 4 i i+1 5 se i < n 6 então A[i] 1 Consumo de tempo no pior caso: Θ(n) Algoritmos p. 3

Odômetro binário Considere um contador binário, inicialmente zerado, representado em um vetor A[0..n 1], onde cada A[i] vale 0 ou 1. Operação: INCREMENTA. Consumo de tempo no pior caso: Θ(n). O odômetro dá uma volta completa a cada 2 n execuções do INCREMENTA. Quanto tempo leva para o odômetro dar uma volta completa? Leva O(n2 n ). Será que é Θ(n2 n )? Algoritmos p. 4

Odômetro binário i 3 2 1 0 0 0 0 0 0 1 0 0 0 1 2 0 0 1 0 3 0 0 1 1 4 0 1 0 0 5 0 1 0 1 6 0 1 1 0 7 0 1 1 1 8 1 0 0 0 9 1 0 0 1 10 1 0 1 0 11 1 0 1 1 12 1 1 0 0 13 1 1 0 1 14 1 1 1 0 15 1 1 1 1 16 0 0 0 0 Algoritmos p. 5

Odômetro binário i 3 2 1 0 0 0 0 0 0 1 0 0 0 1 2 0 0 1 0 3 0 0 1 1 4 0 1 0 0 5 0 1 0 1 6 0 1 1 0 7 0 1 1 1 8 1 0 0 0 9 1 0 0 1 10 1 0 1 0 11 1 0 1 1 12 1 1 0 0 13 1 1 0 1 14 1 1 1 0 15 1 1 1 1 16 0 0 0 0 Algoritmos p. 6

Método agregado Custo da volta completa é proporcional ao número de vezes que os bits são alterados. bit 0 muda 2 n vezes bit 1 muda 2 n 1 vezes bit 2 muda 2 n 2 vezes bit n 2 muda 4 vezes bit n 1 muda 2 vezes Total de alterações de bits: n i=1 2i < 2 2 n. Custo da volta completa: Θ(2 n ). Custo amortizado por INCREMENTA: Θ(1). Algoritmos p. 7

Análise por créditos Atribuímos um número fixo de créditos por operação INCREMENTA de modo a pagar por toda alteração de bit. Objetivo: atribuir o menor número possível de créditos que seja ainda suficiente para pagar por todas as alterações. Relembre... INCREMENTA (A, n) 1 i 0 2 enquanto i < n e A[i] = 1 faça 3 A[i] 0 5 i i+1 6 se i < n 7 então A[i] 1 Algoritmos p. 8

Análise por créditos Atribuímos 2 créditos por INCREMENTA. INCREMENTA (A, n) 1 i 0 2 enquanto i < n e A[i] = 1 faça 3 A[i] 0 4 i i+1 5 se i < n 6 então A[i] 1 Um é usado para pagar pela alteração da linha 6. O outro fica armazenado sobre o bit alterado na linha 6. Há um crédito armazenado sobre cada bit que vale 1. Alterações da linha 3 são pagas por créditos armazenados por chamadas anteriores do INCREMENTA. Algoritmos p. 9

Análise por créditos Atribuímos 2 créditos por INCREMENTA. INCREMENTA (A, n) 1 i 0 2 enquanto i < n e A[i] = 1 faça 3 A[i] 0 4 i i+1 5 se i < n 6 então A[i] 1 Um é usado para pagar pela alteração da linha 6. O outro fica armazenado sobre o bit alterado na linha 6. O número de créditos armazenados em cada instante é o número de bits que valem 1, logo é sempre não negativo. Custo amortizado por INCREMENTA: 2 Algoritmos p. 10

Método do potencial Seja φ(a) o número de bits que valem 1 em A[0..n 1]. Seja A i o estado do contador A após o i-ésimo INCREMENTA. Note que φ(a 0 ) = 0 e φ(a i ) 0. Seja c i o número de bits alterados no i-ésimo INCREMENTA. Note que c i 1+t i onde t i é o número de bits 1 consecutivos no final do contador A. Note que φ(a i ) φ(a i 1 ) 1 t i. Seja ĉ i = c i +φ(a i ) φ(a i 1 ) (1+t i )+(1 t i ) = 2. Algoritmos p. 11

Método do potencial Seja φ(a) o número de bits que valem 1 em A[0..n 1]. Seja A i o estado do contador A após o i-ésimo INCREMENTA. Temos que φ(a 0 ) = 0 e φ(a i ) 0. Seja c i o número de bits alterados no i-ésimo INCREMENTA e t i é o número de bits 1 consecutivos no final do contador A. Temos que c i 1+t i. Seja ĉ i = c i +φ(a i ) φ(a i 1 ) (1+t i )+(1 t i ) = 2. Então o custo da volta completa é c = 2 n c i = 2 n ĉ i +φ(a 0 ) φ(a 2 n) 2 n ĉ i 2 2 n. i=1 i=1 i=1 Custo amortizado por INCREMENTA: 2 (valor do ĉ i ) Algoritmos p. 12

Tabelas dinâmicas Vetor que sofre inserções. Cada inserção custa 1. Inicialmente o vetor tem 0 posições. Na primeira inserção, um vetor com uma posição é alocado, e o item em questão é inserido. A cada inserção em que o vetor está cheio, antes da inserção propriamente dita, um vetor do dobro do tamanho é alocado, o vetor anterior é copiado para o novo vetor e depois é desalocado. O custo no pior caso de uma inserção é alto, pois pode haver uma realocação. Algoritmos p. 13

Tabelas dinâmicas Para i = 0,1,2,...,n 1, { 1 se i não é potência de 2 c i = i+1 se i é potência de 2 Método agregado: n 1 i=0 onde k = lgn. c i = n+(1+2+2 2 + +2 k ) Logo n 1 i=0 c i = n+2 k+1 1 n+2n 1 < 3n. Custo amortizado por inserção: 3 Algoritmos p. 14

Análise por créditos Chame de velho um item que já estava no vetor no momento da última realocação do vetor, e de novos os itens inseridos após a última realocação. Atribuímos 3 créditos por inserção: um é usado para pagar pela inserção do item, os outros dois são armazenados sobre o item. Ao ocorrer uma realocação, há 2 créditos sobre cada item novo no vetor, e isso é suficiente para pagar pela cópia de todos os itens do vetor para o novo vetor pois, quando o vetor está cheio, há um item novo para cada item velho. Em outras palavras, o segundo crédito paga a cópia do item na primeira realocação que acontecer após a sua inserção, e o terceiro crédito paga a cópia de um item velho nesta mesma realocação. Algoritmos p. 15