Skip to content

Commit f2c0d0f

Browse files
authored
Merge branch 'Insper:master' into master
2 parents 053f7e6 + c0a5d32 commit f2c0d0f

File tree

3 files changed

+31
-30
lines changed

3 files changed

+31
-30
lines changed

material/projetos/local.md

+4-26
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,11 @@
1-
# Um algoritmo Local para Alinhamento
1+
# Aleatoriedade
22

33
Como vimos em aula, aleatoriedade é uma estratégia bastante comum para construção de algoritmos de busca local, podendo ser usada
4-
de forma isolada ou de forma complementar a outra estratégia de varredura de um espaço de soluções. Em problemas de alinhamento,
5-
varreduras suportadas por aleatoriedade tem produzido algoritmos bastante efetivos.
4+
de forma isolada ou de forma complementar a outra estratégia de varredura de um espaço de soluções.
65

7-
Dentro deste contexto, vamos considerar o algoritmo proposto abaixo:
86

97

10-
ALGORITMO BUSCA LOCAL COM ALEATORIEDADE
118

12-
Entrada: Duas sequencias de DNA a[i] e b[j], de tamanhos n e m respectivamente,pesos wmat, wmis e wgap para match, mismatch e gap respectivamente
9+
Essa implementação consiste na adaptação da heurística gulosa de nosso projeto. A proposta é que você modifique a sua heurística gulosa de modo que ao longo da seleção de um filme você tenha 25% de chance de pegar outro filme qualquer que respeite o horário. Isso fará com que sua heurística tenha um pouco mais de exploration e possamos ter alguns resultados melhores.
1310

14-
Saída: Score de um alinhamento das sequencias
15-
Subsequencias alinhadas
16-
17-
1. Gerar uma subsequencia sb=b[j,j+1,...,j+k] de b, de tamanho aleatório k, 1<=k<=m, e 0<=j<=m
18-
2. Gerar um número aleatório inteiro positivo p
19-
3. Gerar p subsequencias sa=a[i,i+1,...,i+k] de a, com tamanho k calculado no passo (1), 0<=i<=n
20-
4. Calcular os scores de cada par (sa,sb) com os pesos wmat, wmis e wgap
21-
5. Devolver o score máximo m entre os scores do passo (4) e as subsequencias associadas a ele
22-
23-
24-
25-
26-
A partir desta descrição, nosso primeiro projeto terá duas tarefas:
27-
28-
<ul>
29-
<li> Implementar um programa C++ para ler um arquivo contendo os tamanhos de duas sequencias de DNA, seguidos das duas sequencias, uma por linha. Calcular o score máximo utilizando o algoritmo acima, assim como as subsequencias associadas a ele.
30-
<li> Testar o algoritmo diversas vezes e comparar seus resultados com a heurística do primeiro projeto observando, principalmente, o seu comportamento em relação aos valores aleatórios k e p. Estes resultados e sua comparação deverão estar presentes no relatório a ser entregue posteriormente.
31-
</ul>
32-
33-
No diretório do projeto, há um gerador de entradas disponibilizado como um notebook Python.
11+
*Importante*: é essencial que você guarde todos os inputs usados ao longo do projeto, para que possa comparar o desempenho de seus algoritmos conforme mudamos a heurística. Ou seja, todas as heurísticas devem ser submetidas aos mesmos arquivos de input. O seu resultado deve ser comparado sob duas perspectivas, no mínimo: (i) tempo de execução em função do aumento de filmes e de categorias e (ii) tempo de tela (isto é, será que estamos conseguindo ocupar bem as 24h do dia assitindo filmes?).
+23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
# Relatório Parcial
2+
3+
O relatório parcial é a entrega intermediária do projeto, a qual deve ser feita pelo **blackboard** até a data da **prova intermediária**.
4+
5+
**Seu relatório deverá conter as implementações gulosa e aleatória**.
6+
7+
O que você deverá fazer:
8+
9+
- No blackboard, você deve fazer upload de todos os *códigos-fonte*, *arquivos de input*, *arquivos de output* para cada heurítica. Caso opte por enviar um link do github com o repositório completo, também poderá faze-lo, desde que garanta que teremos acesso aos arquivos no seu repositório;
10+
11+
- Você deve elaborar um relatório parcial contendo as seguintes seções:
12+
13+
- Para cada heurística você deve explicar como implementou a heurística (detalhe como você tratou o input, qual a lógica do seu output, quais invariantes existem em suas heurísticas), apresentar (i) o código-fonte comentado, (ii) fazer considerações sobre o profiling (valgrind) do código-fonte (use apenas 1 arquivo de input para isso, não há necessidade de fazer esse profiling para vários inputs), (iii) o resultado compartivo entre as heurísticas quando você varia o input (o input deve variar na quantidade de filmes e de categorias).
14+
15+
- Seu relatório deve ser gráficos e tabelas que subsidem as suas considerações
16+
17+
- É permitido criar um programa em python ou outra linguagem que automatize a geração de seus resultados, isto é, que execute seus códigos C++ em função dos diferentes inputs.
18+
19+
Preferencialmente o relatório deve ser apresentado em formato *html*.
20+
21+
22+
23+

mkdocs.yml

+4-4
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,8 @@ nav:
3939
- "05 - Heurísticas": aulas/05-heuristicas/index.md
4040
- "06 - Aleatorização": aulas/06-aleatorizacao/index.md
4141
- "07 - Busca Local": aulas/07-busca-local/index.md
42-
# - "08 - Busca Exaustiva": aulas/08-busca-global/index.md
43-
# - "09 - Comparação de desempenho": aulas/09-busca-global-II/index.md
42+
- "08 - Busca Exaustiva": aulas/08-busca-global/index.md
43+
- "09 - Comparação de desempenho": aulas/09-busca-global-II/index.md
4444
# - "10 - Branch and Bound": aulas/10-branch-and-bound/index.md
4545
# - "Revisão para P1": aulas/10-branch-and-bound/revisao.md
4646
# - "11 - Paralelismo": aulas/11-paralelismo/index.md
@@ -58,8 +58,8 @@ nav:
5858
- Projeto:
5959
- projetos/index.md
6060
- projetos/heuristico.md
61-
# - projetos/local.md
62-
# - projetos/exaustiva.md
61+
- projetos/local.md
62+
- projetos/relatorio_parcial.md
6363
# - projetos/openmp.md
6464
# - projetos/gpu.md
6565
# - projetos/relatorio-1.md

0 commit comments

Comments
 (0)