PONTIFÍCIA UNIVERSIDADE CATÓLICA DE GOIÁS
PRÓ-REITORIA DE GRADUAÇÃO
DEPARTAMENTO DE COMPUTAÇÃO
PLANO DE ENSINO
Disciplina: Estrutura de Dados II
Curso: Engenharia de Computação/ Ciência da computação
Professor: Pedro Araújo Valle
Código
Nº de Créditos
Pré-requisitos:
CMP1099
06
CMP1054
Co-requisito
EMENTA
Estudo de algoritmos de pesquisa e ordenação, tabelas hash e algoritmos e grafos.
OBJETIVOS GERAIS
•
•
•
•
Estudar e comparar algoritmos de ordenação mais conhecidos;
Estimar e comparar tempos de execução de algoritmos;
Dominar o conhecimento de organização de tabelas hash e seu uso para acesso a dados;
Compreender estrutura de grafos e seu uso em algoritmos clássicos.
OBJETIVOS ESPECÍFICOS
O aluno deverá ser capaz de:
• Identificar e aplicar os algoritmos de ordenação mais adequados e eficientes, conforme o problema
apresentado;
• Implementar tabelas hash utilizando o a função hash que melhor se encaixa no problema;
• Escolher o algoritmo de grafo de acordo com a necessidade apresentada.
CONTEÚDO PROGRAMÁTICO
•
•
•
•
•
•
Algoritmos de ordenação e pesquisa
Estimativas de tempo de execução de programas
Tabelas Hash
Conceitos básicos e terminologia de Grafos
Aplicações de grafos na solução de problemas clássicos: Árvore geradora mínima, Caminho mais
curto, Matching, Coloração, Caixeiro Viajante, Roteamento de Veículos, Coleta de lixo e entrega
de correspondências, etc.
Representações de grafos no computador
METODOLOGIA
•
•
•
Aulas expositivas;
Formação de grupos para discussão e definições de problemas;
Estudo dirigido – resolução de exercícios em classe.
AVALIAÇÃO
A nota final, NF, da disciplina será resultante da média ponderada de dois conjuntos de
notas, N1 e N2, conforme a expressão NF = 0,4·N1+ 0,6·N2, sendo que tanto N1 quanto N2 serão
compostos por no mínimo duas notas resultantes de duas avaliações individuais com todo o
conteúdo do período correspondente. Serão aplicados pequenos testes em sala ou trabalhos, cuja
soma de suas notas irão compor N1 e N2, sendo que a Avaliação Interdisciplinar (AI) é uma das
avaliações previstas para compor N2.
A frequência será computada em cada encontro através de chamada feita durante as aulas
e pela Atividade Externa à Disciplina (AED).
Será considerado aprovado na disciplina o aluno que obtiver a frequência mínima de 75%
e Nota Final igual ou superior a cinco.
ATIVIDADE EXTERNA À DISCIPLINA
•
•
Pesquisa sobre aplicações práticas de grafos (6h);
Implementação de algoritmo para cadastramento de grafos (vértices, arestas, pesos) em lista de
adjacências e também em matriz de adjacências (6h).
BIBLIOGRAFIA BÁSICA
1. CORMEN, Thomas H. et al. Algoritmos: teoria e prática. 3. ed. Rio de Janeiro: Campus, 2012.
2. DROZDEK, Adam. Estruturas de dados e algoritmos em C++. São Paulo: Cengage Learning,
2002.
3. ZIVIANI, Nivio. Projeto de algoritmos com implementações em Java e C++. São Paulo: Cengage
Learning, 2006.
BIBLIOGRAFIA COMPLEMENTAR
1. AHO Alfred V.; HPCROFT John E.; ULLMAN, Jefrey D. Data structure and algorithms. Ney
2.
3.
4.
5.
York: Addison-Wesley, 1983.
BRASS, P. Advanced data structures. Cambridge: Cambridge University Press, 2008.
SEDGEWICK, Robert. Algorithms. 4. ed. San Francisco: Addison-Wesley, 2010.
SHAFER, Clifford A. Data structures and algorithm analysis in C++. 1. ed. Nrew York: Dover
Publications, 2011.
SZWARCFITER, Jayme L. Estruturas de dados e seus algoritmos. 3. ed. Rio de Janeiro: LTC,
2010.
CRONOGRAMA
04/02 – Apresentação do programa e entrega do plano de ensino.
05/02 – Algoritmo Insertion Sort e tempo de execução.
09/02 – Notação assintótica.
11/02 – Notações assintóticas: limite superior (O), limites inferior e superior (θ), limite inferior
(Ω).
12/02 – Exercícios de fixação.
19/02 – Implementação do Insertion Sort e execução com quantidades crescentes de valores.
23/02 – Algoritmo Bubblesort.
25/02 – Exercícios de fixação.
26/02 – Algoritmo Merge sort.
02/03 – Algoritmo Heapsort.
04/03 – Exercícios de fixação.
05/03 – Algoritmo Quicksort.
09/03 – Considerações sobre a técnica “dividir para conquistar”. Comparação entre os diversos
algoritmos
11/03 – Exercício de fixação.
12/03 – 1ª avaliação N1.
16/03 – Implementação de alguns algoritmos utilizando técnicas para medição do tempo de
execução.
18/03 – Resolução da prova.
19/03 – Implementação de alguns algoritmos utilizando técnicas para contagem das execuções de
cada instrução.
23/03 – Tabelas Hash.
25/03 – Tratamento de colisões por encadeamento.
26/03 – Exercícios de fixação.
30/03 – Endereçamento aberto, função hash: métodos da divisão e da multiplicação.
01/04 – Sondagem linear. Exercícios.
06/04 – Sondagem quadrática. Exercícios.
08/04 – Função hash duplo. Exercícios.
09/04 – Revisão. Exercícios de fixação.
13/04 – 2ª avaliação N1.
15/04 – Introdução aos grafos, representação: listas de adjacência e matriz de adjacência.
16/04 – Resolução da prova.
22/04 – Busca primeiro em largura – BFS.
23/04 – Impressão de percurso – PRINT_PATH.
27/04 – Exercícios de fixação.
29/04 – Busca primeiro em profundidade.
30/04 – Exercícios de fixação.
04/05 – 1ª avaliação N2.
06/05 – Grafos ponderados.
07/05 – Resolução da prova.
11/05 – Classificação de grafos. Conceitos de elementos de grafos.
13/05 – Exercícios de fixação.
14/05 – Avaliação Interdisciplinar – AI.
18/05 – Árvores geradoras mínimas.
20/05 – Algoritmos de Kruskal e Prim.
21/05 – Exercícios de fixação.
25/05 – Caminhos mínimos de fonte única.
27/05 – Algoritmo de Bellman-Ford.
28/05 – Algoritmo de Dijkstra.
01/06 – Exercícios de fixação.
03/06 – Caminhos mínimos de todos os pares.
08/06 – Algoritmo de Floyd-Warshall.
10/06 – Fluxo máximo: Ford-Fulkerson.
11/06 – Implementações de alguns algoritmos.
15/06 – Revisão. Exercícios de fixação.
17/06 – 2ª avaliação N2.
18/06 – Entrega de notas e resultados.
MATERIAL DE APOIO
Softwares diversos e internet.
Download

plano de ensino