Algoritmos e complexidade Notas de aula - Arquivo Escolar
Algoritmos e complexidade Notas de aula - Arquivo Escolar Algoritmos e complexidade Notas de aula - Arquivo Escolar
6. Divisão e conquista • Numa árvore de recursão cada nó representa o custo de um único subproblema da respectiva chamada recursiva • Somam-se os custos de todos os nós de um mesmo nível, para obter o custo daquele nível • Somam-se os custos de todos os níveis para obter o custo da árvore Exemplo Dada a recorrência T (n) = 3T (⌊n/4⌋) + Θ(n 2 ) • Em que nível da árvore o tamanho do problema é 1? No nível i = log 4 n = 1/2 log 2 n. • Quantos níveis tem a árvore? A árvore tem log 4 n+1 níveis (0, . . . , log 4 n). • Quantos nós têm cada nível? 3 i . • Qual o tamanho do problema em cada nível? n/4 i . • Qual o custo de cada nível i da árvore? 3 i c(n/4 i ) 2 . • Quantos nós tem o último nível? Θ(n log 4 3 ). • Qual o custo da árvore? log4 (n) i=0 n2 · (3/16) i = O(n2 ). Exemplo nível nós 0 Θ(n2 ) 30 1 Θ((n/4) 2 ) Θ((n/4)2 ) Θ((n/4) 2 ) 31 2 Θ((n/4 2 ) 2 ) Θ((n/4 2 ) 2 ) Θ((n/4 2 ) 2 ) 3 2 h = ⌈log 4 n⌉ · · · Θ((n/4 h ) 2 ) · · · 3 h Prova por substituição usando o resultado da árvore de recorrência 132 • O limite de O(n 2 ) deve ser um limite restrito, pois a primeira chamada recursiva é Θ(n 2 ). · · ·
• Prove por indução que T (n) = Θ(n 2 ) T (n) ≤ 3T (⌊n/4⌋) + cn 2 ≤ 3d ⌊n/4⌋ 2 + cn 2 ≤ 3d(n/4) 2 + cn 2 = 3 16 dn2 + cn 2 ≤ dn 2 . para 3d/16 + c ≤ d, ou seja, para valores d ≥ 16/13 c 6.2. Resolver recorrências Exemplo 6.6 Considere a recorrência T (n) = 3T (n/2) + cn do algoritmo de multiplicação de números binários (exemplo 6.4). A árvore tem log 2 n níveis, o nível i com 3 i nós, tamanho do problema n/2 i , trabalho cn/2 i por nó e portanto (3/2) i n trabalho total por nível. O número de folhas é 3 log 2 n e logo temos T (n) = 0≤i
- Page 84 and 85: 4. Algoritmos gulosos 1 V ′ := {v
- Page 86 and 87: 4. Algoritmos gulosos Algoritmo de
- Page 88 and 89: 4. Algoritmos gulosos Implementaç
- Page 90 and 91: 4. Algoritmos gulosos Variação do
- Page 92 and 93: 4. Algoritmos gulosos • Como comp
- Page 94 and 95: 4. Algoritmos gulosos Proposição
- Page 96 and 97: 4. Algoritmos gulosos Resultados O
- Page 98 and 99: 5. Programação dinâmica É simpl
- Page 100 and 101: 5. Programação dinâmica soluçã
- Page 102 and 103: 5. Programação dinâmica Teorema:
- Page 104 and 105: 5. Programação dinâmica e calcul
- Page 106 and 107: 5. Programação dinâmica 5.2.2. S
- Page 108 and 109: 5. Programação dinâmica 11 sol1
- Page 110 and 111: 5. Programação dinâmica O algori
- Page 112 and 113: 5. Programação dinâmica Dependen
- Page 114 and 115: 5. Programação dinâmica Análise
- Page 116 and 117: 5. Programação dinâmica curto do
- Page 118 and 119: 5. Programação dinâmica Logo, po
- Page 120 and 121: 5. Programação dinâmica (começa
- Page 122 and 123: 5. Programação dinâmica Árvore
- Page 125 and 126: 6. Divisão e conquista 6.1. Introd
- Page 127 and 128: Recorrências simplificadas Formalm
- Page 129 and 130: 6.2. Resolver recorrências • Usa
- Page 131 and 132: 6.2. Resolver recorrências Para co
- Page 133: 6.2. Resolver recorrências O algor
- Page 137 and 138: Saída A potência a n . 1 i f n =
- Page 139 and 140: 3 Quicksort (l ,m − 1 ,a ) ; 4 Qu
- Page 141 and 142: 6.2. Resolver recorrências 1. Se f
- Page 143 and 144: 6.3. Algoritmos usando divisão e c
- Page 145 and 146: 6.3. Algoritmos usando divisão e c
- Page 147 and 148: 6.3. Algoritmos usando divisão e c
- Page 149 and 150: 6.3. Algoritmos usando divisão e c
- Page 151 and 152: unidade. Em total a avaliação pro
- Page 153: 3. T (n) = 3T (n/4) + n log n 4. T
- Page 156 and 157: 7. Árvores de busca, backtracking
- Page 158 and 159: 7. Árvores de busca, backtracking
- Page 160 and 161: 7. Árvores de busca, backtracking
- Page 162 and 163: 7. Árvores de busca, backtracking
- Page 164 and 165: 7. Árvores de busca, backtracking
- Page 166 and 167: 7. Árvores de busca, backtracking
- Page 168 and 169: 7. Árvores de busca, backtracking
- Page 170 and 171: 7. Árvores de busca, backtracking
- Page 172 and 173: 7. Árvores de busca, backtracking
- Page 174 and 175: 7. Árvores de busca, backtracking
- Page 176 and 177: 7. Árvores de busca, backtracking
- Page 178 and 179: 7. Árvores de busca, backtracking
- Page 180 and 181: 8. Algoritmos de aproximação Clas
- Page 182 and 183: 8. Algoritmos de aproximação Exem
6. Divisão e conquista<br />
• Numa árvore <strong>de</strong> recursão cada nó representa o custo <strong>de</strong> um único subproblema<br />
da respectiva chamada recursiva<br />
• Somam-se os custos <strong>de</strong> todos os nós <strong>de</strong> um mesmo nível, para obter o<br />
custo daquele nível<br />
• Somam-se os custos <strong>de</strong> todos os níveis para obter o custo da árvore<br />
Exemplo<br />
Dada a recorrência T (n) = 3T (⌊n/4⌋) + Θ(n 2 )<br />
• Em que nível da árvore o tamanho do problema é 1? No nível i =<br />
log 4 n = 1/2 log 2 n.<br />
• Quantos níveis tem a árvore? A árvore tem log 4 n+1 níveis (0, . . . , log 4 n).<br />
• Quantos nós têm cada nível? 3 i .<br />
• Qual o tamanho do problema em cada nível? n/4 i .<br />
• Qual o custo <strong>de</strong> cada nível i da árvore? 3 i c(n/4 i ) 2 .<br />
• Quantos nós tem o último nível? Θ(n log 4 3 ).<br />
• Qual o custo da árvore? log4 (n)<br />
i=0 n2 · (3/16) i = O(n2 ).<br />
Exemplo<br />
nível nós<br />
0 Θ(n2 <br />
<br />
) <br />
<br />
30 1 Θ((n/4) 2 <br />
<br />
)<br />
<br />
<br />
Θ((n/4)2 ) Θ((n/4) 2 ) 31 2 Θ((n/4 2 ) 2 ) Θ((n/4 2 ) 2 ) Θ((n/4 2 ) 2 ) 3 2<br />
h = ⌈log 4 n⌉ · · · Θ((n/4 h ) 2 ) · · · 3 h<br />
Prova por substituição usando o resultado da árvore <strong>de</strong> recorrência<br />
132<br />
• O limite <strong>de</strong> O(n 2 ) <strong>de</strong>ve ser um limite restrito, pois a primeira chamada<br />
recursiva é Θ(n 2 ).<br />
· · ·