Unicamp logo Institute of Computing - logo

MC458 - Projeto e Análise de Algoritmos I

Instrutor: Joao Meidanis, meidanis at unicamp dot br

Segundas, 19:00-21:00. Quartas, 21:00-23:00. Horário

Segundo Semestre, 2023

Visão Geral

Esta é a primeira disicplina de análise de algoritmos de seu curso de computação. Aqui estudaremos quatro grande tópicos:

  • Noções básicas de como estimar tempo de processamento e calcular somatórias;
  • Como projetar algoritmos usando indução;
  • Algoritmos básicos de ordenação, busca e correlatos;
  • Algoritmos que usam programação dinâmica e algoritmos gulosos.

Atendimento e monitores

Para falar com o instrutor, é só marcar um horário através de email. Os monitores estarão disponíveis para tirar dúvidas e resolver exercícios nos seguintes horários:

Quartas-feiras, 18:00 - 19:00, sala 55 do IC-02

Programa


MC458A Projeto e Análise de Algoritmos I 2023 2o. Semestre


PROGRAMAÇÃO PRELIMINAR
Última edição: 2023-11-03





Dia Data Atividade Referência Exercícios
seg 31/jul Introdução

qua 02/ago Conceitos de análise de algoritmos Cormen 1.2-2, 1.2-3, 1-1, 2.1-3, 2.1-4, 2.2-2, 2-1
seg 07/ago Mergesort; Teste Cormen 2.2-3, 2.3-3, 2.3-5, 2.3-6, 2.3-7
qua 09/ago Crescimento de funções Cormen 3.1-3, 3.1-4, 3-1a, 3-2, 3-3, 3-4
seg 14/ago SECOMP

qua 16/ago SECOMP

seg 21/ago Ferramenta: diferenças finitas Milne p.135.5, p282.1 a 4, p290.1,2,3,6
qua 23/ago Ferramenta: recorrências; Teste Cormen p291.9,10,13, 4.1-2, 4.1-5, 4.2-2, 4.2-4, 4.2-5
seg 28/ago Ferramenta: Teorema Mestre Cormen 4.3-1, 4.3-2, 4.3-4, 4.3-5, 4-1, 4-3(b), 4-4
qua 30/ago Prova

seg 04/set Entendendo indução Ferreira 2.1, 2.4, 2.7, 2.9
qua 06/set Polinômios; ordenação topológica Manber 2.12, 2.15, 2.18
seg 11/set Função 1-1; Teste Manber 2.19, 2.21
qua 13/set Celebridade Manber 5.6, 5.12, 5.14, 5.15
seg 18/set Emparelhamento Manber 5.25(a), 6.14, 6.21
qua 20/set Viés de árvore binária; Teste Manber 6.22, 6.23
seg 25/set Par mais próximo Manber 6.24, 6.25
qua 27/set Prova

seg 02/out Mergesort; Heapsort Cormen, Manber 6.1-4, 6.1-5, 6.2-1, 6.2-2, 6.2-3, 6.34
qua 04/out Heapsort Cormen, Manber 6.2-4, 6.2-6, 6.4-3, 6.4-4, 6.4-5, 6.11, 6.29
seg 09/out Greve

qua 11/out Greve

seg 16/out Greve

qua 18/out Greve

seg 23/out Greve

qua 25/out Greve

seg 30/out Quicksort; Lower bound Cormen 7.2-2, 7.2-3, 8.1-1
qua 01/nov Counting sort; Radix sort Cormen 8.2-1, 8.2-4, 8.3-3
seg 06/nov Bucketsort; Máximo e mínimo; Teste online Cormen 8.4-1, 8.4-2, 8-3(a), 9.1-1
qua 08/nov Mediana e k-ésimo em tempo linear Cormen 9.3-3, 9.3-5, 9.3-7, 9.3-8, 9.3-9, 9-1
seg 13/nov Subsequência mais longa; Teste online Cormen 15.4-1, 15.4-2, 15.4-3, 15.4-4, 15.4-5, 15.4-6
qua 15/nov Feriado; Aula gravada: Mochila; Huffman Cormen 16.2-4, 16.2-5, 16.3-1
seg 20/nov Feriado; Aula gravada: Produto de matrizes Cormen 15.2-1, 15.2-2, 15.2-3
qua 22/nov Prova

seg 27/nov Árvore binária de busca ótima; Teste online Cormen 15.5-1, 15.5-2, 15.5-3
qua 29/nov Seleção de atividades Cormen 16.2-3
seg 04/dez Coloração de intervalos; Teste online

qua 06/dez Prova

seg 11/dez


qua 13/dez Exame

Avaliação

Haverá quatro Provas (P1, P2, P3 e P4) nas datas indicadas no programa. Cada Prova será em classe, nos horários normais de aula, sem exceção, terá duração de 100 minutos e receberá nota entre 0,0 e 10,0.

Haverá oito Testes (T1, T2, T3, T4, T5, T6, T7, T8), também em classe, na segunda metade da aula, aos quais serão atribuídas notas também entre 0,0 e 10,0. Excepcionalmente, em função de disrupções imprevisíveis no andamento do semestre, alguns testes poderão ser feitos remotamente.

Não serão ministrados provas ou testes antecipados nem substitutivos.

A Média dos Testes (MT) será a média aritmética

MT := (T1 + T2 + T3 + T4 + T5 + T6 + T7 + T8) / 8.

A Média das Provas (MP) será a média ponderada

MP := (1xP1 + 2xP2 + 2xP3 + 4xP4) / 9.

A Média Semestral (MS) será calculada da seguinte forma:

Se min { MT; MP } ≥ 5,0
então MS := (MT + 4 MP) / 5
senão MS := min { 4,9; (MT + 4 MP) / 5 }

A Média Final (MF) será calculada da seguinte forma:

Se 2,5 ≤ MS < 5,0
então MF := (MS + E) / 2
senão MF := MS
onde E é a nota obtida pelo aluno no Exame Final.

Um aluno com 2,5 ≤ MS < 5,0 poderá tomar o Exame Final; se não o fizer, vamos adotar E = 0 na fórmula acima; alunos com MS < 2,5 ou com MS ≥ 5,0 não poderão fazer o Exame Final.

Serão aprovados os alunos que obtiverem Média Final (MF) maior que ou igual a 5,0; os demais serão reprovados.

Os testes serão realizados em sala de aula, na segunda metade da aula, e consistirão de um ou mais exercícios para serem feitos em dupla (excepcionalmente poderá haver uma tripla na classe) e entregues até o final da aula.

Fraude

Qualquer tentativa de fraude neste curso implicará nota igual a zero para todos os envolvidos, com possível sanções adicionais, conforme julgado necessário pela administração da universidade.

Referências bibliográficas

B. Obama. Campanha na sede do Google. Mountain View, 2009. Conhecer algoritmos pode ajudar na hora de uma entrevista. Veja como uma pessoa que não é da área, com um pouco de conhecimento sobre bubble-sort, conseguiu angariar votos importantes para chegar à presidência de uma grande nação.

A. K. Agassi. Open: An Autobiography. Vintage Books, 2010. Andre Agassi odiava tênis e mesmo assim foi um dos maiores tenistas de todos os tempos. Se você detesta teoria, ainda assim pode se dar bem nesta matéria. Leia o livro para ver como ele fez.

Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest e Clifford Stein. Introduction to Algorithms (2nd edition). The MIT Press, 2001.

W. E. Milne. Cálculo numérico (2a edição). Polígono, 1968.

J. Ferreira. Induzindo a um bom entendimento do Princípio da Indução Finita. VI Encontro Capixaba de Educação Matemática, 2002.

U. Manber. Using induction to design algorithms. Communications of the ACM, 31(11) 1300-1313, 1988.

U. Manber. Introduction to Algorithms: A Creative Approach. Addison-Wesley, 1989.

J. Kleinberg e E. Tardos. Algorithm design. Pearson/Addison-Wesley, 2006.

G. Brassard e P. Bratley. Algorithmics: theory and practice. Prentice-Hall, 1995.

A. Aho, J. Hopcroft e J. Ullman. The Design and Analysis of Computer Algorithms. Addison-Wesley, 1975.

N. Ziviani. Projeto de Algoritmos (2a edição). Thomson, 2004.

J. Szwarcfiter e L. Markenson. Estruturas de Dados e seus Algoritmos. LTC Editora, 1994.

Créditos

algorithm Icon By Yuri Mazursky, RU, from Noun Project.