oliveira(AT)inf.pucrs.br
Critérios de correção para os trabalhos.
Os trabalhos tem a forma de ARTIGOS (pegue um exemplo). Artigos que incluírem o código do programa e mal dão alguma explicação para o algoritmo geralmente recebem notas que não são legais. :(
Aqui tem um template para relatórios no Overleaf.
Caso você tenha dificuldade na hora de escrever os trabalhos:
Também temos o livro do Zobel na biblioteca. Use-o!!
Um repositório de links existe na Iowa State.
Recomendamos os itens listados em Writing Texts and Abstracts, especialmente as dicas de Schulzrinne e a apresentação de Peyton-Jones.
E aqui o texto explicando o método para encontrar as funções para algoritmos desconhecidos. Este não é um trabalho da nossa disciplina, está aqui apenas para leitura!
O cumprimento da disciplina busca dar ao aluno, ao final do semestre, condições de:
Conhecer estruturas de dados avançadas: filas de prioridades, mapas e conjuntos;
Conhecer grafos, suas formas de representação e seus algoritmos mais importantes;
Indicar as estruturas de dados que melhor se adaptam para a solução de um determinado problema;
Analisar e selecionar o algoritmo mais eficiente para a solução de um determinado problema.
Projeto e análise de algoritmos e estruturas de dados avançadas: filas com prioridade, heaps, tabelas de hash, mapas, dicionários, conjuntos e grafos. Discussão, análise e raciocínio sobre a complexidade de algoritmos e implementações correspondentes.
Revisão de complexidade
Estruturas avançadas
Filas de prioridade
Tabelas de espalhamento (hashing)
Conjuntos
Aplicações: dicionários
Aplicações: quadtrees
Aplicações: codificação de Huffman
Aplicações: árvores B
Grafos
Definições básicas
Representação e implementação
Grafos ponderados
Caminhamentos: largura e profundidade
Operações sobre grafos
Detecção de Ciclos e Ordenação Topológica
Detecção de Componentes
Árvores de cobertura mínima
Caminhos Mínimos: Dijkstra e Floyd
Fluxos
Caminho crítico
Aplicações
G1 = ( 3 * ( P1 + P2 ) + 2 * ( T1 + T2 ) / 10
Material para aulas práticas sobre heaps: aqui.
Applets mostrando o funcionamento de várias estruturas vistas em aula: aqui.
Material para aulas práticas sobre grafos:
Primeira parte da matéria:
Este livro é muito bom! Leia com calma e cuidado!!
Os materiais do livro do Sedgewick (que é muito bom!!!) estão aqui.
Uma série de aulas do MIT (em inglês), sobre vários tópicos da disciplina e outros assuntos.
Um catálogo de cursos sobre algoritmos na Universidade de Pittsburgh. Fonte de outros links!
Um livro inteiro sobre recursão.
Recursão, explicada em um material de Stanford. Leia tudo!!
Estruturas de dados e algoritmos na McGill. Bem legal!!
Design and Analysis na Universidade de Kent.
Algoritmos do Skiena.
Aulas em video na Universidade da California at Berkeley
Siga no Twitter: CompSciFact
Um Wikibook inteiro sobre algoritmos.
Um livro ótimo está aqui.
Uma análise muito legal do processo de construção de um heap para o heapsort .
Grafos
A lista de exercícios para programar sobre grafos está aqui.
A lista de exercícios para pensar sobre grafos está aqui.
Uma série fantástica de vídeos sobre grafos, feita pelo William Fiset
Vocabulário de grafos na Wikipedia.
Uma introdução muito legal da USP.
Algoritmos, grafos e labirintos.
Uma apresentação sobre grafos feita pelo Paul van Dooren (Univ. Católica de Louvain).
Outra apresentação (em português) feita pelo Antonio Loureiro (UFMG).
Tutoriais sobre teoria dos grafos na Univ. do Tenessee (Martin).
Um livro inteiro on-line: Bondy & Murty. Contém aplicações, mas este é um livro de Matemática, não de Informática. Também é meio antigo, então pode não ser a melhor escolha do mundo... procure livros mais interessantes no catálogo da biblioteca!
CORMEN, Thomas H., et. al. Algoritmos – teoria e prática. 3. ed. Rio de Janeiro: Elsevier-Campus, 2012.
GERSTING, Judith L. Fundamentos matemáticos para ciência da computação: um tratamento moderno de matemática discreta. 7. ed. Rio de Janeiro: LTC, 2017.
GOODRICH, M. T.; TAMASSIA, R. 3. Estruturas de dados e algoritmos em Java. 5. ed. Porto Alegre: Bookman, 2013.
AHO, A. V. Foundations of computer science. New York: Computer Science Press, 2000.
HOROWITZ, E.; SAHNI, S.; RAJASEKARAN, S. Computer algorithms. 2 ed. Summit: Silicon Press, 2008.
GIBBONS, Alan. Algorithmic graph theory. Cambridge (UK): Cambridge Univ., 1999.
LEVITIN, Anany. Introduction to the design and analysis of algorithms. Boston: Pearson, 2012.
WALLIS, W. D. A beginner's guide to graph theory. Boston: Birkhäuser, 2007.