Conteúdos da cadeira

Divisão e conquista

Partir, resolver e combinar, com recorrências de custo resolvidas pela árvore de recursão.

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

Divisão e conquista é a técnica dos três verbos: divide a entrada em partes, conquista cada parte recursivamente e combina as soluções parciais. A análise faz-se com recorrências, e a árvore de recursão transforma a recorrência numa conta de somar por níveis.

Exemplo numérico: pesquisa binária

No vetor ordenado [1, 3, 5, 7, 9, 11, 13], procurar o 11. Compara com o meio (7, índice 3): 11 é maior, descarta a metade esquerda. Compara com o meio da metade direita (11, índice 5): encontrado. São 2 comparações contra até 7 da procura linear. Cada passo corta a entrada a metade, por isso o custo é O(logn)O(\log n): a recorrência T(n)=T(n/2)+O(1)T(n) = T(n/2) + O(1) soma O(1)O(1) por cada um dos logn\log n níveis. A condição escondida é o vetor estar ordenado; sem ela, a metade descartada podia conter o alvo.

Exemplo com combinação: ordenação por fusão

Ordenar [5, 2, 8, 1]: divide em [5, 2] e [8, 1]; conquista recursivamente em [2, 5] e [1, 8]; combina fundindo as duas metades ordenadas, comparando cabeças: sai 1, depois 2, depois 5, depois 8. Resultado [1, 2, 5, 8], com a fusão a custar O(n)O(n). A recorrência T(n)=2T(n/2)+O(n)T(n) = 2T(n/2) + O(n) resolve-se pela árvore: há logn\log n níveis (cada nível parte tudo a metade até chegar a singletons) e cada nível soma O(n)O(n) de fusões. Total: O(nlogn)O(n \log n), melhor que qualquer ordenação por comparações consegue evitar no pior caso.

A mesma árvore serve para recorrências de outras páginas: o Fibonacci ingénuo da programação dinâmica tem uma árvore exponencial, e é por isso que precisa de memoização. Se quiseres rever indução para provar estas contas, está em indução e recorrência.

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.