UFC - Bacharelado em Ciência da Computação

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


Plano de Aula:
Aulas Assunto
1 Introdução: Ordenação por Inserção (análise de tempo e correção)
2 Introdução: Ordenação por Inserção (pior caso e melhor caso)
3 Complexidade de Tempo (algoritmos recursivos: Torre de Hanoi)
4 Notação Assintótica
5 Divisão e Conquista (Algoritmo MergeSort)
6 Resolução de Recorrências: Árvore de Recursão
7 Resolução de Recorrências: Teorema Mestre
8 Algoritmo HeapSort
9 Algoritmo Quick Sort
10 Algoritmo Quick Sort - Análise de pior caso e caso médio
11 Limite inferior para ordenação e algoritmos lineares (pdf)
12 Outros algoritmos de divisão e conquista
13 Exercícios
14 Revisão para a Prova
15 1o prova (notação assintótica, recorrências, ordenação, divisão e conquista)
16 Correção de exercícios
17 Programação Dinâmica: Fibonacci e Linha de Montagem
18 Programação Dinâmica: Subestrutura Ótima
19 Programação Dinâmica: Subsequência crescente máxima
20 Programação Dinâmica: Multiplicação de sequências de matrizes
21 Programação Dinâmica: Algoritmo de Floyd
22 Algoritmos Gulosos: Seleção de Atividades e Escalonamento de tarefas
23 Algoritmos Gulosos: Códigos de Huffman e outros problemas
24 Algoritmos Gulosos: Algoritmos de Prim e Kruskal
25 Algoritmos Gulosos: Algoritmos de Dijkstra e Bellman-Ford
26 Exercícios
27 Exercícios
28 Revisão para prova
29 2o prova (programação dinâmica e algoritmos gulosos)
30 Classes de Complexidade de Tempo: Introdução
31 Classes P e NP
32 Classes P e NP
33 Redução Polinomial: SAT, 3-SAT e CLIQUE
34 Classe NP-Completa
35 NP-Completude: Clique maxima e Cobertura maxima de vértices
36 NP-Completude: Caminho hamiltoniano
37 NP-Completo: Soma de subconjunto
38 Problemas NP-Difíceis e problemas intratáveis
39 Exercícios
40 Revisão para a prova
41 3o prova (Classes de complexidade de tempo, reduções polinomiais)
42 Exercícios
43 Exercícios
44 Exercícios
avaliação final AF