









































Estude fácil! Tem muito documento disponível na Docsity
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Prepare-se para as provas
Estude fácil! Tem muito documento disponível na Docsity
Prepare-se para as provas com trabalhos de outros alunos como você, aqui na Docsity
Encontra documentos específicos para os exames da tua universidade
Prepare-se com as videoaulas e exercícios resolvidos criados a partir da grade da sua Universidade
Responda perguntas de provas passadas e avalie sua preparação.
Ganhe pontos para baixar
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
10 ATAL - Análise e Técnicas de Algoritmos UFCG
Tipologia: Notas de estudo
1 / 49
Esta página não é visível na pré-visualização
Não perca as partes importantes!










































Divisão e conquista
2 Problemas tendem a ser recursivos
Divisão : divide a sequência com n elementos em duas com n/2 elementos cada Conquista : ordena as duas subsequências recursivamente com merge-sort Combinação : Combinar as duas sequências ordenadas para produzir uma resposta ordenada 5
tamanho 6
Maior elemento de um vetor A[1..n] Solução Sequencial Maxim(A[1..n]) maior ← A[1] for i ← 2 to n do if A[j] > maior then maior ← A[i] return maior
Solução D-C Maxim(A,inicio,fim) if fim=inicio then return A[inicio] else m ← inicio+fim/ v1 ← Maxim(A[inicio..m]) v2 ← Maxim(A[m+1..fim]) return max(v1, v2)
DivisãoeConquista(x) if x é pequeno ou simples then return resolver(x) else decompor x em conjuntos menores x0, x1, … xn for i ← 0 to n do yi ← DivisãoeConquista(xi) combinar yi’s return y
Texto D A F E B
Quando a divisão e conquista efetivamente melhora o desempenho
Multiplicação D-C
Multiplicação D-C 24 a: 12 32 31 b: mult(24,31) mult(12,31) mult(24,32) mult(12,32) mult(24,32) Mult(24,31)+ mult(12,32) mult(12,31) n n/2 n/
Multiplicação D-C multiply(a,b,n) if (n == 1) then return ab else aR ← bottom n/2 digits of a aL ← top remaining digits of a bR ← bottom n/2 digits of b bL ← top remaining digits of b return Multiply(aL,bL)pow(10,n) + (Multiply(aL,Br)+Multiply(aR,bL))*pow(10,n/2) + Multiply(aR,bR) Quatro Multiplicações^23
Multiplicação D-C