MO417

Top
Up


MO417 - Complexidade de Algoritmos I

Prof. Pedro J. de Rezende
Segundo Semestre de 2012

Novidades Recentes

  • Aqui serão colocados avisos importantes. Consulte esta página regularmente.
  • As notas da P2 e os Conceitos Finais estão disponíveis. [20121116] New
  • As notas da P1 estão disponíveis. [20120923]
  • Os Slides das aulas serão colocados online a cada semana. Veja links na tabela de Tópicos abaixo. [20120804]
  • Várias listas de exercícios já estão disponíveis. Pode começar a trabalhar neles. [20120804]
  • A seção "Material Didático" reflete da melhor forma possível o que estudar, onde estudar e quais listas de exercícios correspondem a que tópicos. [20120804]
  • Observe cuidadosamente o calendário de atividades (aulas e provas) abaixo. [20120804]
  • Nos dias de provas, cheguem à sala de aula às 15:50 para que a prova possa ser iniciada pontualmente às 16:00 hs. pois ela não poderá ser estendida além de 18:00 hs. Peço que a distribuição de alunos pela sala seja antecipadamente preparada de modo a maximizar a distância mínima entre pares de alunos. [20120804]
  • Se, erroneamente, você está com a impressão de que classes de complexidade é um tema simples que será esgotado nesta disciplina, não deixe de consultar Important Complexity Classes ou melhor ainda Complexity Zoo e também Compendium [20120801]
  • Procure conseguir um exemplar dos livros recomentados desde a primeira semana de aulas. [20120801]

Docente

Aulas e Atendimento pelo professor

  • As aulas serão às segundas quartas-feiras 16h00-18h00, na sala IC-322.
  • Horários de atendimento:
    • o professor atenderá :
      • na sala de aulas, logo após as aulas, sempre que a aula terminar antes de 18h00;
      • na sala IC-29, às segundas-feiras de 18h05 às 19h00.
  • O atendimento imediatamente anterior a cada prova fica, desde já, revogado! I.é., procurem estudar com antecedência para as avaliações.

  Tópicos a serem cobertos
A Ementa da disciplina consiste dos seguintes tópicos:

  • Modelos de computação e ferramentas/notação para análise de algoritmos.
  • Indução matemática e projeto de algoritmos.
  • Algoritmos gulosos.
  • Programação dinâmica.
  • Divisão e conquista.
  • Algoritmos para ordenação e seleção.
  • Algoritmos para problemas básicos em grafos.
  • Reduções e NP-completude.

Listas de Exercícios

Listas de exercícios serão atribuídas ao longo do semestre. 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 será assumido como parte da matéria coberta. Como as listas não farão parte da avaliação, suas soluções não serão coletadas. Os alunos são encorajados a resolver todos os exercícios individualmente e, só posteriormente, realizar discussão em grupo. Quaisquer dificuldades devem ser prontamente discutidas com o Professor nos horários de atendimentos. Dúvidas não sanadas geram mais dúvidas.

Material Didático: Slides das Aulas, Recomendações de Leitura e Listas de Exercícios

É imperativo ressaltar que não se estuda pelos slides! Eles devem servir apenas como um guia de estudo para orientar na identificações dos tópicos dos livros textos que devem ser profundamente estudados.

Note que nem tudo o que está contido nesses slides foi visto em classe, mas também há tópicos vistos em classe que não estão contido nesses slides (podemos usar lousa!). Portanto, compareça às aulas, guie-se por suas anotações e por esses slides, mas estude pelos livros recomendados. ([1], [2] e [3] indicam o primeiro (Cormen), o segundo (Manber) e o terceiro (Brassard) livros das Referências Bibliográficas abaixo.)

As listas de exercícios já indicadas nesta página poderão ser revistas/acrescidas à medida que cada tópico for sendo coberto. Visite esta página assiduamente.

Os arquivos contendo os slides serão acessíveis a partir de links na tabela abaixo, oportunamente.

Tópicos
(e previsão de datas de aulas)

Slides
Leituras recomendadas
Listas de exercícios
Para manter-se em compasso com a disciplina, completar as leituras e exercícios até:
Introdução 01/8
  1. Introdução
  1. [1] Capítulo 1
  1. [1] Capítulo 1: Exercícios: 1.2-2;
  2. [1] Capítulo 1: Problemas: 1-1
13/8
Notação Assintórica e Crescimento de funções 06/8
  1. Notação Assintótica e Crescimento de funções
  1. [1] Capítulo 2 e 3
  2. Trecho do livro [11]
  1. [1] 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;
  2. [1] Capítulo 2: Problemas: 2-1;
  3. [1] 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;
  4. [1] Capítulo 3: Problemas: 3-1;
  5. Lista adicional 1: Notação assintótica e crescimento de funções
13/8
Indução Finita 06/8 e 08/8
  1. Indução finita
  2. (continuação)
  1. [2] Capítulo 2
  1. [2] 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; (Lista 4: Transcrição dos exercícios do capítulo 2 de [2], para facilitar o acesso.)
15/8
Recorrências 13/8
  1. Recorrências
  1. [1] Capítulo 4
  2. Texto adicional (Por ora, ler este texto apenas até o fim da seção 3.)
  1. [1] Capítulo 4: 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;
  2. [1] Capítulo 4: Problemas: 4-1, 4-3 b., 4-4 a., c., d., e., f., h., i.;
  3. Lista adicional 2: Relações de Recorrências
17/8

Projeto de algoritmos por indução 15/8

Divisão e Conquista 20/8

  1. Projeto de algoritmos por indução
  2. (continuação) e Divisão e Conquista
  1. Texto adicional: Indução
  2. [2] Capítulo 5
  3. Leitura extra (opcional)
  1. [2] Capítulo 5: Exercícios: 5.6, 5.12, 5.14, 5.15, 5.25a.; Versão escaneada da seção de exercícios do capítulo 5 de [2], para facilitar o acesso.
  2. Lista adicional 3: Projeto de Algoritmos por indução
24/8

Ordenação 22/8, 27/8, 29/8

  1. Ordenação
  2. (continuação)
  3. (continuação)
  1. [1] Capítulos 6, 7 e 8
  1. [2] Capítulo 6: Exercícios: 6.11, 6.21, 6.34;
  2. [1] 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;
  3. [1] Capítulo 7: Exercícios: 7.2-2, 7.2-3, 7-4;
  4. [1] Capítulo 8: Exercícios: 8.1-1, 8.1-2, 8.2-1, 8.2-4, 8.3-3, 8.4-1, 8.4-2, Problemas: 8-3a, 8-6;
  5. Lista adicional 5: Ordenação, Heaps e Quotas Inferiores
03/9
Estatísticas de ordem (03/9) e 05/9
  1. Estatísticas de ordem
  1. [1] Capítulo 9
  2. [2] Capítulo 6

 

  1. [2] Capítulo 6: Exercícios: 6.14, 6.21 6.22, 6.23, 6.24, 6.25, 6.29;
  2. [1] Capítulo 9: Exercícios: 9.2-4, Problemas: 9-1a.,b,c;
  3. [1] Capítulo 9: Exercícios: 9.1-1;
  4. Lista adicional 6: Busca e Estatísticas de Ordem
10/9

Programação dinâmica 10/9, 12/9

  1. Programação Dinâmica
  2. (continuação)
  1. [1] Capítulo 15 (15.2, 15.3, 15.4)
  1. [1] 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, Problemas: 15-4, 15-6, 15-7
17/10

Aula de revisão / atendimento 17/9

Prova P1 19/9 (matéria coberta de 01/8 até 17/9)

Representação de Grafos 24/9

  1. Revisão (não há slides)
  2. Prova 1 (não há slides)
  3. Representação de Grafos
  1. [1] Capítulo 22
  1. [1] Capítulo 22: Exercícios: 22.1-1, 22.1-2, 22.1-3, 22.1-4, 22.1-5, 22.1-6, 22.1-7.
26/09

Algoritmos gulosos 26/9, 01/10

  1. Algoritmos Gulosos
  2. (continuação)
  1. [1] Capítulo 16
  1. [1] Capítulo 16: Exercícios: 16.1-1, 16.1-2, 16.1-3, 16.1-4, 16.3-1, 16.3-4, 16.3-7, 16.3-8, Problemas: 16-1, 16-4a.
05/10
Buscas em Grafos (e Ordenação Topológica, Componentes Fortemente Conexas) 03/10, 08/10
  1. Buscas
  2. (continucação: OT e CFC)
  1. [1] Capítulo 22
  1. [1] Capítulo 22: Exercícios: 22.2-1, 22.2-2, 22.2-3, 22.2-4, 22.2-6, 22.2-7, 22.2-8, 22.3-1, 22.3-2, 22.3-3, 22.3-4, 22.3-5, 22.3-6, 22.3-8, 22.3-10, 22.3-11, 22.4-3, 22.4-5, 22.5-1, 22.5-3, 22.5-4, Problemas: 22-3.
10/10

Árvore geradora mínima 10/10, 15/10

  1. AGM
  2. (continuação)
  1. [1] Capítulo 23
[1] Capítulo 23: Exercícios: 23.1-1, 23.1-2, 23.1-3, 23.1-8, 23.1-11, 23.2-2, 23.2-7, Problemas: 23-1.a.
19/10
Caminhos mínimos 17/10, 22/10
  1. Caminhos Mínimos
  2. (continuação)
  1. [1] Capítulo 24 e 25

[1] Capítulo 24: Exercícios: 24.1-4, 24.3-1, 24.3-2, 24.3-3, 24.3-8.

[1] Capítulo 25: Exercícios: 25.2-1.

24/10

Reduções 24/10

NP-completude 29/10, 31/10, 05/11, 07/11

Prova P2 12/11 (matéria coberta de 24/9 até 07/11)

Não haverá slides: guie-se pelo material indicado ========>
  1. Reduções
  2. NP-dificuldade
  3. (continuação)
  4. (continuação)
  5. (continuação)
  6. Prova 2 (não há slides)
  1. Reduções
  2. Leitura extra (opcional)
  3. [1] Capítulo 34
  4. [2] Capítulo 11
  5. Leitura extra (opcional)
  6. [10] Capítulo 3, Seção 3.2
  1. Lista adicional 7: Reduções
  2. [2] Capítulo 11: Exercícios: 11.3, 11.4, 11.5, 11.6, 11.13, 11.16, 11.25;
  3. [1] Capítulo 34: Exercícios: 34.1-4, 34.2-2, 34.2-6, 34.5-1, 34.5-6,
    Problemas: 34-1a.&b., 34-3.
11/11

Avaliação e Critérios para Aprovação

A avaliação desta disciplina consistirá de duas provas (P1, P2) nas datas indicadas ao final deste documento. Cada prova será em classe e terá duração de 120 minutos. As notas serão entre 0,0 e 10,0 e a média será mapeada para conceitos conforme descrito abaixo.

A Média das Provas (MP) será a média ponderada de P1 e P2 com pesos iguais a 1 e 2, respectivamente. Não serão ministradas provas antecipadas nem substitutivas. Situações excepcionais (a critério do professor) serão tratadas como tal.

O Conceito Final (CF) será obtido pelo mapeamento:
Se MP em [9.0, 10.0], CF=A; se MP em [7.5, 9.0), CF=B; se MP em [6.0, 7.5), CF=C; se MP em [0.0, 6.0), CF=D.

Aviso:
Qualquer tentativa de cola ou fraude, detectada durante uma prova ou posteriormente, acarretará nota zero naquela prova para todos os implicados, além das sansões regimentais previstas.

Aqui está a Tabelas de Notas.

Referências Bibliográficas

Os livros principais são [1], [2], e [3]. Os demais são complementares.

  1. T. Cormen, C. Leiserson, R. Rivest, C. Stein, Algoritmos - Teoria e Prática (tradução da 2ª Ed. Americana), Ed. Campus (2002).

  2. U. Manber, Algorithms: A Creative Approach, Addison-Wesley (1989).

  3. Brassard G. Brassard e P. Bratley, Algorithmics: Theory and Practice, Prentice-Hall.
  4. J. Kleinberg e E. Tardos, Algorithm Design, Addison Wesley, (2005).
  5. A. Aho, J. Hopcroft, e J. Ullman. The Design and Analysis of Computer Algorithms. Addison-Wesley (1974).
  6. N. Ziviani Projeto de Algoritmos com Implementações em Pascal e C, Pioneira Thomson Learning, 2ª. edição, (2004).
  7. J. Szwarcfiter, Algoritmos em Grafos, Editora Campus (1987).
  8. J. Szwarcfiter e L. Markenson, Estruturas de Dados e seus Algoritmos, LTC Editora (1994).
  9. C. H. Papadimitriou e K. Steiglitz. Combinatorial Optimization: Algorithms and Complexity. Prentice-Hall, Inc.,1982.
  10. M. Garey e D. Johnson. Computers and Intractability: a Guide to the Theory of NP-Completeness. Freeman, 1979.
  11. P. J. de Rezende e J. Stolfi. Fundamentos de geometria computacional. Universidade Federal de Pernambuco, Departamento de Informatica, 1994. IX Escola de Computação, Recife, 24 a 31 de julho de 1994.
  12. M. Sipser. Introduction to the Theory of Computation. PWS Publishing Company, 1997.
  13. H.R. Lewis e C.H. Papadimitriou. Elementos de Teoria da Computação. Bookman. 2a edição, 2000.
  14. D. E. Knuth, The Art of Computer Programming, vol. I: Fundamental Algorithms Addison-Wesley, 1997.

Datas importantes

Dia

Evento

Local

01/08

Início das aulas

IC-322

19/09

Prova 1 (P1)

IC-322

12/11

Prova 2 (P2)

IC-322

26/11

Divulgação dos
Conceitos Finais (
CF)

Esta página

 
 

 

(c) 1998-2012 Pedro J. de Rezende. Last modified: 2012.11.16.