Lista de Exercícios 07 Introdução à Ciência de Computação II (SCC0201/501)

Documentos relacionados
Tabelas de dispersão/hash

SCC0601 Introdução à Ciência da Computação II. Prof. Lucas Antiqueira

Tabelas de hash Acabamos de estudar como implementar uma tabela hashing aberta e estudaremos agora como implementar uma tabela hashing fechada ou

Algoritmos de pesquisa. Tabelas de dispersão/hash

Tabelas Hash O Que é uma Tabela Hash? O Que é uma Tabela Hash? O Que é uma Tabela Hash? Inserindo um Novo Registro. O Que é uma Tabela Hash?

UNIVERSIDADE DA BEIRA INTERIOR

Métodos de Busca Parte 2

Tabelas Hash. Prof. Túlio Toffolo BCC202 Aulas 23 e 24 Algoritmos e Estruturas de Dados I

14 Projeto de Algoritmos: paradigmas SCC201/501 - Introdução à Ciência de Computação II

TABELAS DE DISPERSÃO/HASH

MC3305 Algoritmos e Estruturas de Dados II. Aula 02 Hashing. Prof. Jesús P. Mena-Chalco.

13 Hashing (parte 2) SCC201/501 - Introdução à Ciência de Computação II

HASHING Hashing Motivação - Acesso Direto:

Métodos de Busca. Parte 2. ICC2 Prof. Thiago A. S. Pardo. Baseado no material do Prof. Rudinei Goularte

Introdução Métodos de Busca Parte 2 - Hashing

Tabelas Hash. informação, a partir do conhecimento de sua chave. Hashing é uma maneira de organizar dados que:

HASHING HASHING 6/10/2008

Endereçamento Aberto

Implemente a função de remoção de uma chave na tabela hashing fechada em questão. void remover(tabela tabela, int n) {

Dicionários. TAD Orientado a conteúdo

Tabelas de Espalhamento (hash)

Universidade de São Paulo

Pesquisa em memória primária: hashing. Algoritmos e Estruturas de Dados II

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

Dicionários. Prof. César Melo

Hashing (Tabela de Dispersão)

Árvores B. Hashing. Estrutura de Dados II Jairo Francisco de Souza

Hashing: conceitos. Hashing

Algoritmos e Estrutura de Dados. Aula 11 Estrutura de Dados: Tabelas Hash Parte II Prof. Tiago A. E. Ferreira

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

TABELA HASH. Prof. André Backes. Princípio de funcionamento dos métodos de busca

UNIVERSIDADE DA BEIRA INTERIOR

UNIVERSIDADE DA BEIRA INTERIOR

Aula 14 Listas Duplamente Encadeadas. prof Leticia Winkler

AED2 - Aula 01 Apresentação, estruturas de dados, tabelas de símbolos e hash tables

Centro Federal de Educação Tecnológica de Minas Gerais Programa de Pós-Graduação em Modelagem Matemática e Computacional

Recursividade. Prof. Jesus José de Oliveira Neto

14 Projeto de Algoritmos: paradigmas SCC201/501 - Introdução à Ciência de Computação II

UNIVERSIDADE DA BEIRA INTERIOR

i a[i]

Pesquisa em Memória Primária Hashing

Classes, Herança e Interfaces

Introdução Métodos de Busca Parte 1

TABELAS HASH. Vanessa Braganholo Estruturas de Dados e Seus Algoritmos

SCC Capítulo 5 Métodos de Busca [3]

Árvores binárias de busca

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

Listas Lineares. continuando...

ESTRUTURA DE DADOS E ALGORITMOS. Hashing (Tabela de Dispersão) Cristina Boeres

Tabelas Hash. Prof. Túlio Toffolo BCC202 Aula 21 Algoritmos e Estruturas de Dados I

Complexidade de Algoritmos

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

UNIVERSIDADE DA BEIRA INTERIOR

Arvores binárias. Fonte: PF 14 pf/algoritmos/aulas/bint.html

Estruturas de Dados Tabelas de Espalhamento

Análise e Complexidade de Algoritmos

Métodos de Busca Parte 1

Matemática Discreta 12

Listas Estáticas. Prof. Fernando V. Paulovich *Baseado no material do Prof. Gustavo Batista

SCC-501 Introdução à Ciência de Computação II

05 Análise de Algoritmos (parte 4) SCC201/501 - Introdução à Ciência de Computação II

1 OBJETIVOS 2 HORÁRIO DE AULAS 3 PROGRAMA

UNIVERSIDADE DA BEIRA INTERIOR

Árvores binárias de busca

Paradigmas de Projetos de Algoritmos

Árvores Binárias de Busca (ABB) 18/11

Compactação e Reuso de Espaço

Lista de Exercícios 04

Hashing Organização Direta de Arquivos

Lista de Exercícios sobre Listas Implementadas por Encadeamento

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

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

Teoria dos Grafos Aula 14

Prova 1 PMR3201 Computação para Automação 1o. semestre 2016 Prof. Thiago de Castro Martins

Hashing. Cormen Capítulo 11

UNIVERSIDADE DE SÃO PAULO INSTITUTO DE CIÊNCIAS MATEMÁTICAS E DE COMPUTAÇÃO

Árvores Binárias de Busca (ABB) 18/11

Lista Encadeada (Linked List)

Lista de Exercícios. Av. Trabalhador São-carlense, 400. centro. São Carlos - SP cep Brasil.

Capítulo 6 Análise de Algoritmos Capítulo 6

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

Hashing. ACH Introdução à Ciência da Computação II. Delano M. Beder

Vamos considerar um arquivo de dados que armazena uma lista de alunos. Cada registro é um objeto com um número de matrícula e um nome.

Árvores. Estruturas de Dados. Prof. Vilson Heck Junior

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

Árvores Binárias de Busca

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

Filas de Prioridade & Heaps

SCC-201 Introdução à Ciência de Computação II

Tabelas de símbolos e de distribuição AULA 23. Tabela de símbolos. Um exemplo simples. Interface

04 Recursão SCC201/501 - Introdução à Ciência de Computação II

UNIVERSIDADE DA BEIRA INTERIOR

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

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

01 Análise de Algoritmos (parte 2) SCC201/501 - Introdução à Ciência de Computação II

Busca em Arranjos. Busca em arranjos. Busca em arranjos. Programação de Computadores. Busca em Arranjos

Transcrição:

Lista de Exercícios 07 Introdução à Ciência de Computação II (SCC0201/501) Prof. Moacir P. Ponti Jr. 24 de novembro de 2010 1 Hashing 1. Suponha uma tabela hash de tamanho 10 com endereçamento aberto para armazenar chaves no intervalo [1, 999]. Insira as seguintes chaves nessa tabela: 371, 121, 173, 203, 11, 24, nessa ordem, considerando diferentes métodos de resolução de colisões: a) Sondagem linear, funcao hash: h(k) = k%m + i b) Sondagem quadrática, funcao hash: h(k) = k%m + i 2 c) Sondagem quadrática, funcao hash: h(k) = k%m + 2i + i 2 d) Hash duplo, funcao hash: h 1 (k) = k%m, função hash 2: h 1 (k) = 7 (k%7) 2. Utilizando os resultados do exercício anterior, responda: a) qual o fator de carga nal da tabela? b) quais as estratégias que aparentemente realizaram melhor espalhamento das chaves? c) como caria o mesmo cenário utilizando uma tabela hash de tamanho 7 com encadeamento? 3. O uso de tabelas hash com encadeamento facilita a operação de remoção, pois apenas é preciso remover o elemento da lista ligada. No caso de endereçamento aberto a remoção deve ser feita de maneira diferente. a) qual operação é realizada sobre a chave removida? b) em caso de existirem muitos elementos marcados como deletados na tabela, perde-se a eciência nas buscas; como é possível tratar esse problema? 4. Quais as vantagens e desvantagens (com relação à criação da estrutura, inserção e remoção de elementos e busca) de cada uma das estruturas abaixo para o caso em que se deseja armazenar um dicionário, com chaves compostas por strings com tamanho de até 80 caracteres e suas denições compostas por strings de tamanho 1

até 2000 caracteres. Sabe-se que a quantidade de palavras pode variar entre 10.000 e 50.000. a) Arranjo e busca binária b) Lista encadeada e busca sequencial c) Tabela hash com endereçamento aberto e hashing duplo d) Tabela hash com encadeamento 2 Projeto de Algoritmos: parte 1 (referente à aula das semana 22-26/11) 5. Analise o algoritmo abaixo. 1. int fatorial(int n) { 2. int i = 1, F = 1; 3. while (i <= n) { 4. F = F * i; 5. i++; 6. } 7. return F; 8. } Prove a corretude do algoritmo por invariantes de laço: a) demonstrando que o algoritmo termina (ou seja, que o laço termina e que o programa eventualmente alcança a linha 7) b) provando que após passar pelo laço k vezes, F = k! e i = k + 1. c) demonstrando que, após o laço terminar, F = n!. 6. Analise a função recursiva abaixo que retorna a soma dos números entre 1 e n. 1. int soman(int n) { 2. if (n == 1) { 3. return 1; 4. } else { 5. return n + soman(n-1); 6. 7. } a) Com base na seguinte equação geral de recorrência tente encontrar qual seria a equação de recorrência para a função soman. ( n ) T (n) = at + f(n), b onde: 2

a indica o número de sub-problemas gerados b o tamanho de cada um dos problemas f(n) o custo de resolver cada sub-problema b) Com base na equação de recorrência encontrada, prove por indução que T (n) é O(f(n)) para f(n) = n, ou seja, encontre o caso base T (1), assuma que T (n) é O(n) e prove para T (n + 1) e O(n + 1). 7. Considere os algoritmos baseados em tentativa e erro. Quando eles são utilizados? Qual é o principal problema que enfrentam os algoritmos que realizam uma busca exaustiva pela solução? 8. Considere um algoritmo que tem o objetivo de montar um quebra-cabeças. O quebra-cabeças possui 4 peças e está embaralhado numa mesa com (2x2) espaços, conforme demonstrado abaixo. O algoritmo irá tentar montá-lo de forma correta posicionando peça por peça em um outro espaço de 2x2 peças, que inicialmente está vazio. O algoritmo se comporta: pegando um peça na mesa embaralhada e inserindo na mesa de montagem, verica se a peça se encaixa com as peças vizinhas eventualmente já montadas. Responda: se não encaixou remove a peça atual e tenta uma nova peça se nenhuma peça disponível servir, remove a peça anterior e repete o procedimento para uma nova peça. se encaixou repete o procedimento para uma nova peça. a) o paradigma do algoritmo é de tentativa e erro? b) o algoritmo tenta obter a solução de forma exaustiva (força bruta)? c) o algoritmo eventualmente termina? Se sim, é possível estimar qual seria o pior caso? 3

9. Considere os algoritmos baseados em tentativa e erro. Quando eles são utilizados? Qual é o principal problema que enfrentam os algoritmos que realizam uma busca exaustiva pela solução? 3 Projeto de Algoritmos: parte 2 (referente à aula da semana 29/11-03/12) 10. Suponha que, no gráco abaixo, as letras representam cidades e os caminhos entre as cidades estão marcados com a distância entre as cidades conectadas. Imagine um problema de encontrar o menor caminho entre duas cidades. O paradigma da programação dinâmica resolve sub-problemas menores e os armazena para posterior reuso, enquanto o paradigma de algoritmos gulosos escolhe sempre a solução que parece mais promissora num dado instante. Como se comportaria e qual seria o provavel resultado se os seguintes algoritmos tivessem que obter o menor caminho entre a cidade B e a cidade F? a) Programação dinâmica (caminhe pelas estradas armazenando possíveis soluções e descarte sub-soluções quando encontrar melhores opções). b) Algoritmo guloso utilizando a heurística do vizinho mais próximo (ou seja, caminhe sempre pela próxima estrada cuja distância seja mínima, em direção à cidade destino). 11. Um problema muito famoso é o do escalonamento de grade horária, que consiste em, dadas as seguintes variáveis: janelas de tempo salas disciplinas (das quais participam alunos e professores) montar um horário viável, ou seja, no qual as salas sejam ocupadas pelas disciplinas em diferentes janelas de tempo de forma que tanto alunos quanto professores participar de todas as disciplinas que estejam inscritos. Discuta esse problema do 4

ponto de vista dos seguintes paradigmas de projeto de algoritmos, descrevendo as vantagens e desvantagens de cada abordagem. Tentativa e erro (backtracking) Programação dinâmica Heurísticas Algoritmos aproximados 5