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 - Métodos 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: 12/09/2016)
- Lista de Exercícios 02 - Força Bruta (Data de Entrega: 19/09/2016)
- Lista de Exercícios 03 - Divisão e Conquista (Data de Entrega: 26/09/2016)
- Lista de Exercícios 04 - Método Guloso (Data de Entrega: 03/10/2016)
- Lista de Exercícios 05 - Programação Dinâmica (Data de Entrega: 10/10/2016)
- Lista de Exercícios 06 - Busca de Padrões em Texto (Data de Entrega: 13/10/2016)
- Lista de Exercícios 07 - Tries (Data de Entrega: 21/10/2016)
- Lista de Exercícios 08 - Maior Subsequência Comum (LCS) (Data de Entrega: 24/10/2016)
- Lista de Exercícios 09 - Revisão P1
- Lista de Exercícios 10 - Algoritmos de Ordenação (Data de Entrega: 07/11/2016)
- Lista de Exercícios 11 - Métodos de Ordenação de Complexidade Linear (Data de Entrega: 14/11/2016)
- Lista de Exercícios 12 - Busca em Profundidade e Busca em Largura (Data de Entrega: 21/11/2016)
- Lista de Exercícios 13 - Ordenação Topológica (Data de Entrega: 28/11/2016)
- Lista de Exercícios 14 - Componentes Fortemente Conectados (Data de Entrega: 05/12/2016)
- Lista de Exercícios 15 - Distâncias Mínimas (Data de Entrega: 11/12/2016)
- Lista de Exercícios 16 - Revisão P2
Exercícios Extras:
Códigos:
Datas Importantes:
- 20/10: Prova Teórica (P1) sobre complexidade de algoritmos, técnicas de projeto de algoritmos e algoritmos de processamento de texto;
- 12/12: Prova Teórica (P2) sobre algoritmos de ordenação e algoritmos em grafos;
- 19/12: Prova Final (PF) envolvendo todo o conteúdo do curso;
Notas:
- Notas (Atualizado em: 19/12 às 14h)
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
- Busca de Padrões em Texto
- Algoritmo de Força Bruta
- Algoritmo de Boyer-Moore
- Tries
- Maior Subsequência Comum
- Algoritmo de Força Bruta
- Algoritmo de Programação Dinâmica
- 4. Algoritmos de Ordenação
- Métodos de Ordenação
- Bubble Sort
- Selection Sort
- Insertion Sort
- Merge Sort
- Quick Sort
- Métodos de Ordenação de Complexidade Linear
- Counting Sort
- Radix Sort
- Bucket Sort
- 5. Algoritmos em Grafos
- Busca em Profundidade e Busca Largura;
- Ordenação Topológica;
- Algoritmo de Kahn;
- Algoritmo baseado na busca em profundidade;
- Componentes Fortemente Conectados;
- Algoritmo de Kosaraju;
- Algoritmo de Tarjan;
- Árvores Geradoras Mínimas;
- Algoritmo de Prim;
- Algoritmo de Kruskal;
- Distâncias Mínimas;
- Algoritmo de Dijkstra;
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.