Cheat sheet
Condições, fórmulas e decisões para consulta rápida, com ligações às provas.
n conta elementos, h mede altura em arestas, V,E contam vértices e arestas. Custos de comparação e hash são constantes só com chaves de dimensão limitada. Consulta aqui a condição; a demonstração está no capítulo ligado.
Prova e contagem
| Precisas de | Usa |
|---|---|
| Contrato | Pré do chamador e pós do algoritmo, com empates e vazio |
| Ciclo | Início, manutenção, implicação à saída e medida que diminui |
| Recursão | Caso base e hipótese nos menores |
limita por cima, por baixo, pede os dois. Média exige distribuição. Amortizado limita sequências sem sorteio.
| Padrão | Custo |
|---|---|
| Um percurso | |
n interiores por cada exterior | |
1+…+n | |
Duplicar de i=1 enquanto i<n, n>=1 | iterações |
Duplicar com interior proporcional a i | |
| Metade com junção linear | |
Prefixos e q somas | com |
Janela k em N | com retira a[i-1] e junta a[i+k-1] |
Pesquisa e ordenação
Binária em vetor ordenado: . Em [l,r), m=l+(r-l)/2. Linear sem ordem: .
| Limite | Primeiro | Descarta esquerda com |
|---|---|---|
| Lower | >=x | v[m]<x |
| Upper | >x | v[m]<=x |
Contagem de x: upper menos lower. Podem devolver n. Resposta monótona inclui o custo do teste.
| Ordenação | Pior | Extra | Empates |
|---|---|---|---|
| Seleção | Não | ||
| Inserção | Sim | ||
| Merge | Sim, esquerda primeiro | ||
| Quicksort | Pilha até | Não | |
| Heapsort | Não | ||
| Counting | Sim, da direita |
Comparar tem limite . sort pede ordem fraca estrita e não é estável. Radix exige passagem estável. Limites e traços.
Estruturas e geometria
| Operação | Vetor | Lista simples |
|---|---|---|
Consultar índice i | ||
| Inserir na frente | por deslocação | |
| Consultar o fim | com cauda, sem ela | |
| Inserir no fim | amortizado | com cauda |
| Remover no fim | sem anterior na simples | |
| Inserir depois de nó conhecido | Desloca os seguintes | |
| Remover nó conhecido | Desloca os seguintes | sem anterior na simples |
Pilha é LIFO, fila é FIFO, deque aceita ambas as pontas. Duas pilhas fazem fila se transferirem só com saída vazia. TADs e ligações.
Orientação: . Positivo vira à esquerda. Graham ordena em e varre em . Ponto em convexo com c vértices: . Envolvente.
Árvores
Vazio tem altura -1 e folha tem altura 0. Para um nó com alturas h_e e h_d nas subárvores, . Pré visita raiz, esquerda e direita; em visita esquerda, raiz e direita; pós visita esquerda, direita e raiz. Cada percurso custa . Binárias.
BST exige ordem global, não só pai-filho. Operações , pior . Dois filhos troca com sucessor. BST.
| AVL | Repara com |
|---|---|
| LL | Direita |
| RR | Esquerda |
| LR | Esquerda no filho, direita no nó |
| RL | Direita no filho, esquerda no nó |
Vermelha-preta: raiz e NIL pretos, sem vermelhos seguidos, mesma altura preta. Altura até . Equilíbrio.
Hash, heaps e grafos
| Procuras em hash | Condição |
|---|---|
| Provar desigualdade | Hash diferente prova; hash igual não prova igualdade |
| Custo do encadeamento | em média, , sob dispersão uniforme e custos constantes |
| Remover em aberto | Marca apagada: a pesquisa atravessa, a inserção memoriza e continua até excluir duplicado |
| Passo duplo válido | Coprimo com m; com m primo, qualquer |
Com n>0 elementos em vetor zero-based, os filhos de i são 2i+1,2i+2 e o pai de i>0 é com divisão inteira. Topo com heap não vazio, alteração , construção . Heaps.
Listas , matriz . BFS usa fila e dá o menor número de arestas, só em grafos sem pesos. DFS usa pilha.
| Procuras | Condição | Ação |
|---|---|---|
| Ciclo dirigido | Aresta para vértice cinzento | Segue os pais até ao antepassado |
| Ordem válida | DAG confirmado: Kahn retira os V vértices | Usa a ordem de saída; incompleta não serve |
| Componente fechada | low[u]==disc[u] em Tarjan | Retira da pilha até u |
Ponte numa aresta u->v da árvore DFS, grafo não dirigido | low[v]>disc[u] | Marca u-v; paralelas anulam |
Grafos e aplicações.