MC458 - Projeto e Análise de Algoritmos I

Segundo semestre de 2021

Prof. Orlando Lee




Conteúdo desta página



Avisos importantes



Horário das aulas e atendimento



Objetivos

O que será visto no curso:
  1. Análise assintótica de complexidade de algorimos
  2. Projeto de algoritmos eficientes e elegantes para vários problemas computacionais básicos
  3. Natureza recursiva de vários problemas e como explorá-la para projetar algoritmos eficientes
  4. Vários algoritmos e técnicas para problemas de natureza computacional


Programa da disciplina

Abaixo seguem os tópicos que serão cobertos e sugestões para leitura. [CLRS] é a referência [1] e [Manber] é a referência [4].


Listas de Exercícios

Abaixo estão várias listas de exercícios. Elas foram compiladas pelo professor Pedro Rezende e acrescentei alguns. Além de servir para maior fixação do material apresentado em classe, o conteúdo dos exercícios é considerado parte integrante do material visto e tratado como parte coberta da matéria. A entrega deles não será cobrada. Entretanto, para o bom aprendizado da disciplina é necessário que cada aluno tente fazer individualmente os exercícios e só depois discutir em grupo. Dúvidas ou dificuldades devem ser discutidas com o docente ou o PED/PAD.

  1. Lista 1 [Básico]([CLRS] Capítulo 1): Exercícios 1.2-2, 1.2-3; Problema 1-1.
  2. Lista 2 [Básico]([CLRS] Capítulo 2): Exercícios 2.1-3, 2.1-4, 2.2-2, 2.2-3, 2.3-3, 2.3-5, 2.3-6, 2.3-7; Problema 2-1.
  3. Lista 3 [Notação assintótica, crescimento de funções] ([CLRS] Capítulo 3): Exercícios 3.1-1, 3.1-2, 3.1-3, 3.1-4, 3.1-6, 3.1-7, 3.1-8, 3.2-3; Problemas 3-1, 3-2, 3-3, 3-4.
  4. Lista 4 [Indução] ([Manber] Capítulo 2): Exercícios 2.1, 2.4, 2.7, 2.9, 2.12, 2.14, 2.15 (substituindo, no enunciado, o número 81 por 49), 2.18 (substituindo, no enunciado, a palavra cycle por circle), 2.19, 2.21. Extra (faça pelo menos a 11 e a 12).
  5. Lista 5 [Recorrências] ([CLRS] Capítulo 4): Exercícios 4.1-2, 4.1-5, 4.2-2, 4.2-4, 4.2-5, 4.3-1, 4.3-2, 4.3-4, 4.3-5, 4.4-2; Problemas 4-1, 4-3 b., 4-4 a., c., d., e., f., h., i..
  6. Lista 6 [Projeto de algoritmos por indução] ([Manber] Capítulo 5): Exercícios 5.6, 5.12, 5.14, 5.15, 5.25a.
  7. Lista 7 [Ordenação] ([Manber] Capítulo 6): Exercícios 6.14, 6.22, 6.23, 6.24, 6.25, 6.29.
  8. Lista 8 [Heapsort] ([CLRS] Capítulo 6): Exercícios 6.1-4, 6.1-5, 6.2-1, 6.2-2, 6.2-3, 6.2-4, 6.2-6, 6.4-3, 6.4-4, 6.4-5, 6.5-8.
  9. Lista 9 [Quicksort] ([CLRS] Capítulo 7): Exercícios 7.2-2, 7.2-3; Problemas 7-3, 7-4.
  10. Lista 10 [Ordenação] ([Manber] Capítulo 6): Exercícios 6.11, 6.21 6.34.
  11. Lista 11 [Ordenação em tempo linear] ([CLRS] Capítulo 8): Exercícios 8.1-1, 8.1-2, 8.2-1, 8.2-2, 8.2-3, 8.2-4, 8.3-1, 8.3-3, 8.3-4, 8.4-1, 8.4-2; Problemas: 8-2, 8-3a, 8-6.
  12. Lista 12 [Estatísticas de ordem] ([CLRS] Capítulo 9): Exercícios 9.2-4, Problemas: 9-1a.,b,c;
  13. Lista 13 [Estatísticas de ordem] ([CLRS] Capítulo 9): Exercícios 9.1-1, 9.3-3, 9.3-5, 9.3-7, 9.3-8, 9.3-9.
  14. Lista 14 [Programação dinâmica] ([CLRS] Capítulo 15): Exercícios 15.2-1, 15.2-2, 15.2-3, 15.3-2, 15.3-3, 15.3-5, 15.4-1, 15.4-2, 15.4-3, 15.4-4, 15.4-5, 15.4-6, 15.5-1, 15.5-2, 15.5-3; Problemas: 15-4, 15-6, 15-7. Extra
  15. Lista 15 [Algoritmos gulosos] ([CLRS] Capítulo 16): Exercícios 16.1-1, 16.1-2, 16.1-3, 16.1-5 , 16.1-4, 16.2-3,16.2-4, 16.2-5, 16.3-1, 16.3-4, 16.3-7, 16.3-8; Problemas: 16-1. Aula


Material didático

O material didático (slides) que será usado neste curso foi preparado pelo professor Cid Carvalho de Souza e por Cândida Nunes da Silva. O material que disponibilizarei aqui foi baseado no deles com algumas adaptações, modificações e erros introduzidos por mim.

Deixo claro que o material serve principalmente como guia e de nenhum modo deve ser usado como única fonte de estudos. Para isso, deve-se consultar a bibliografia.

O material será disponibilizado na página do Google Classroom.


Referências Bibliográficas

Os livros-texto do curso são as referências [1] (ou [2]) e [4] (na parte de projeto de algoritmos por indução).