|
Projeto
e Análise de Algoritmos I (Turma A)
Prof. Pedro J. de Rezende
Primeiro
Semestre
de 2018
Links
rápidos:
Novidades - Docente
- Aulas Teóricas - Monitor
- Avaliação e Critérios para
Aprovação
- Notas
Exercícios - Tópicos a serem
cobertos - Slides das Aulas -
Referências Bibliográficas - Datas
Importantes
Novidades
- Aqui
serão colocados avisos importantes. Consulte esta página
regularmente.
- As
notas
do Exame e as Médias Finais estão disponíveis.
As notas e médias finais são definitivas. Os Exames já foram
cuidadosamente corrigidos e revisados. Alunos que queiram ver
seus Exames corrigidos devem enviar email ao professor para
marcar um horário no início do próximo semestre.
[20180710]
- Os
alunos para quem o Exame é obrigatório podem consultar a tabela
de notas para verificarem a nota mínima que precisam obter
no Exame para lograr aprovação na disciplina.
[20180706]
- Haverá
atendimento no dia 9/7, segunda-feira (isso mesmo, 9/7, mesmo
sendo feriado!), dado pelo PED da disciplina na sala IC353
às 10:00hs. Os alunos que
tomarão o Exame são incentivados a comparecer!
[20180705]
- O
Exame será ministrado no dia 10/7, às 10:00hs, na sala
IC353.
[20180629]
- As
notas
da Prova 3 e as Médias Semestrais estão disponíveis.
Os alunos que desejarem ver suas Provas 3 corrigidas devem
comparecer exclusivamente
no horário de 10:30 às 11:30
na terça-feira, dia 03/7, à sala IC29
(sala do Prof. Rezende). [20180629]
- As
notas
do Teste 5 estão disponíveis.
Os alunos que desejarem ver seus Testes corrigidos devem
comparecer exclusivamente
no horário de atentimento do
PED (André) na quinta-feira, dia 14/6, às 13:00 na sala IC353.
[20180613]
- A
Unicamp
acaba de determinar a suspensão de todas as atividades
acadêmicas até quarta-feira, 30/05. Por essa razão, na
terça-feira, 29/5, não teremos aula nem atendimento
pelo PED. [20180528]
- As
notas
do Teste 4 estão disponíveis.
Os alunos que desejarem ver seus Testes corrigidos devem
comparecer exclusivamente
no horário de atentimento do
PED (André) na terça-feira, dia 5/6, às 13:00 na sala IC351.
[20180528]
- Nova
alteração
de sala de aula para MC458-A: as aulas, os Testes e as Provas
passam a ser na sala IC353
a partir de 24/5, [20180524]
- As
notas
da Prova 2 estão disponíveis.
Os alunos que
desejarem ver suas Provas 2 corrigidas devem comparecer exclusivamente
na aula de 24/5. [20180523]
- As
notas
do Teste 3 estão disponíveis.
Os alunos que desejarem ver seus Testes corrigidos devem
comparecer exclusivamente
no horário de atentimento do
PED (André) na terça-feira, dia 8/5, às 13:00 na sala PB06. [20180507]
- As
notas
da Prova 1 estão disponíveis.
[20180422]
- As
notas
do Teste 2 estão disponíveis.
Os alunos que desejarem ver seus Testes corrigidos devem
comparecer exclusivamente
no horário de atentimento do
PED (André) na terça-feira, dia 24/4, às 13:00 na sala PB06. [20180422]
- As
notas
do Teste 1 estão disponíveis.
Os alunos que desejarem ver seus Testes corrigidos devem
comparecer exclusivamente
no horário de atentimento do
PED (André) na terça-feira, dia 10/4, às 13:00 na sala PB06. [20180406]
- Disponibilizada
lista adicional de exercícios sobre
indução forte. [20180314]
- Procure
conseguir um exemplar dos livros recomentados (Cormen [1] e
Manber [2]) desde a primeira semana de aulas.
[20180204]
Docente
Aulas
Teóricas
- As
aulas serão de 10h05 às 11h55 às terças e
às quintas-feiras. A partir de 24/5 as aulas serão na sala IC353.
Sejam pontuais para o início das aulas!
- Primeiro
dia de aula: terça-feira, 27/02.
Monitor
- Teremos
um Monitor-PED (André H. C. de Moraes, e-mail: andre.moraes
<at>
students.ic.unicamp.br)
para esta disciplina que fará atividades de exercícios e
sessões de atendimento.
- As
Aulas de Exercícios do André serão às quintas-feiras a
partir de 15/03, de
13:00 às 13:50 na
sala PB06.
- Os
Horários de Atendimento do André serão às terças-feiras
a partir de 13/03, de 13:00 às 13:50 na
sala PB06.
A
partir de 24/5 as Aulas de Exercícios e Atendimento do
André serão nas salas: 24/5=>IC353,
29/5=>IC351,
05/6=>IC351,
07/6=>IC353,
12/6=>IC353,14/6=>IC353,
de
13:00 às 13:50.
- As
Aulas de Exercícios e os Horários de Atendimento do
Monitor-PED (Allan Sapucaia) da turma B de MC458 serão
abertos também aos alunos da turma A, e serão:
- As
Aulas de Exercícios do Allan serão às quintas-feiras a
partir de 15/03, de
18:00 às 18:50 na sala IC-351.
- Os
Horários de Atendimento do Allan serão às
segundas-feiras a partir de 12/03, de 18:00 às 18:50 na
sala IC-351.
Avaliação
e Critérios para Aprovação
Haverá
três Provas (P1, P2, P3)
nas datas indicadas ao final deste documento. Cada Prova será
em classe nos horários normais de aula, sem exceção, terá
duração de 120 minutos e receberá nota entre 0,0
e 10,0.
Haverá
cinco
Testes (T1, T2,
T3, T4,
T5)
aos quais serão atribuídas notas também entre 0,0
e 10,0.
Não
serão
ministrados provas ou testes
antecipados nem substitutivos.
A
Média
dos
Testes
(MT)
será a média ponderada
MT
:= (T1 + T2
+ T3 +
2xT4
+ 2xT5)
/ 7.
A
Média
das Provas
(MP) será
a média ponderada MP
:= (2xP1
+ 3xP2
+ 5xP3)
/ 10.
Cálculo da
Média Semestral
(MS):
Se min {
MT;
MP
} >= 5,0
então MS
:= (MT
+ 4
MP) / 5
senão MS
:= min { 4,9; (MT
+ 4
MP) / 5 }
Cálculo da Média
Final
(MF)
e obrigatoriedade do Exame
Final:
Se
(MS
>= 5,0) ou (MS
< 2,5)
então MF
:= MS
senão se (2,5
<= MS
< 5,0)
então
MF
:= (MS + E)
/ 2
onde E
é a nota obtida pelo aluno no Exame
Final.
Um aluno com 2,5 <=
MS
< 5,0 é obrigado a tomar o Exame Final, se não
o fizer, lhe será atribuído zero a E;
alunos com MS
< 2,5 não poderão fazer o Exame Final;
e alunos com MS
>= 6,0 não poderão fazer o Exame Final.
Será considerado aprovado
o aluno que obtiver Média Final (MF)
maior que ou igual a 5,0.
Será considerado reprovado o
aluno que obtiver Média Final (MF)
menor que 5,0.
Sobre os testes:
Os testes serão realizados em sala de 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
primeira parte da aula. A segunda parte da aula será dedicada a
discussão sobre a resolução do(s) exercício(s) proposto(s) no
Teste.
Aviso:
Qualquer tentativa de cola ou fraude, detectada durante ou
posteriormente a uma Prova ou Teste, acarretará nota zero
naquela avaliação para todos os
implicados, além das sansões regimentais previstas
Notas
Tabelas
de
notas estarão disponíveis aqui: Testes
e Provas.
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 PED nos
horários de atendimento ou
com o Professor. Dúvidas não sanadas geram mais
dúvidas.
Listas
de exercícios
(As
listas serão indicadas nesta página à medida que cada tópico
for sendo coberto. A relação abaixo é apenas tentativa e
poderá sofrer alterações e acréscimos ao longo do semestre.
Visite esta página regularmente.)
-
Lista 1a:
[1] Capítulo 1: Exercícios: 1.2-2;
-
Lista 1b:
[1] Capítulo 1: Problemas: 1-1;
-
Lista 2a:
[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;
-
Lista 2b:
[1] Capítulo 2: Problemas: 2-1;
-
Lista 3a:
[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;
-
Lista 3b:
[1] Capítulo 3: Problemas: 3-1, 3-2, 3-3,
3-4;
-
Lista 4a:
[1] 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;
-
Lista 4b:
[1] Capítulo 4: Problemas: 4-1, 4-3 b.,
4-4 a., c., d., e., f., h., i.;
-
Lista 5:
[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
adicional
sobre indução forte.
-
Lista 6:
[2] Capítulo 5:
Exercícios: 5.6, 5.12, 5.14, 5.15, 5.25a.;
-
Lista 7:
[2] Capítulo 6:
Exercícios: 6.14, 6.22, 6.23, 6.24, 6.25, 6.29;
-
Lista 8:
[1] Capítulo 9: Exercícios: 9.2-4,
Problemas: 9-1a.,b,c;
-
Lista 9:
[2] Capítulo 6:
Exercícios: 6.11, 6.21, 6.34;
-
Lista 10:
[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;
-
Lista 11:
[1] Capítulo 7: Exercícios: 7.2-2, 7.2-3;
-
Lista 12:
[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;
-
Lista 13:
[1] Capítulo 9: Exercícios: 9.1-1;
-
Lista 14:
[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, 15.4-6, Problemas: 15-4, 15-6, 15-7;
-
Lista 15:
[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.
Tópicos
a
serem cobertos
- O
programa da disciplina consiste dos seguintes tópicos:
(Legenda: M=Modelo, A=Análise, P=Projeto/Paradigma)
-
1. Conceitos
de Análise de Algoritmos ([1] Cap 1., 2., 3.).
· (M)
Modelos Computacionais. Aula 1
· (A)
Classes de funções, crescimento e o conceito de
assintossidade. Aula 1
· (A)
O que é análise de um algoritmo -- quota superior.
· (A)
O que é análise de complexidade de um problema -- quota
inferior.
·
-
Exemplos: busca em vetor ordenado, entrada/saída,
quotas superiores, quota inferior e algoritmo ótimo.
· (A)
O que é análise de pior caso.
2. Ferramental
Matemático para Análise de Algoritmos ([1] Cap 4. e [Notas
de Aulas])
· (A)
Crescimento assintótico e classes de funções. [Classes
de
funções] Aula 2
· (A)
Resolução de recorrências. [Recorrências]
Aula 2
· (A)
Métodos diversos. Aula 2 e
Aula 3
· (A)
Teorema Master. Aula 3
3.
(P) Projeto de algoritmos por indução
([2] Cap 5.,
[Paper
do
Manber] e [Indução])
· (P)
[Manber] 2.7, 2.8, 2.10
- Revisão. Aula 4, Aula
5
· (P)
[Manber] 5.2,
5.3, 5.4, 5.5,
5.7, 5.8, 5.9, 6.5.1, 6.11.1, 6.11.2. Aula
6, Aula 7
Leitura: [2]
2.7, 2.8, 2.10, 5.2, 5.3, 5.4, 5.5, 5.7,
5.8, 5.9, 6.5.1, 6.11.1, 6.11.2
([2] 5.4, 6.11.1 não serão cobertos
em classe, mas a leitura é um requisito. Em caso de
dúvidas, procure o professor.)
4.
Busca, ordenação e estatísticas de ordem (Ênfase
em [M] Divisão e Conquista)
([2] Cap 6., e [1] Cap 6., 7., 8., 9.)
· (P)
Paradigma de Divisão e Conquista (mergesort,
busca binária, mediana).
Aula 8, Aula
12
· (P)
Busca binária (simples, variações, seqüências gaguejantes, n=ab
para n, a, b naturais). Aula
9 (lousa)
Teste 1 Aula
10
Prova 1 Aula
11
· (P)
Conquista pode preceder a divisão (quicksort).
· (A)
Análise de caso médio de quicksort.
·
(A) Quota inferior para busca em
vetor ordenado, ordenação e determinação do máximo.
·
(M/A/P)
Algoritmos lineares para ordenação.
·
(P) Seleção do mediano e do k-ésimo
menor elemento via partição do quicksort.
· (A)
Algoritmo de pior caso linear para seleção do mediano e do k-ésimo
menor elemento.
· (P)
Benefícios da escolha de estrutura de dados adequada para
projeto de algoritmos eficientes (ordenação com várias
estruturas de apoio).
Leitura: [2] Cap 6
= 6.2, 6.4, 6.5, 6.11, [1] Cap 6; 7; 8; 9.1, 9.2, 9.3
5. [M]
Programação Dinâmica ([1] Cap
15.)
Exemplos dentre:
·
(P)
Programação
de linha de montagem.
·
(P) Multiplicação
de cadeias de matrizes.
· (P)
Mais longa
subseqüência comum.
· (P)
Problema da
mochila.
· (P)
Árvore binária
de busca ótima.
Leitura: [1] Cap 15 = 15.2,
15.3, 15.4
6.
[M] Algoritmos Gulosos
([1] Cap 16.)
·
(P) Problema de seleção de atividade.
·
(P) Códigos de Huffman.
·
(P) Outros exemplos.
Leitura: [1] Cap 16 = 16.1,
16.2, 16.3
Tópicos
opcionais à escolha do docente:
·
(P)
Problemas geométricos (para ilustrar os paradigmas de Divisão
e Conquista e Guloso).
·
(P)
Emparelhamento
de cadeias de caracteres e biologia computacional (para
ilustrar o paradigma de Programação Dinâmica).
·
(P)
Reduções de Problemas. [Redução]
Slides
das
aulas
Aqui serão
colocados os slides usados nas aulas por grupos de tópicos.
- Introdução
até Projeto de Algoritmos por Indução
- Exemplos
do Paradigma de Divisão e Conquista
- Ordenação
e Estatísticas de Ordem
- Paradigma
de Programação Dinâmica
- Paradigma
Guloso
Nunca estude apenas pelas suas anotações ou pelos slides das
aulas. Compareça às aulas, guie-se por suas anotações, mas estude
pelos livros indicados.
Referências
Bibliográficas
[1]
T. Cormen, C. Leiserson, R. Rivest, C. Stein, Algoritmos
-
Teoria e Prática (tradução da 2ª
Ed. Americana), Ed. Campus (2002).
Há cópias do livro [1] na "Reserva" da
Biblioteca do IMECC.
[2]
U. Manber, Algorithms: A Creative Approach,
Addison-Wesley (1989).
[3] J.
Kleinberg e E. Tardos, Algorithm Design, Addison Wesley,
(2005).
[4] G. Brassard e P. Bratley,
Algorithmics: Theory and Practice, Prentice-Hall.
[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 e L. Markenson,
Estruturas de Dados e seus Algoritmos, LTC Editora (1994).
Datas
importantes
Dia
|
Evento
|
Local
-
Turma A
|
27/02 terça
|
Primeiro
dia de aula
|
PB15
|
03/04 terça
|
Teste
1
|
PB14
|
05/04
quinta
|
Prova
1 (P1)
|
PB14
|
19/04 quinta
|
Teste
2
|
PB18
|
03/05 quinta
|
Teste
3
|
PB18
|
10/05 quinta
|
Prova
2 (P2)
|
PB14
|
24/05 quinta
|
Teste
4
|
IC353
|
12/06 terça
|
Teste
5
|
IC353
|
19/06 terça
|
Prova
3
(P3)
|
IC353 |
10/07 terça
|
Exame
Final (E)
|
IC353
|
14/07 sábado
|
Resultados
Finais (MF) |
Esta
página |
A
sala de aula usual pode ser distinta
da sala onde ocorrem os Testes e
Provas. Fique atento.
|