⎩⎨⎧T(n)∈Θ(nlogba)T(n)∈Θ(nlogbalogk+1n)T(n)∈Θ(f(n))∣f(n)=O(nlogba−ϵ), para ϵ>0,∣f(n)=Θ(nlogbalogkn), para k≥0,∣f(n)=Ω(nlogba+ϵ), para ϵ>0 e af(n/b)≤cf(n).
Hipótese Indutiva: Assumimos que T(k)≤c⋅klgk para todo k<n.
Passo 2: Substituição
Substitua T(n/2) pela sua hipótese.
T(n)=2⋅[HIPOˊTESE AQUI]+n
T(n)=2⋅[c(n/2)lg(n/2)]+n
Passo 3: A Álgebra (Onde a mágica acontece)
Expanda a matemática. Lembre-se que lg(a/b)=lga−lgb.
T(n)=c⋅n(lgn−lg2)+n
T(n)=c⋅nlgn−c⋅n⋅1+n(Note que lg2=1)
T(n)=c⋅nlgn−cn+n
T(n)=c⋅nlgn−n(c−1)
Passo 4: Conclusão
Queremos provar que T(n)≤c⋅nlgn.
Olhe para a última linha: T(n)=O que queremosc⋅nlgn−Reston(c−1).
Para que isso seja ≤c⋅nlgn, o "resto" precisa ser subtraído (ou seja, positivo).
n(c−1)≥0⟹c≥1
Fim da prova.
Divisão e Conquista - Algoritmos
O paradigma segue três passos:
Divisão: Particionar o problema em subproblemas menores.
Conquista: Resolver os subproblemas recursivamente.
Combinação: Juntar as soluções dos subproblemas na solução original.
1. Mergesort (Clássico / 2-vias)
Recorrência
T(n)=2T(n/2)+n
Explicação
O algoritmo divide o vetor na metade, ordena recursivamente cada metade e depois intercala (merge) as duas metades ordenadas.
Divisão:n→n/2∣b=2.
Ramificação: 2 chamadas recursivas (a=2).
Combinação: Para intercalar 2 listas, fazemos 1 comparação para decidir o menor elemento. Custo: 1n.
Complexidade (Teorema Mestre)
Comparamos nlog22=n1 com f(n)=n.
Empate (Caso 2):Θ(nlogn).
2. Mergesort (Variação / 3-vias)
Recorrência
T(n)=3T(n/3)+n
O algoritmo divide o vetor em três partes, ordena cada uma e intercala as três.
Divisão:n→n/3∣b=3.
Ramificação: 3 chamadas recursivas (a=3).
Combinação: Para intercalar 3 listas, precisamos descobrir o mínimo entre 3 elementos (x,y,z). Isso exige 2 comparações. Custo: 2n e Θ(2n)=Θ(n) por isso na recorrência não é mostrado esse tradeoff.
Complexidade (Teorema Mestre)
Comparamos nlog33=n1 com f(n)=n.
Empate (Caso 2):Θ(nlogn).
Nota: Para o Teorema Mestre, n e 2n pertencem à mesma classe de complexidade (Linear), por isso o resultado assintótico é o mesmo.
3. Trade-off: Por que o 3-vias é "pior"?
Apesar de ambos serem Θ(nlogn), o Mergesort de 3 partes é geralmente mais lento na prática. Isso acontece devido às constantes ocultas na notação assintótica.
Análise das Recorrências "Honestas" (Contando comparações)
Algoritmo-----
Recorrência Exata-----------
Altura da Árvore-----
Custo por Nível
2-vias
T(n)=2T(n/2)+1n
log2n
1n
3-vias
T(n)=3T(n/3)+2n
log3n
2n
A Batalha Matemática
Vantagem do 3-vias: A árvore fica mais baixa.
log3n≈0.63⋅log2n (Redução de ~37% na altura).
Desvantagem do 3-vias: O custo de combinação dobra.
O trabalho por nível passa de 1n para 2n (Aumento de 100% no custo).
Conclusão: O esforço extra na combinação (dobro de comparações) supera o ganho obtido pela redução da altura da árvore.
Assintoticamente: Iguais (Θ).
Desempenho Real: O clássico (2-vias) é mais eficiente.
Ordenação Baseada em Estruturas de Dados
Heapsort
[...]
notas
O Teorema Mestre é um atalho para a Árvore de Recursão
O Teorema Mestre é um atalho para a Árvore de Recursão resumindo o problema a uma batalha de pesos entre o Custo da Raiz (f(n)) e o Custo das Folhas (nlogba).
Custo das Folhas = nlogba?
Sim, que é o número de folhas e cada folha ter custo 1 por definição. Número de folhas no nível (i) é (ai).
Com isso achamos o valor de ? que no exemplo da tabela era log2n.
Então o número de nós no nível folha em (T(n)=4T(n/3)+nlogn) é igual a 4log3n, e usando a propriedade do log, trocamos 4 e n, ficando nlog34 que é nlogba
Insights dessa Análise (A Geometria do Custo)
1. A Regra do a vs b (Quem domina a soma?)
A relação entre a taxa de ramificação (a) e a taxa de divisão (b) define o formato do custo:
Topo Pesado / Decaimento (a<bk)
O custo diminui descendo a árvore. A Raiz domina.
Resposta: Θ(f(n)).
Retângulo / Equilíbrio (a=bk)
O custo é constante em todos os níveis. Empate.
Resposta: Θ(f(n)⋅logn).
Fundo Pesado / Explosão (a>bk)
O custo aumenta descendo a árvore. As Folhas dominam.