• Nenhum resultado encontrado

1 OBJETIVOS 2 HORÁRIO DE AULAS 3 PROGRAMA

N/A
N/A
Protected

Academic year: 2021

Share "1 OBJETIVOS 2 HORÁRIO DE AULAS 3 PROGRAMA"

Copied!
7
0
0

Texto

(1)

Curso de Especializac

¸˜

ao em Engenharia de Software

Universidade Federal de Minas Gerais

Departamento de Ciˆ

encia da Computa¸c˜

ao

Estruturas de Dados Fundamentais

Professor Roberto da Silva Bigonha 15 de Junho de 2017

1

OBJETIVOS

O objetivo da disciplina ´e apresentar as estruturas de dados b´asicas e seus algoritmos para o desenvolvimento de programas de computador e criar oportunidades para o uso de Java na implementa¸c˜ao de tipos abstratos de dados e outras estruturas. Concluindo o curso, os alunos dever˜ao ser capazes de construir programas modulares em Java, dominar as principais t´ecnicas utilizadas na implementa¸c˜ao de estruturas de dados b´asicas e de algoritmos de pesquisa. Eles ainda dever˜ao ser capazes de efetuar an´alises simples da complexidade de algoritmos.

2

HOR ´

ARIO DE AULAS

• Dias de Aulas: 20/6 e 21/624/05, 5/6, 6/6, 7/6, 13/6, 14/6, 19/6, • Hor´ario: 19:15 - 20:45 e 21:10 - 22:30

3

PROGRAMA

1. 24/05/2017, 19:15 - 20:45, 21:10 - 22:30

COMPLEXIDADE DE ALGORITMOS (170 min): Medidas do Custo de Execu¸c˜ao: Tempo e Espa¸co. Nota¸c˜ao O. Conceito de Pior, Melhor Caso e Caso M´edio. Complexidade Assint´otica. Classes de Complexi-dade. T´ecnicas de An´alise de Algoritmos Recursivos e N˜ao-Recursivos.

2. 05/06/2017, 19:15

-TIPO ABSTRATO DE DADOS (10 min): Conceitua¸c˜ao. Gap Semˆantico. Extensibilidade de Tipo. DICION ´ARIOS (5min): Conceito. Implementa¸c˜ao.

TABELAS (45 min): Pesquisa Sequencial. Pesquisa Sequencial R´apida. Pequisa Bin´aria.

LISTAS LINEARES (110 min): Conceitua¸c˜ao. Implementa¸c˜ao com Arranjos e Apontadores. Nodo-Cabe¸ca. Invers˜ao de Lista. Caminhamento em Sentido Duplo. Listas com Cursores. Listas Circulares. Listas Duplamente Encadeadas. Inser¸c˜ao e Remo¸c˜ao.

3. 06/06/2017, 19:15 -ENTREGA DO TP I.

TABELAS HASHING (90 min): Transforma¸c˜ao de Chaves. Resolu¸c˜oes de Colis˜oes: Listas de overflow, Hashing Linear, Rehashing.

PILHA (15min): Conceitua¸c˜ao. Implementa¸c˜ao com Arranjos e com Apontadores.

FILAS (20 min): Conceitua¸c˜ao. Implementa¸c˜ao com Arranjos e com Apontadores. Fila circular. ´

ARVORES - parte I (45 min): Conceito de ´Arvores. ´Arvores Bin´arias. 4. 07/06/2017, 19:15

ARVORES - parte II (90 min): ´Arvores Bin´arias Estendidas. Propriedades de ´Arvores Bin´arias. Cami-nhamentos em ´Arvore: Central, Pr´e-Ordem e P´os-Ordem. Caminhamentos Recursivos e N˜ao-Recursivos.

´

ARVORES - parte III (50 min): Caminhamento com iteradores.

(2)

5. 13/06/2017, 19:15 -ENTREGA DO TP II.

FILAS DE PRIORIDADES II (90 min): Implementa¸c˜ao do Heap. PESQUISA DIGITAL (10 min): ´Arvore de Pesquisa Digital. Tries.

´

ARVORES PATRICIA I (70 min): Conceitua¸c˜ao. Patricia Bin´aria: Pesquisa. Inser¸c˜ao. Remo¸c˜ao. Implementa¸c˜ao de Patricia com chave de tamanho fixo.

6. 14/06/2017, 19:15 - ´ARVORES PATRICIA II (90 min): Implementa¸c˜ao de Patricia Bin´aria com chave de tamanho vari´avel. Patricia M- ´Aria.

´

ARVORES DE PESQUISA (80 min): Conceitua¸c˜ao. Pesquisa. Inser¸c˜ao. Remo¸c˜ao de Nodos com no M´aximo um Filho. Remo¸c˜ao de Qualquer Nodo.

7. 19/06/2017, 19:15 -ENTREGA DO TP III

´

ARVORES AVL (170 min): Conceito. Teorema de AVL. Balanceamento. Pesquisa. Inser¸c˜ao. Remo¸c˜ao 8. 20/06/2017, 19:15

ARVORES B (60 min): Conceitua¸c˜ao. Pesquisa. ´Arvores B*. ´Arvores B+. ´Arvores 2-3. ´

ARVORE SBB - parte I (110 min): Conceitua¸c˜ao. Balanceamento. Pesquisa. 9. 21/06/2017, 19:15

ARVORE SBB - parte II (90 min): Inser¸c˜ao. Remo¸c˜ao. 21:00 -PROVA FINAL (80 min)

10. 26/06/2017, 19:15 - ENTREGA DO TP IV

11. 28/06/2017, 19:15 - EXAME EXTRA

4

AVALIAC

¸ ˜

AO

A apura¸c˜ao do aproveitamento ser´a feita por pontos cumulativos, em uma escala de 0 (zero) a 100 (cem), distribu´ıdos da seguinte forma:

• Prova Final: 30 pontos

• Trabalhos Pr´aticos de Programa¸c˜ao: 70 pontos

• Exame Extra: 15 pontos (acumulativos) e somente para aqueles que obtiverem de 50 a 59 pontos.

Para aprova¸c˜ao, s˜ao obrigat´orias a frequˆencia de no m´ınimo a 75% das aulas e a obten¸c˜ao de pelo menos 60 pontos. N˜ao haver´a provas suplementares ou de reposi¸c˜ao.

O cumprimento dos prazos de entrega dos trabalhos ´e essencial para o bom andamento do curso e dever´a ser observado. Os prazos estabelecidos s˜ao r´ıgidos e, por uma quest˜ao de justi¸ca, n˜ao negoci´aveis individualmente. Os trabalhos entregues com atraso superior a 24 horas ser˜ao penalizados na nota.

Pedidos de revis˜oes da corre¸c˜ao de trabalhos e provas dever˜ao ser encaminhados por escrito e justificados.

Os trabalhos pr´aticos s˜ao INDIVIDUAIS. Cada aluno dever´a desenvolver e documentar SOZINHO sua pr´opria solu¸c˜ao de forma a poder receber os pontos alocados a cada trabalho.

A documenta¸c˜ao ´e parte essencial de qualquer projeto de software e deve ser sucinta e objetiva. A documenta¸c˜ao do trabalho dever´a conter pelo menos os seguintes itens principais:

1. uma r´apida descri¸c˜ao da arquitetura da solu¸c˜ao implementada, onde dever´a ser informado quais classes foram constru´ıdas e pacotes onde elas est˜ao;

(3)

2. a descri¸c˜ao da interface de cada classe implementada. Caso a classe possua atributos p´ublicos, a utiliza¸c˜ao dos mesmos dever´a ser justificada. A implementa¸c˜ao dos m´etodos e atributos por ventura pedidos no trabalho ´e obrigat´oria, por´em o aluno pode adicionar a qualquer das classes pedidas os m´etodos que julgar necess´arios. 3. uma r´apida descri¸c˜ao dos testes realizados para comprovar o correto funcionamento da aplica¸c˜ao. A sa´ıda

impressa dos resultados obtidos, sempre que aplic´avel, ´e necess´aria; 4. a listagem do c´odigo fonte impressa.

Na elabora¸c˜ao dos trabalhos, ´e importante que as estruturas de dados usadas sejam efetivamente implementadas pelo aluno. O uso de solu¸c˜oes prontas, como as ArrayList, Vector, pilhas, filas, ´arvores, tabelas hashing oferecidas pela biblioteca de classes de Java, para solu¸c˜ao dos trabalhos pr´aticos n˜ao ´e permitido. Afinal este ´e um curso para ensinar ao aluno implementar as estruturas de dados fundamentais e n˜ao apenas seu uso.

O ´unico produto que deve ser entregue como resultado dos trabalhos de implementa¸c˜ao ´e a sua documenta¸c˜ao impressa e a listagem dos programas e de seus resultados. Por favor, n˜ao envie ao professor documenta¸c˜ao dos trabalhos em meios eletrˆonicos. Entregue-a diretamente ao professor na sala de aula ou na Secretaria do DCC (sala 5309, hor´ario comercial).

5

TRABALHO PR ´

ATICO I (15 pontos)

5.1

An´

alise de Complexidade

1. Explique o significado das seguintes express˜oes: (a) f (n) ´e O(1)

(b) f (n) ´e O(n) (c) f (n) ´e O(n log n)

2. Sejam f1(n) e f2(n) as fun¸c˜oes de custo dos algoritmos A1 e A2, respectivamente. Qual ´e o significado de

cada uma das seguintes afirmativas:

a) o tempo de execu¸c˜ao de A1 ´e O(n log n) e o tempo de execu¸c˜ao de A2 ´e O(n3).

b) o tempo de execu¸c˜ao de A1´e aproximadamente n log n e o tempo de execu¸c˜ao de A2´e O(n log n).

5.2

Complexidade (Velocidade do Processador)

Responda `as seguintes perguntas:

1. Sejam um algoritmo A cuja complexidade de tempo ´e dada pela fun¸c˜ao f (n) = O(2n) e uma m´aquina M . Essa m´aquina gasta um tempo t para executar o algoritmo A, com uma entrada de tamanho m.

Executando-se o mesmo algoritmo A em uma outra m´aquina M0, 32 (trinta e duas) vezes mais r´apida que M , qual ser´a o tamanho da entrada poss´ıvel de ser processada em M0 gastando o mesmo tempo t?

2. Sejam um algoritmo B cuja complexidade de tempo ´e dada pela fun¸c˜ao f (n) = O(2n3) e uma m´aquina M . Essa m´aquina gasta um tempo t para executar o algoritmo B, ao fornecer uma entrada de tamanho n. Quantas vezes mais r´apida deve ser uma nova m´aquina M0 para processar o algoritmo B com uma entrada 4 (quatro) vezes maior, gastando o mesmo tempo t?

(4)

Figura 1: ´Indices Invertidos

3. Um analista de sistemas conhece dois algoritmos para resolver o mesmo problema. A complexidade de tempo de execu¸c˜ao do primeiro algoritmo ´e dada pela fun¸c˜ao f (n) = O(300n2) e a do segundo algoritmo

g(n) = O(5n3). Mesmo sabendo que o segundo algoritmo possui uma ordem de complexidade maior do que

o primeiro, o analista utilizou-o para algumas entradas. A decis˜ao tomada pelo analista foi a seguinte: se a entrada for maior do que o m, ent˜ao utilize o primeiro algoritmo; sen˜ao, utilize o segundo algoritmo. Qual o valor de m, sendo este o tamanho m´aximo da entrada para utilizar o segundo algoritmo?

6

TRABALHO PR ´

ATICO II (15 pontos)

6.1

Arquivos Invertidos com Hash

Arquivos invertidos ´e uma t´ecnica de indexa¸c˜ao, i.e., uma t´ecnica para se realizar buscas r´apidas por um determi-nado item de uma lista de itens. Essa t´ecnica consiste em armazenar as chaves de busca dos itens em uma estrutura de dados que permita encontr´a-las rapidamente. Juntamente com a chave ´e tamb´em armazenada a posi¸c˜ao na lista onde o item ocorre, permitindo o acesso direto a ele. Essa estrutura de acesso r´apido pode ser, por exemplo, uma tabela hash ou mesmo uma ´arvore bin´aria de pesquisa.

Neste trabalho a seguinte situa¸c˜ao ´e suposta: existe um vetor com uma cole¸c˜ao de dados sobre 40 pessoas. Para cada pessoa as seguintes informa¸c˜oes s˜ao mantidas: cpf, nome, idade, sexo e endere¸co. O problema ´e permitir acesso r´apido a esses dados sendo que as chaves de busca s˜ao o cpf e o nome. Para isso o sistema dever´a armazenar as chaves e a posi¸c˜ao do vetor onde cada pessoa se encontra em tabelas hash com resolu¸c˜ao de conflitos por listas encadeadas (as tabelas hash devem ter tamanho 13). Veja um exemplo desse esquema na Figura 1.

(5)

Os requisitos do sistema s˜ao:

• o sistema dever´a ler do teclado ou de um arquivo texto uma lista com os dados das pessoas e armazen´a-los em um vetor.

• o sistema dever´a disponibilizar para o usu´ario a op¸c˜ao de: – consulta por cpf e por nome

– no caso da busca por nome, dever˜ao ser listadas todas as pessoas que possuam o nome requisitado – inser¸c˜ao de novos registros de pessoas no sistema

– op¸c˜ao de remo¸c˜ao por cpf. ´E importante que os ´ındices se mantenham consistentes com a remo¸c˜ao – listar todos os registros de pessoas no sistema em ordem alfab´etica.

• para construir o ´ındice de acesso r´apido via as chaves, devem ser utilizadas duas tabelas hash com listas encadeadas para resolver conflitos. Uma delas permitir´a a busca por cpf, a outra por nome, conforme ilustra a Figura 1.

• n˜ao use as classes e fun¸c˜oes prontas de Java para implementa¸c˜ao da tabela hash.

7

TRABALHO PR ´

ATICO III (20 pontos)

7.1

Busca em Texto: Patricia

A busca em texto ´e uma forma de recupera¸c˜ao de informa¸c˜ao muito utilizada atualmente, principalmente na Web, onde o usu´ario informa uma palavra ou uma lista de palavras para ser buscada nos textos de diversos documentos disponibilizados na Internet. Uma outra situa¸c˜ao de busca textual ocorre quando tem-se um documento de texto (p.ex., um livro ou um artigo) e deseja-se procurar por uma ocorrˆencia de uma palavra nesse texto. A busca textual automatizada torna-se relevante quando o tamanho do texto ou o n´umero de documentos de texto a ser pesquisado ´

e grande, situa¸c˜ao em que a busca manual no texto mostra-se invi´avel. Para automatizar a busca de palavras em textos utilizam-se estruturas de dados adequadas para representar textos e documentos de texto. Neste trabalho, ser´a considerada a busca em apenas um documento de texto, sendo as solu¸c˜oes utilizadas facilmente estendidas para considerar mais de um documento de texto. Um documento de texto ser´a referido somente como texto. No trabalho pr´atico a ser desenvolvido, as solu¸c˜oes de automatiza¸c˜ao de busca textual apresentadas devem ser implementadas em Java, e n˜ao ´e permitido o uso de solu¸c˜oes prontas de Java, como ArrayList, Vector, etc. Use somente tipos b´asicos, arranjos e classes, como estruturas fundamentais.

Para resolver o problema, vocˆe deve usar ´arvore Patr´ıca, conforme descrito a seguir, que deve ser implementada por meio das classes ArvorePatriciaPalavra e NodoPatriciaPalavra, que realizam as seguintes interfaces:

public enum NodoTipo { INTERNO, EXTERNO } public interface IItemPalavra {

public String getPalavra(); public int numDeOcorrencias();

public void addOcorrencia(int posicao); public int[ ] getOcorrencia();

(6)

public interface INodoPatriciaPalavra { public void setTipo(NodoTipo t); public NodoTipo getTipo(); /* para nodo INTERNO */

public void setNodoPatEsq(INodoPatriciaPalavra n); public INodoPatriciaPalavra getNodoPatEsq(); public void setNodoPatDir(INodoPatriciaPalavra n); public INodoPatriciaPalavra getNodoPatDir(); public void setIndex(int i);

public int getIndex();

public int calcBit(String p); /* para nodo EXTERNO */

public void setItemPalavra(IItemPalavra item); public IItemPalavra getItemPalavra();

}

public interface IArvorePatriciaPalavra { public void inicializa();

public boolean vazia();

public boolean insere(IItemPalavra item); public boolean remove(String p);

public IItemPalavra pesquisa(String p); }

Nesta solu¸c˜ao, as palavras tamb´em s˜ao representadas por um item que armazena suas ocorrˆencias destas no texto. Quando uma nova palavra for encontrada no texto, um objeto do tipo IItemPalavra deve ser instanciado e inserido na ´arvore Patricia. Caso uma nova ocorrˆencia da palavra for encontrada, deve-se recuperar o item na ´

arvore que representa esta palavra, instanciar uma nova ocorrˆencia (i.e., a posi¸c˜ao juntamente com a palavra sucessora) e adicionar a ocorrˆencia nesse item. Assim, todas as opera¸c˜oes de inser¸c˜ao, remo¸c˜ao e pesquisa devem ser implementadas na ´arvore patr´ıcia.

Um nodo da ´arvore Patricia deve ser implementado pela classe NodoPatriciaPalavra. Esta classe representa tanto um nodo interno quanto um nodo externo da ´arvore. A fun¸c˜ao calcBit(String) ´e utilizada por um nodo interno para calcular o i-´esimo bit da palavra passada como parˆametro, onde i ´e definido pelo ´ındice armazenado no nodo (i.e., index).

Pede-se implementar esta solu¸c˜ao por meio de um programa em Java que possibilite ao usu´ario fornecer como entrada um arquivo de texto e um padr˜ao de busca (i.e., uma palavra ou uma frase) e informe como sa´ıda todas as ocorrˆencias deste padr˜ao no texto, apresentando o trecho do texto que inicia na posi¸c˜ao indicada pela ocorrˆencia do padr˜ao, juntamente com o restante do texto at´e a primeira quebra de linha. Fa¸ca testes utilizando esta solu¸c˜ao e apresente uma an´alise da complexidade dos algoritmos implementados, assim como dos resultados dos testes realizados. Para os testes utilize pelo menos um arquivo de texto com pelo menos 1.000 palavras.

8

TRABALHO PR ´

ATICO IV (20 pontos)

8.1

Arvores-B

´

1. Defina ´arvore-B

(7)

3. Em linhas gerais, como inser¸c˜oes de registros s˜ao efetuadas em ´arvores-B? Em particular, explique como viola¸c˜oes de propriedade da ´arvore-B devido a inser¸c˜ao de registros s˜ao resolvidas.

4. Em linhas gerais, como remo¸c˜oes de registros s˜ao efetuadas em ´arvores-B? Em particular, explique como viola¸c˜oes de propriedade da ´arvore-B devido a remo¸c˜ao de registros s˜ao resolvidas.

8.2

Inser¸

ao e Remo¸

ao em Sbb

1. Desenhe as ´arvores resultantes de cada passo da inser¸c˜ao de um nodo com chave 5 e depois de outro com chave 90 na ´arvore SBB abaixo `a esquerda.

2. Desenhe as ´arvores resultantes de cada passo da remo¸c˜ao da chave 9 e depois da chave 5 da ´arvore SBB abaixo `a direita.

Referências

Documentos relacionados

Pode haver alguns acordos prévios, como visto na classificação proposta em trabalho anterior (GUERRERO, 2006), mas estes são propostos sempre mantendo elevado

DATA: 17/out PERÍODO: MATUTINO ( ) VESPERTINO ( X ) NOTURNO ( ) LOCAL: Bloco XXIB - sala 11. Horário Nº Trabalho Título do trabalho

Após a implantação consistente da metodologia inicial do TPM que consiste em eliminar a condição básica dos equipamentos, a empresa conseguiu construir de forma

- Se o estagiário, ou alguém com contacto direto, tiver sintomas sugestivos de infeção respiratória (febre, tosse, expetoração e/ou falta de ar) NÃO DEVE frequentar

O pressuposto teórico à desconstrução da paisagem, no caso da cidade de Altinópolis, define que os exemplares para essa análise, quer sejam eles materiais e/ou imateriais,

Diante das consequências provocadas pelas intempé- ries climáticas sobre a oferta de cana-de-açúcar para a indústria, a tendência natural é que a produção seja inferior

II - os docentes efetivos, com regime de trabalho de 20 (vinte) horas semanais, terão sua carga horária alocada, preferencialmente, para ministrar aulas, sendo o mínimo de 8 (oito)

O destaque é dado às palavras que abrem signi- ficados e assim são chaves para conceitos que fluem entre prática poética na obra de arte e sua reflexão em texto científico..