Construção e Análise de Algoritmos (CAnA)


Informações Gerais

Caro aluno, na regulamentação desta disciplina você pode acessar informações básicas sobre ela, incluindo objetivos e ementa. Você também pode consultar a página da disciplina do professor Rudini para encontrar materiais adicionais, incluindo listas de exercícios e referências para páginas de outros professores.

A minha sugestão para a obtenção de um bom desempenho na disciplina é, aula-a-aula, participar das aulas, estudar o conteúdo, fazer os exercícios e tirar as dúvidas. Caso você possua uma dúvida no horário da aula, o ideal é tirá-la na própria ocasião, para que os demais alunos também se beneficiem das explicações. Entretanto, caso necessário, você também pode me contactar fora do horário de aula.


Avisos


Regras


Bibliografia

O livro-texto da disciplina é este:

Este livro também cobre o conteúdo da disciplina:

Estes livros cobrem em detalhes a teoria da complexidade:

Outros livros sobre projeto e análise de algoritmos:


Plano de Atividades

Aula Data Descrição
1 20/02 Apresentação da Disciplina; Correção de Algoritmos com Seleção e Repetição.
2 23/02 Correção Parcial; Uso e Prova de Invariantes de Laço.
3 25/02 Correção Total; Variantes de laço.
4 27/02 Laboratório: Verificação de Programas em C.
5 02/03 Tempo de Execução de Algoritmos; Notação Assintótica.
6 04/03 Notação Assintótica; Complexidade de Algoritmos Recursivos.
06/03 Sem aula (Reunião do Colegiado do Departamento de Computação).
7 09/03 Resolução de Recorrências: Árvores de Recursão; Método da Substituição.
8 11/03 Resolução de Recorrências: casos não-triviais.
9 13/03 Resolução de Recorrências: casos não-triviais; Teorema Mestre.
10 16/03 Exercícios
18/03 AP1 – 1ª parte: correção e tempo de execução de algoritmos.
20/03 Sem aula (imprevisto com o professor).
11 23/03 Ordenação; Algoritmo HeapSort.
25/03 Feriado Estadual – Data Magna do Ceará.
12 27/03 Divisão e Conquista; Algoritmo MergeSort.
13 30/03 Algoritmo Quick Sort.
14 01/04 Algoritmos de Seleção do k-ésimo Mínimo: Hoare, O(n²), e Blum et al., O(n).
03/04 Feriado Nacional – Sexta Feira da Paixão.
15 06/04 Algoritmo de Seleção O(n) de Blum et al..
16 08/04 Multiplicação de Inteiros Grandes (Karatsuba) e Matrizes (Strassen).
10/04 Sem aula (Reunião DC) / Tarefa de implementação (Seleção em tempo linear).
17 13/04 Limite Ω(n*lg n) para Ordenação por Comparações; "Counting Sort".
18 15/04 Radix Sort
19 17/04 Exercícios
20 20/04 Programação Dinâmica: Fibonacci; Linha de Montagem.
22/04 AP1 – 2ª parte: Ordenação; Divisão e Conquista.
21 24/04 Programação Dinâmica: Corte de Haste.
22 27/04 Programação Dinâmica: Multiplicação de Sequências de Matrizes.
23 29/04 Programação Dinâmica: Problema da Mochila 0-1.
01/05 Feriado Nacional – Dia do Trabalho.
24 04/05 Programação Dinâmica: Subsequência Comum Máxima.
25 06/05 Programação Dinâmica: Árvores de Busca Ótimas; Aplicabilidade da Programação Dinâmica.
08/05 Sem aula (Reunião DC) / Tarefa de Implementação (Estrutura de Dados para Conjuntos Disjuntos).
26 11/05 Programação Dinâmica: Subestrutura Ótima; Algoritmo de Floyd-Warshall; Exercícios
27 13/05 Algoritmos Gulosos: Seleção de Atividades.
28 15/05 Algoritmos Gulosos: Escalonamento de Tarefas.
29 16/05 AULA EXTRA (SÁBADO): Exercícios.
30 18/05 Algoritmos Gulosos: Algoritmo de Kruskal.
20/05 AP2 – 1ª parte: Programação Dinâmica.
31 22/05 Algoritmos Gulosos: Algoritmo de Dijkstra.
32 25/05 Algoritmos Gulosos: Códigos de Huffman.
33 27/05 Exercícios
34 29/05 Classes de Complexidade de Problemas: Introdução; Classe P.
01/06 AP2 – 2ª parte: Algoritmos Gulosos.
03/06 Sem aula (professor adoentado).
35 05/06 Classe P e Aceitação Polinomial.
36 08/06 Classe NP.
37 10/06 Classe NP-Completa; Satisfatibilidade de Circuitos (SAT-CIRCUITOS).
38 12/06 Satisfatibilidade de Fórmulas (SAT).
39 15/06 Satisfatibilidade de Fórmulas em 3-CNF (3-SAT).
40 17/06 Clique e Conjunto Independente.
19/06 Sem aula (Reunião DC)
41 20/06 AULA EXTRA (SÁBADO): Cobertura por Vértices; Soma de Subconjunto; Exercícios.
22/06 AP3 – 1ª parte: Classes de Complexidade de Problemas; Reduções Polinomiais.
42 24/06 Problemas Mecanicamente Insolúveis; Exercícios.
26/06 AP3 – 2ª parte: Classes de Complexidade de Problemas; Reduções Polinomiais.
29/06 Notas AP3; Situação AF.
01/07 AF – 1ª parte.
03/07 AF – 2ª parte.
06/07 Resultado final da disciplina.

Aulas: Conteúdos e Exercícios