CI1165 - Análise de Algoritmos

2º semestre - 2023


Bibliografia

  1. Introduction to Algorithms, Cormen, Leiserson, Rivest e Stein (CLRS)
  2. Algorithm Design, Kleinberg e Tardos (KT)
  3. Algorithms, Dasgupta, Papadimitriou e Vazirani (DPV)
  4. Probability and Computing, Mitzenmacher e Upfal (MU)

Avaliação

provas de pesos iguais

como ir bem nesta disciplina?

Material Extra

Aulas


DATA TÍTULO AULAS SLIDES VIDEOS ASSUNTOS EXERCÍCIOS REF. BIB.
09/ago Introdução (slides) (a) Motivação. Formas simplistas de análise. (exercicios) CLRS - Cap. 1
(b) Análise simples do SelectionSort.
(c) Limitações de análise experimental. Problemas Computacionais. Computação ≠ tecnologia.
(d) Abordagem de pior caso. Tamanho de instâncias. Modelos Computacionais.
11/ago Corretude de Algoritmos Recursivos (aula) (slides) (a) Visão Geral. Testes experimentais X prova de corretude. Corretude recursiva: ideia. (exercicios)
(b) Exemplo: Fibonacci.
(c) Exemplo: máximo de vetor.
(d) Exemplo: multiplicação.
16/ago Corretude de Algoritmos Iterativos (aula) (slides) (a) Corretude iterativa: passo-a-passo. (exercicios)
(b) Exemplo: Fibonacci.
(c) Exemplo: multiplicação.
18/ago Complexidade de Tempo (Ingênua) de Algoritmo Iterativos (aula) (slides) (a) InsertionSort e complexidade de tempo. (exercicios) CLRS - 2.1 e 2.2
(b) InsertionSort: contagem das instruções básicas.
(c) InsertionSort: melhor caso.
(d) InsertionSort: pior caso.
(e) Complexidade assintótica: intuição.
30/ago Notação Assintótica (1/3) (aula) (slides) (exercicios) CLRS - 3.1 e KT - 2.2
01/set Notação Assintótica (2/3) (aula) (slides) (exercicios) CLRS - 3.1 e KT - 2.2
06/set Notação Assintótica (3/3) (aula) (slides) (exercicios) CLRS - 3.1 e KT - 2.2
13/set Complexidade de Tempo de Algoritmos Iterativos (aula) (slides) (a) Tempo de Execução: definição. Análise justa (apertada). (exercicios)
(b) Regras de simplificação. Truques. Observações e pegadinhas.
22/set Complexidade de Tempo de Algoritmos Recursivos (aula) (slides) (a) Algoritmo Intercala (Merge) (exercicios) CLRS - 2.3
(b) MergeSort.
27/set Algoritmos Recursivos e Relações de Recorrência (aula) (slides) (a) Extraindo recorrências: passo-a-passo. (exercicios) CLRS - 2.3
(b) Extraindo recorrências: exemplos.
(c) Multiplicação: extraindo, "resolvendo" e provando a recorrência.
29/set Recorrências: Provando Soluções (aula) (slides) (a) Visão geral. Exemplo de prova. (exercicios) CLRS - 4.3
(b) Base da indução e notação assintótica.
(c) Encontrando as constantes. Limitantes folgados e possíveis erros.
(d) Chutando soluções. Sutilezas da prova por indução.
04/out Resolvendo Recorrências: Método da Iteração (aula) (slides) (a) Método da Iteração. Solução de recorrências exatas X assintóticas. (exercicios) CLRS - 4.4
(b) Método da Iteração: exemplo.
(c) Método da Iteração: exemplo.
(d) Removendo pisos e tetos. Provando o "chute" encontrado.
06/out Resolvendo Recorrências: Método da Árvore de Recorrência (aula) (slides) (a) Ideia do método. Exemplo de aplicação. (exercicios) CLRS - 4.5
(b) Provando a solução. Recorrências e notação assintótica.
11/out Divisão e Conquista: Algoritmo de Karatsuba e Teorema Mestre (aula) (slides) (a) Algoritmo recursivo para multiplicação. (exercicios) DPV - 2.1 e KT - 5.5
(b) Análise de algoritmo e o Teorema Mestre.
(c) O algoritmo de Karatsuba e sua análise de complexidade.
25/out Algoritmos Aleatorizados: Corretude (aula) (slides) (a) Problema: equivalência de polinômios. (exercicios) MU - 1.1 e 1.2, KT - 13.1
(b) Equivalência de polinômios: erro e análise informal.
(c) Axiomas de Probabilidade.
(d) Limitante da União, Princípio da Inclusão-Exclusão, Independência.
(e) Algoritmo VP: diminuindo a probabilidade de erro.
(f) Gerador de Congruência Linear.
27/out Algoritmos Aleatorizados: Complexidade de Tempo (aula) (slides) (a) Variáveis Aleatórias. (exercicios) MU - 2.1, KT - 13.3
(b) Esperança, Linearidade da esperança.
(c) Exemplo: esperando o primeiro sucesso.
(d) Exemplo: adivinhando cartas.
(e) Exemplo: colecionador de cupons.
(f) Tempo de execução de algoritmos aleatorizados.
01/nov QuickSort: Melhor e Pior Caso (aula) (slides) (a) QuickSort: algoritmo. (exercicios) CLRS - 7.1, 7.2, 7.4
(b) QuickSort: análise.
08/nov QuickSort: Versão Aleatorizada (aula) (slides) (a) Caso Médio e Aleatorizado. QuickSort Aleatorizado. (exercicios) CLRS - 7.2, 7.3, 7.4
(b) Análise (pt. 1).
(c) Análise (pt. 2).
10/nov Limitante Inferior para Ordenação (aula) (slides) CLRS 4.2 e DPV - 2.5
17/nov BucketSort (aula) (slides) (exercicios) CLRS 4.2 e DPV - 2.5
22/nov Seleção Aleatorizada (aula) (slides) (exercicios) CLRS 4.2 e DPV - 2.5