Algoritmos e Programação III
Pegue
aqui o
segundo trabalho.
E
aqui os
casos de teste.
Materiais sobre grafos:
- Uma micro-classe para grafos está aqui e um programa que pode ser usado
para testá-la está aqui.
Fornecendo a entrada
2 4
3 4
5 4
2 6
4 8
geramos uma saída que pode ser lida pelo Graphviz e gera esta imagem.
Materiais para a aula prática sobre árvores:
Critérios de
correção para os trabalhos.
Os trabalhos tem a forma de ARTIGOS (pegue aqui um exemplo).
Artigos que incluírem o código do programa no texto como se fosse
uma explicação para o algoritmo geralmente recebem notas ruins.
Objetivos
O cumprimento da disciplina busca dar ao aluno, ao
final do semestre, condições de:
- Conhecer algoritmos para ordenação e pesquisa de dados e suas
particularidades.
- Conhecer os métodos para análise de eficiência de algoritmos e
compreender as formas de análise.
- Conhecer árvores e grafos, suas formas de representação e seus
algoritmos mais importantes.
- Conhecer as classes de problemas P e NP, suas características e
importância.
Ementa
Formalização dos conceitos sobre complexidade e análise de
algoritmos utilizando notação assintótica. Descrição da
classificação de algoritmos quanto à complexidade e a utilização de
contagem de passos para a análise da complexidade de algoritmos.
Estudo e análise da complexidade dos algoritmos de pesquisa,
ordenação e hashing. Introdução do conceito de classes de problemas.
Estudo dos tipos abstratos de dados não-lineares árvore e grafo e
sua implementação como objetos. Modelagem e solução de problemas
utilizando árvores e grafos.
Programa
- Introdução à análise de algoritmos
- Ordem de crescimento
- Notações Assintóticas
- Notação O
- Notação Theta
- Notação Omega
- Tipos de algoritmos: logarítmico, linear, quadrático,
exponencial e outros
- Ordenação, pesquisa de dados e “hashing”
- Pesquisa sequencial e binária
- Hashing
- Método simples de ordenação
- Quicksort
- Heaps e heapsort
- Árvores
- Definições básicas
- Representação
- Árvores Genéricas, Binárias e de Pesquisa
- Caminhamentos: infixado, pré-fixado, pós-fixado
- Operações: pesquisa, inserção, remoção
- Balanceamento
- Aplicações
- 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
Avaliação
G1 =
(P1+P2+P3+T1+T2)/5
Materiais
- Materiais da disciplina:
- Notações estão aqui e uma lista de
exercícios sobre notações e contagem de operações está aqui.
- Uma lista de exercícios sobre árvores binárias está aqui.
- Uma lista de exercícios sobre árvores binárias de pesquisa está aqui.
- Grafos estão aqui e uma lista
de exercícios está aqui.
- Métodos de ordenação estão aqui.
- Aulas em
video na Universidade da California at Berkeley
-
What papers should everyone read?
- Siga no Twitter: CompSciFact
- Um Wikibook inteiro
sobre algoritmos.
- Um livro ótimo está aqui.
- E outro livro muito legal está aqui.
- Caso você tenha dificuldade ao escrever os trabalhos:
- Dicas sobre o uso de pseudo-código estão
aqui, aqui, e
aqui.
- 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.
- Introdução à análise de algoritmos
- Material sobre somas (bem legal), na Universidade
do Tennessee (Knoxville).
- Material sobre análise de algoritmos em
Cprogramming.com.
- Explicações legais sobre notação O() na
Universidade de Wisconsin (Madison).
- Notação O() na Wikipedia.
- Somas na
Univ. da California (Davis).
- Problemas P e NP na Univ. da
California (Los Angeles).
- Mais P e NP na Univ. da
California (Irvine).
- A reportagem de
capa da Communications of
the ACM de setembro de 2009, que trata dos últimos
resultados sobre P e NP.
- Ordenação e pesquisa de dados
- Um otimo texto sobre hashing sendo usado em criptografia no
Unixwiz.
- Animações
de algoritmos de ordenação
- Uma animação legal de algoritmos de ordenação na Univ.
de British Columbia. Outra animação que inclui algoritmos
paralelos no RIT.
- Algoritmos de ordenação na Wikipedia.
- Algoritmos de ordenação
dançantes!!
- Uma coleção de
algoritmos, incluindo ordenação.
- Árvores
- Um site que possui animações de operações em árvores
binárias, AVL e B-trees:
aqui.
- Um site bem legal com os algoritmos sobre árvores está aqui.
- Material simples mas interessante sobre árvores está aqui.
- Alguns tutoriais ótimos sobre arvores binárias, árvores AVL e
árvores de Andersson estão aqui.
- Grafos
- Vocabulário de grafos na Wikipedia
e na Univ.
do Colorado (Denver).
- Algoritmos, grafos e Labirintos.
- Mais sobre teoria dos grafos na Wikipedia.
- Tutoriais sobre teoria dos grafos na Univ. do Tenessee
(Martin).
- Faça este teste
sobre grafos.
- Algoritmos básicos na
Worcester Polytechnic.
- Repositório de algoritmos na Univ. de
Osnabruck.
- 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!
- Um pouco de tudo:
- 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!
- Estruturas de dados e algoritmos na
McGill. Bem legal!!
- Design and Analysis na
Universidade de Kent.
- Catálogo de Algoritmos, do Skiena, em Stony
Brook.
Bibliografia:
Livros texto
- AHO, Alfred V. Foundations of computer science. New
York, NY: Computer Science Press, 1998.
- CORMEN, Thomas H. Introduction to algorithms. 3. ed.
Cambridge (MA): The MIT Press, 2009.
- RAWLINS, Gregory J. E. Compared to what? An introduction to the
analysis of algorithms. New York, NY:
Computer Science Press, 1992.
Livros complementares
- GERSTING, Judith L. Fundamentos matemáticos para ciência da
computação: um tratamento moderno de matemática discreta. 5.
ed. Rio de Janeiro: LTC, 2004.
- GIBBONS, Alan. Algorithmic
graph theory. Cambridge (UK): Cambridge Univ.,
1985.
- LEVITIN, Anany. Introduction
to the design and analysis of algorithms. Boston:
Addison- Wesley, 2003.
- WALLIS, W. D. A beginner's
guide to graph theory. Boston: Birkhäuser, 2000.
- WILSON, Robin J. Introduction
to graph theory. 4. ed. [London]: Longman, 1996.
De volta para minha página.
[PUCRS]
[Faculdade de
Informática]
[Pós-Graduação em
Informática]