Complexidade e estruturas
Limites assimptóticos, tamanho da entrada e o custo das estruturas que suportam os algoritmos.
Medir antes de escolher
| Entrada | Tamanho relevante | Armadilha |
|---|---|---|
| Vetor com elementos | Ordenar antes tem custo próprio | |
| Grafo | , ; lista usa | Dizer “linear” sem representação esconde o custo |
| Mochila com capacidade | ocupa bits | Tabela com colunas é enorme face à escrita |
| Números sem limite | Bits dos operandos | Somar bits custa |
Assume valores nos tipos usados e respeita limites dos enunciados.
Limites assimptóticos
Para não negativa e grande:
- se ; limite superior.
- se ; limite inferior.
- se valem os dois.
, embora também pertença a . não fixa melhor caso nem tempo exato.
Base do logaritmo muda constante. Potência com fixo é polinomial.
Contar ciclos sem multiplicar às cegas
- Passos consecutivos somam; ciclo soma cada iteração.
- Triângulo dá : .
- Duplicar índice até dá .
- Percorrer todas as listas de adjacência examina arestas, não .
- Fase que produz e ordena custa .
Pior caso, médio e amortizado
- Procura linear: melhor , pior .
- Médio exige distribuição; média dos extremos não chega.
- Amortizado limita sequência: inserções em vetor com crescimento geométrico custam , embora uma realocação custe .
Estruturas e representação
| Estrutura | Operação | Custo |
|---|---|---|
| Vetor | Acesso | |
| Vetor ordenado | Pesquisa; inserção desloca | ; |
| Fila ou pilha | Extremos | |
| Heap | Mínimo; inserir e extrair | ; |
| Árvore equilibrada | Pesquisa e atualização | |
| Dispersão | Com boa função e ocupação | esperado; pior |
| Union-find | Com compressão e união por rank | amortizado |
Matriz usa espaço e testa aresta em . Listas usam e percorrem vizinhos de em . Distingue peso zero de ausência de aresta.
priority_queue sem decreaseKey: insere novos pares e ignora antigos. Não alteres chave na heap sem reorganizar.
Tabela com em binário é pseudopolinomial, não polinomial na entrada.