A série de disciplinas Algoritmos e Estruturas de Dados I, II e III tem por objetivo apresentar os algoritmos e e as estruturas de dados básicas para o desenvolvimento de programas de computador. Ao final desta disciplina, a terceira e última da série, o aluno deverá ser capaz de usar as principais técnicas empregadas na implementação de algoritmos de pesquisa e de ordenação em memória secundária. Ele deverá ser capaz de analisar algoritmos e saber o que pode e o que não pode ser resolvido eficientemente pelo computador, através do estudo de fundamentos da teoria de complexidade de algoritmos. Ele deverá conhecer os algoritmos básicos para processamento de cadeias de caracteres. Ele deverá ainda conhecer computação paralela e os algoritmos paralelos mais simples.
Análise de algoritmos; Algoritmos em Grafos; Complexidade de Algoritmos; Principais dispositivos de memória secundária; Ordenação e pesquisa em memória secundária; Processamento de cadeias de caracteres; Compressão de arquivos; Algoritmos paralelos.
Medida do tempo de execução de um programa, técnicas de análise (Z1.3-1.4).
Indução, Recursividade, Algoritmos Tentativa e Erro, Divisão e conquista, Balanceamento, Programação dinâmica, Algoritmos gulosos, Algoritmos aproximados (Z2).
Terminologia, representação, busca em profundidade, ordenaçção topológica, componentes fortemente conectados, árvore geradora mínima, caminho mínimo (Z7)
Classes
,
e
-completo, algoritmos não-detrminísticos, teorema de Cook,
reduções, heurísticas (Z9).
Ordenação externa: intercalação balanceada e intercalação polifásica (Z4.2). Memória virtual (Z6.1). Organização de arquivos: seqüencial, seqüencial indexado, hashing (Z6). Árvore B (Z6.3).
Recuperação de informação em textos. Busca exata e aproximada. Algoritmos sem pré-processamento: força bruta, Boyer-Moore e shift-or (Z8). Compressão de textos (BYR7).
Classificação das arquitetuiras paralelas (Q1). Algoritmos PRAM (Q2). Formas de organizar processadores (Q3). Projeto de algoritmos paralelos (Q6).
| 4 provas | 50 pontos |
| 6 trabalhos práticos | 45 pontos |
| 1 resenha | 5 pontos |
| Total | 100 pontos |
As provas terão duração total de 1:40 horas, sendo 50 minutos para a resposta às questões constantes da prova e 50 minutos para os alunos corrigirem provas dos colegas. A nota final considera tanto as resposta apresentadas na prova quanto a correção.
A resenha é um instrumento importante de síntese e acompanhamento do conteúdo ensinado em sala de aula. As resenhas foram divididas em cinco módulos, sendo cada módulo realizado por um grupo de alunos. A entrega da resenha se fará pelo portal Minha.ufmg.
Os grupos de resenha são:
As datas de entrega das resenhas podem ser vistas no calendário.
Durante o semestre o aluno deve executar 6 trabalhos práticos. Há ainda um trabalho prático opcional, o TP0, que tem por objetivo familiarizar o aluno com os conceitos da linguagem C. A execução do TP0 gera pontos extras.
TP 0: Programação C - Elevador
TP 1: Programação Paralela
TP 2: Heurísticas
TP 3: NP-Completo
TP 4: Localidade de Referência
TP 5: Sistema de Paginação
TP 6: Processamento de Cadeia de Caracteres
Política para desconto por atraso: A fórmula para desconto por atraso na entrega do trabalho prático ou resenha é:
onde
é o atraso em dias úteis. Note que
após 5 dias úteis, o trabalho não pode ser mais
entregue.
Importante:
[BYR] R. Baeza-Yates and B. Ribeiro-Neto Modern Information Retrieval, Addison-Wesley, 1999.
[CLR] T. H. Cormen, C. E. Leiserson e R. L. Rivest, Algoritmos, 2a edição, 2004.
[F] I. Foster, Designing and Building Parallel Programs, http://www.mcs.anl.gov/dbpp/
[FBY] Frakes, W. B. e Baeza-Yates, R. (Eds) Information Retrieval Data Structures & Algorithms. Prentice Hall, 1992.
[HS] Horowitz, E. e Sahni, S. Fundamentals of Computer Algorithms. Computer Science Press, 1978.
[L] Lawler, E. L., Lenstra, J. K., Kan, A. H. and Shmoys, D. B. The Traveling Salesman Problem,
Wiley, 1985.
[Q] M. J. Quinn, Parallel Computing Theory and Practice,
McGraw-Hill, 1994.
[Z] Ziviani, N. Projeto de Algoritmos Com Implementações em Pascal e C, Pioneira Thomson Learning, Segunda Edição, 2004.
| Aula | Mês | Dia | Assunto | Referência | Obs |
| 1 | 4 | 8 | Análise de Algoritmos | Z1.3 | |
| 2 | 6 | 8 | Análise de Algoritmos | Z1.4 | |
| 3 | 11 | 8 | Algoritmos Paralelos | Q | |
| 4 | 13 | 8 | Algoritmos Paralelos | Q | |
| 5 | 18 | 8 | Algoritmos Paralelos | Q | TP0 |
| 6 | 20 | 8 | Algoritmos Paralelos | Q | |
| 7 | 25 | 8 | Paradigmas de Projeto de Algoritmos | Z2 | |
| 8 | 27 | 8 | Paradigmas de Projeto de Algoritmos | Z2 | |
| 9 | 1 | 9 | Paradigmas de Projeto de Algoritmos | Z2 | TP1 |
| 10 | 3 | 9 | Paradigmas de Projeto de Algoritmos | Z2 | |
| 11 | 8 | 9 | Algoritmos em Grafos | Z7 | |
| 12 | 10 | 9 | Algoritmos em Grafos | Z7 | |
| 13 | 15 | 9 | Algoritmos em Grafos | Z7 | |
| 14 | 17 | 9 | Primeira Prova | Aulas 1-10 | |
| 15 | 22 | 9 | Algoritmos em Grafos | Z7 | TP2 |
| 16 | 24 | 9 | NP-Completo | Z9 HS | |
| 17 | 29 | 9 | NP-Completo | Z9 HS | |
| 18 | 1 | 10 | NP-Completo | Z9 HS | |
| 19 | 6 | 10 | Segunda Prova | Aulas 7-15 | |
| 20 | 8 | 10 | NP-Completo | Z9 HS | |
| 21 | 13 | 10 | NP-Completo | Z9 HS | TP3 |
| 22 | 15 | 10 | NP-Completo | Z9 HS | |
| 23 | 20 | 10 | Memória secundária | Z5 | |
| 24 | 22 | 10 | Memória secundária | Z5 | TP4 |
| 25 | 27 | 10 | Memória secundária | Z5 | |
| 26 | 29 | 10 | Terceira Prova | Aulas 11-21 | |
| 27 | 3 | 11 | Ordenação externa | Z3.2 | |
| 28 | 5 | 11 | Ordenação externa | Z3.2 | |
| 29 | 10 | 11 | Proc. caracteres | Z8 FBY10 | |
| 30 | 12 | 11 | Proc. caracteres | Z8 FBY10 | TP5 |
| 31 | 17 | 11 | Proc. caracteres | Z8 FBY10 | |
| 32 | 19 | 11 | Proc. caracteres | Z8 FBY10 | |
| 33 | 24 | 11 | Reserva | ||
| 34 | 26 | 11 | Reserva | ||
| 35 | 1 | 12 | Reserva | ||
| 36 | 3 | 12 | Prova final | Aulas 22-32 | |