Conteúdos da cadeira

Desenho de Algoritmos

Técnicas de desenho de algoritmos, de força bruta a programação linear, com análise de custo e projetos em C++.

Markdown

Perguntar sobre esta página

ChatGPTClaudePerplexityGeminiCopiar e abrir

Envia o link e pede à IA para ler a página. No Gemini, cola a pergunta copiada.

Ver pergunta para copiar
Nesta página

Desenho de Algoritmos é a cadeira onde aprendes a atacar um problema novo com método: reconhecer a sua forma, escolher uma técnica de desenho, analisar o custo e implementar a solução em C++. Vens de AED com estruturas de dados na bagagem; aqui a pergunta muda de “que estrutura uso?” para “que estratégia resolve isto dentro do limite de tempo?”.

Como está organizado

Começa por Complexidade e estruturas, que revê a notação assimptótica e a escolha de estruturas que suportam o resto da cadeira. Depois vêm as técnicas, uma por página e por ordem crescente de sofisticação: Força bruta para enumerar tudo em problemas pequenos, Algoritmos gulosos para decidir localmente com prova de otimalidade, Divisão e conquista para partir o problema com recorrências de custo, e Programação dinâmica para reaproveitar subproblemas sobrepostos.

A segunda metade abre o leque: Programação linear modela otimização com restrições, Retrocesso e ramificação explora espaços de procura com poda, e Complexidade e aproximação explica o que fazer quando o problema é exponencial e a solução exata não cabe no tempo.

Roteiro de estudo

Associa cada técnica ao seu problema tipo: enumeração para a mochila pequena, guloso para trocos e intervalos, divisão para ordenação e pesquisa, tabela para mochila e alinhamento, modelo linear para dietas e planeamento, retrocesso para rainhas e coloração, aproximação para cobertura e caixeiro. Quando um enunciado novo aparecer, pergunta primeiro qual destes esqueletos ele veste e só depois escreve código.

Lê cada página com o compilador aberto. Os exemplos em C++ usam o que já sabes de fundamentos e da STL; compila-os, muda os dados de entrada e confirma que o resultado acompanha a análise. Na véspera dos mini-testes, refaz um exemplo de cada técnica sem olhar: se conseguires reconstruir a tabela, a recorrência ou a prova, estás pronto.

Avaliação

A forma de avaliação varia de ano para ano. Na ocorrência de 2025/26 houve dois mini-testes individuais sem consulta e dois projetos de programação em grupo, com mínimos por componente. Consulta a ficha da unidade curricular no SIGARRA e a página da disciplina no Moodle para saberes os pesos, os mínimos e as regras de recurso da edição corrente antes de planeares o semestre.

Fontes e âmbito

Estas páginas seguem o âmbito da unidade curricular de Desenho de Algoritmos (L.EIC016) do 2.º ano, 2.º semestre da LEIC, ocorrência de 2025/26: complexidade assimptótica, força bruta, algoritmos gulosos, divisão e conquista, programação dinâmica, programação linear e inteira, retrocesso e branch and bound, problemas exponenciais, reduções e aproximação polinomial. A bibliografia obrigatória é o Cormen (Introduction to Algorithms) e o trabalho prático usa C++ com GoogleTest e CLion.

Material oficial da FEUP:

  • Ficha da unidade curricular de Desenho de Algoritmos, ocorrência de 2025/26, com objetivos, programa, bibliografia e avaliação (consultada em setembro de 2026): SIGARRA.
Ver o ficheiro no GitHub

À tua maneira

Escolhe como preferes ler.

Aparência
Ajustar cores e largura
Cor de destaque do tema FEUP
Tipo de letra

Álgebra, lógica e uma ideia de cada vez.

As tuas escolhas ficam guardadas neste navegador.

Pesquisar

Escreve para pesquisar em todo o site.

para escolher · Enter para abrir · Esc para fechar

Atalhos de teclado

Clica numa tecla para a mudar. Esc cancela. Backspace desativa.

PesquisarCtrl / Cmd K

Os atalhos não interferem enquanto escreves. Tab e Enter funcionam sempre.