| Avisos |
|
|
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 |
| 4 trabalhos práticos | 50 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.
Durante o semestre o aluno deve executar 4 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.
Regras para realização e entrega dos TPs estão disponíveis aqui
Clique aqui para submeter o seu Trabalho Prático (TP4).
TP 4: Algoritmos Paralelos (em dupla!!!, sem política de atraso, sem adiamento)
TP 3: Sistema de Memória Virtual (em dupla!!!)
TP 2: Passeio pela França (em dupla!!!)
TP 1: Paradigmas de Projeto de Algoritmos - LIMPA-TUDO (2)
TP 0: Programação C - LIMPA-TUDO
Política para desconto por atraso: A fórmula para desconto por atraso na entrega do trabalho prático é:
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, Introduction to Algorithms, McGraw-Hill, 1991.
[F] I. Foster, Designing and Building Parallel Programs, http://www.mcs.anl.gov/dbpp/
[K] J. Kitajima, M. Mendes, Introdução aos Processos Leves, JAI 96, ftp://ftp.dcc.ufmg.br/pub/ftp/research/kitajima/jai96 .ps
[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 | TPs | |
| 1 | Fevereiro | 26 | Análise de algoritmos | cap 1 | ||
| 2 | Fevereiro | 28 | Análise de algoritmos | cap 1 | ||
| 3 | Março | 4 | Análise de algoritmos | cap 1 | ||
| 4 | Março | 6 | Paradigmas | cap 2 | ||
| 5 | Março | 11 | Paradigmas | cap 2 | ||
| 6 | Março | 13 | Paradigmas | cap 2 | ||
| 7 | Março | 18 | Algoritmos em Grafos | cap 7 | ||
| Março | 20 | Recesso - páscoa | ||||
| 8 | Março | 25 | Complexidade | cap 9 | ||
| 9 | Março | 27 | ||||
| 10 | Abril | 01 | ||||
| 11 | Abril | 03 | ||||
| 12 | Abril | 08 | ||||
| 13 | Abril | 10 | ||||
| 14 | Abril | 15 | ||||
| 15 | Abril | 17 | ||||
| 16 | Abril | 22 | ||||
| 17 | Abril | 24 | ||||
| Abril | 29 | Recesso - Mostra das profissões | ||||
| Maio | 01 | Feriado - Dia do Trabalho | ||||
| 18 | Maio | 06 | ||||
| 19 | Maio | 08 | ||||
| 20 | Maio | 13 | ||||
| 21 | Maio | 15 | ||||
| 22 | Maio | 20 | ||||
| Maio | 22 | Corpus Christi | ||||
| 23 | Maio | 27 | ||||
| 24 | Maio | 29 | ||||
| 25 | Junho | 03 | ||||
| 26 | Junho | 05 | ||||
| 27 | Junho | 10 | ||||
| 28 | Junho | 12 | Paralelismo - threads | pthreads | ||
| 29 | Junho | 17 | Paralelismo | Paralelismo | ||
| 30 | Junho | 19 | ||||
| 31 | Junho | 24 | ||||
| 32 | Junho | 26 | ||||
| 33 | Julho | 01 | ||||
| 34 | Julho | 03 |