Algoritmos¶
Um algoritmo é um procedimento finito e não ambíguo que transforma entradas válidas em saídas que satisfazem um contrato. Esta seção combina implementação com análise de correção e de recursos.
Tópicos¶
- Busca: localizar valores ou limites.
- Ordenação: estabelecer uma ordem e estudar compromissos.
- Paradigmas de projeto: reutilizar estruturas de resolução de problemas.
- Algoritmos de strings: localizar e indexar sequências de símbolos.
- Algoritmos de grafos: percorrer relacionamentos, encontrar rotas e otimizar redes.
Lista de verificação para avaliação¶
Para cada algoritmo, pergunte:
- Qual é o modelo da entrada e quais são as pré-condições?
- O que ele garante ao retornar?
- Por que termina e produz o resultado correto?
- Quais são seus custos no melhor caso, esperados, amortizados e no pior caso, quando relevantes?
- É estável, in-place, determinístico, online ou adaptativo?
- Alguma implementação de biblioteca disponível oferece um contrato mais forte?