Material das Aulas:
- Aula 00 - Apresentação da Disciplina
- Aula 01 - Complexidade de Algoritmos
- Aula 02 - Técnicas de Projeto de Algoritmos (Força Bruta)
- Aula 03 - Técnicas de Projeto de Algoritmos (Divisão e Conquista)
- Aula 04 - Técnicas de Projeto de Algoritmos (Método Guloso)
- Aula 05 - Técnicas de Projeto de Algoritmos (Programação Dinâmica)
- Aula 06 - Busca de Padrões em Texto
- Aula 07 - Tries
- Aula 08 - Maior Subsequência Comum (LCS)
- Aula 09 - Algoritmos de Ordenação
- Aula 10 - Algoritmos de Ordenação de Complexidade Linear
- Aula 11 - Busca em Profundidade e Busca em Largura
- Aula 12 - Ordenação Topológica
- Aula 13 - Componentes Fortemente Conectados
- Aula 14 - Distâncias Mínimas
Listas de Exercícios:
- Lista de Exercícios 01 - Complexidade de Algoritmos (Data de Entrega: 07/09/2017)
- Lista de Exercícios 02 - Força Bruta (Data de Entrega: 14/09/2017)
- Lista de Exercícios 03 - Divisão e Conquista (Data de Entrega: 19/09/2017)
- Lista de Exercícios 04 - Método Guloso (Data de Entrega: 24/09/2017)
- Lista de Exercícios 05 - Programação Dinâmica (Data de Entrega: 01/10/2017)
- Lista de Exercícios 06 - Busca de Padrões em Texto (Data de Entrega: 04/10/2017)
- Lista de Exercícios 07 - Tries (Data de Entrega: 08/10/2017)
- Lista de Exercícios 08 - Maior Subsequência Comum (Data de Entrega: 15/10/2017)
- Lista de Exercícios 09 - Revisão P1
- Lista de Exercícios 10 - Algoritmos de Ordenação (Data de Entrega: 25/10/2017)
- Lista de Exercícios 11 - Algoritmos de Ordenação de Complexidade Linear (Data de Entrega: 01/11/2017)
Exercícios Extras:
Datas Importantes:
- 09/10: Prova Teórica (P1) sobre complexidade de algoritmos, técnicas de projeto de algoritmos e algoritmos de processamento de texto;
- 30/11: Prova Teórica (P2) sobre algoritmos de ordenação e algoritmos em grafos;
- 11/12: Prova Final (PF) envolvendo todo o conteúdo do curso;
Notas:
- Notas Finais (Atualizado em: 09/02)
Programa do Curso:
- 1. Complexidade de Algoritmos
- Algoritmos
- Eficácia vs Eficiência
- Complexidade de Algoritmos
- Análise Assintótica
- 2. Técnicas de Projeto de Algoritmos
- Força Bruta/Busca Completa/Backtracking
- Divisão e Conquista
- Método Guloso
- Programação Dinâmica
- 3. Algoritmos de Processamento de Texto
- Algoritmo de Força Bruta
- Algoritmo de Boyer-Moore
- Tries
- Algoritmo de Força Bruta
- Algoritmo de Programação Dinâmica
- Busca de Padrões em Texto
- Maior Subsequência Comum
- 4. Algoritmos de Ordenação
- Bubble Sort
- Selection Sort
- Insertion Sort
- Merge Sort
- Quick Sort
- Counting Sort
- Radix Sort
- Bucket Sort
- Métodos de Ordenação
- Métodos de Ordenação de Complexidade Linear
- 5. Algoritmos em Grafos
- Algoritmo de Kahn;
- Algoritmo baseado na busca em profundidade;
- Algoritmo de Kosaraju;
- Algoritmo de Tarjan;
- Algoritmo de Prim;
- Algoritmo de Kruskal;
- Algoritmo de Dijkstra;
- Busca em Profundidade e Busca Largura;
- Ordenação Topológica;
- Componentes Fortemente Conectados;
- Árvores Geradoras Mínimas;
- Distâncias Mínimas;
Bibliografia Principal:
Cormen, Leiserson, Rivest e Stein. Algoritmos – Teoria e Prática, 2ª. Edição, Editora Campus, 2002.
Halim e Halim. Competitive Programming, 3rd Edition, 2003.
Levitin. Introduction to the Design and Analysis of Algorithms, 3rd Edition, 2011.