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. Além disso, como esta é a primeira vez em que eu ministro esta disciplina, e como eu estou tomando como referência a disciplina ministrada pelo professor Rudini, eu sugiro que você, caso deseje, consulte a página da disciplina dele 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 é participar das aulas, estudar o conteúdo, fazer os exercícios e tirar as dúvidas no tempo certo, isto é, aula-a-aula. 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:

Este livro cobre em detalhes a teoria da complexidade:

Outros livros relacionados ao assunto da disciplina:


Plano de atividades

Abaixo está o plano para as atividades da disciplina, mas atenção: trata-se apenas de uma estimativa. Como esta é a primeira vez em que eu ministro esta disciplina, o que de fato realizaremos pode ser consideravelmente diferente.

# Data Descrição
1 28/07 Apresentação da disciplina; Ordenação por seleção.
2 30/07 Ordenação por inserção; Busca linear (tempo; correção parcial).
3 01/08 Busca linear: correção total.
4 04/08 Busca binária: correção e tempo de execução.
5 06/08 Notação assintótica.
6 08/08 Notação assintótica. Complexidade de algoritmos recursivos.
11/08 Recesso Escolar - Dia do Estudante
7 13/08 Resolução de Recorrências: árvores de recursão, método da substituição.
15/08 Feriado Municipal - Dia de N.S. Assunção
8 18/08 Resolução de Recorrências: casos não-triviais.
9 20/08 Resolução de Recorrências: casos não-triviais; teorema Mestre.
10 22/08 Divisão e Conquista – Algoritmo MergeSort.
11 25/08 Algoritmo HeapSort
12 27/08 Algoritmo Quick Sort
13 29/08 Algoritmos de seleção do k-ésimo mínimo: Hoare, O(n²), e Blum et al., O(n).
14 01/09 Limite Ω(n*lg n) para ordenação por comparações; "counting sort".
15 03/09 Radix sort; Torres de Hanói.
16 05/09 Multiplicação de inteiros grandes (Karatsuba) e matrizes (Strassen).
17 08/09 Exercícios
18 10/09 AP1 – 1ª parte. (correção e tempo de execução; ordenação; divisão-e-conquista)
19 12/09 AP1 – 2ª parte. (correção e tempo de execução; ordenação; divisão-e-conquista)
20 15/09 Programação Dinâmica: Fibonacci; Linha de montagem
21 17/09 Programação Dinâmica: Multiplicação de sequências de matrizes
22 19/09 Programação Dinâmica: Problema da mochila 0-1
23 22/09 Programação Dinâmica: Subsequência comum máxima
24 24/09 Programação Dinâmica: Árvores de busca ótimas
25 26/09 Programação Dinâmica: Subestrutura ótima; Algoritmo de Floyd-Warshall.
26 29/09 Algoritmos Gulosos: Seleção de Atividades
27 01/10 Algoritmos Gulosos: Escalonamento de tarefas
28 03/10 Algoritmos Gulosos: Escalonamento de tarefas
29 06/10 Algoritmos Gulosos: Códigos de Huffman
30 08/10 Algoritmos Gulosos: Algoritmo de Kruskal
31 10/10 Algoritmos Gulosos: Algoritmo de Dijkstra
32 13/10 Exercícios; Problema do corte de haste.
15/10 Recesso Escolar - Dia do Professor
33 17/10 AP2 – 1ª parte (Programação Dinâmica).
34 20/10 AP2 – 2ª parte (Programação Dinâmica e Algoritmos Gulosos)
22/10 Encontros Universitários 2014
24/10 Encontros Universitários 2014
27/10 Recesso referente ao Dia do Servidor Público (antecipado)
35 29/10 Classes de Complexidade de Problemas: Introdução; Classe P.
31/10 Sem aula – SEMI 2014 (DEMA)
36 03/11 Classe P e Aceitação Polinomial; Decisão versus Verificação.
37 05/11 Classe NP
38 07/11 Classe NP-Completa
39 10/11 NP-Completude: Satisfatibilidade de Circuitos; Satisfatibilidade de Fórmulas (SAT).
40 12/11 NP-Completude: 3-SAT.
41 14/11 NP-Completude: Clique; Cobertura por vértices; Caminho hamiltoniano.
42 17/11 NP-Completude: Caixeiro viajante; Soma de subconjunto.
43 19/11 Problemas mecanicamente insolúveis; Exercícios.
21/11 Sem atividade.
44 24/11 AP3 – 1ª parte (Classes de complexidade de problemas, reduções polinomiais)
45 26/11 AP3 – 2ª parte (Classes de complexidade de problemas, reduções polinomiais)
46 28/11 Revisão para a AF
47 01/12 AF – 1ª parte.
48 03/12 AF – 2ª parte.

Aulas: conteúdos e exercícios