Algoritmos e complexidade Notas de aula - Arquivo Escolar
Algoritmos e complexidade Notas de aula - Arquivo Escolar Algoritmos e complexidade Notas de aula - Arquivo Escolar
7. Árvores de busca, backtracking e branch-and-bound Limitar • Para cada sub-árvore mantemos um limite inferior e um limite superior. – Limite inferior: Valor da melhor solução encontrada na sub-árvore. – Limite superior: Estimativa (p.ex. valor da relaxação linear na PI) • Observação: A eficiência do método depende crucialmente da qualidade do limite superior. Cortar sub-árvores Podemos cortar... 1. por inviabilidade: Sub-problema é inviável. 2. por limite: Limite superior da sub-árvore zi menor que limite inferior global z (o valor da melhor solução encontrada). 3. por otimalidade: Limite superior zi igual limite inferior zi da sub-árvore. 4. Observação: Como os cortes dependem do limite z, uma boa solução inicial pode reduzir a busca consideravelmente. Ramificar 164 • Não tem como cortar mais? Escolhe um nó e particiona. • Qual a melhor ordem de busca? • Busca por profundidade – V: Limite superior encontrado mais rápido. – V: Pouca memória (O(δd), para δ subproblemas e profundidade d). – V: Re-otimização eficiente do pai (método Simplex dual) – D: Custo alto, se solução ótima encontrada tarde. • Melhor solução primeiro (“best-bound rule”) – V: Procura ramos com maior potencial. – V: Depois encontrar solução ótima, não produz ramificações supérfluas. • Busca por largura? Demanda de memória é impraticável.
Algoritmos B&B Algoritmo 7.3 (B&B) Instância Programa inteiro P = max{c t x | Ax ≤ b, x ∈ Z n +}. Saida Solução inteira ótima. 7.2. Branch-and-bound 1 { usando função z para estimar limite superior } 2 z:=−∞ { limite i n f e r i o r } 3 A:= {(P, g(P ))} { nós ativos } 4 while A = ∅ do 5 Escolhe : (P, g(P ) ∈ A ; A := A \ (P, g(P )) 6 Ramifique : Gera subproblemas P1, . . . , Pn . 7 for a l l Pi , 1 ≤ i ≤ n do 8 { adiciona , se permite melhor solução } 9 i f z(Pi) > z then 10 A := A ∪ {(Pi, z(Pi))} 11 end i f 12 { atualize melhor solução } 13 i f ( s o l u ç ã o z(Pi) é v i á v e l ) then 14 z := z(Pi) 15 end i f 16 end for 17 end while Exemplo 7.2 (Aplicação Branch&Bound no PCV) Considera uma aplicação do PCV no grafo 2 1 2 2 3 1 1 1 3 1 3 4 2 Aplicando somente backtracking obtemos a seguinta árvore de busca: 1 5 165
- 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 and 134: 6.2. Resolver recorrências O algor
- Page 135 and 136: • Prove por indução que T (n) =
- 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 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
- Page 184 and 185: 8. Algoritmos de aproximação - Te
- Page 186 and 187: 8. Algoritmos de aproximação O qu
- Page 188 and 189: 8. Algoritmos de aproximação Como
- Page 190 and 191: 8. Algoritmos de aproximação decr
- Page 192 and 193: 8. Algoritmos de aproximação •
- Page 194 and 195: 8. Algoritmos de aproximação Apro
- Page 196 and 197: 8. Algoritmos de aproximação 12(l
- Page 199 and 200: 9. Algoritmos em grafos 197
- Page 201 and 202: 9.1. Fluxos em redes A circulação
- Page 203 and 204: + + − + Figura 9.3.: Manter a con
- Page 205 and 206: Prova. Seja f um fluxo s-t. Temos 9
- Page 207 and 208: 9.1. Fluxos em redes aumentou nessa
- Page 209 and 210: 9.1. Fluxos em redes Figura 9.5.: R
- Page 211 and 212: V ′ = V ∪ {s ∗ , t ∗ } 9.1.
- Page 213 and 214: s 30 19 12 i 10 10 j 10 10 10 1010
- Page 215 and 216: Solução Um fluxo s-t f com valor
7. Árvores <strong>de</strong> busca, backtracking e branch-and-bound<br />
Limitar<br />
• Para cada sub-árvore mantemos um limite inferior e um limite superior.<br />
– Limite inferior: Valor da melhor solução encontrada na sub-árvore.<br />
– Limite superior: Estimativa (p.ex. valor da relaxação linear na PI)<br />
• Observação: A eficiência do método <strong>de</strong>pen<strong>de</strong> crucialmente da qualida<strong>de</strong><br />
do limite superior.<br />
Cortar sub-árvores<br />
Po<strong>de</strong>mos cortar...<br />
1. por inviabilida<strong>de</strong>: Sub-problema é inviável.<br />
2. por limite: Limite superior da sub-árvore zi menor que limite inferior<br />
global z (o valor da melhor solução encontrada).<br />
3. por otimalida<strong>de</strong>: Limite superior zi igual limite inferior zi da sub-árvore.<br />
4. Observação: Como os cortes <strong>de</strong>pen<strong>de</strong>m do limite z, uma boa solução<br />
inicial po<strong>de</strong> reduzir a busca consi<strong>de</strong>ravelmente.<br />
Ramificar<br />
164<br />
• Não tem como cortar mais? Escolhe um nó e particiona.<br />
• Qual a melhor or<strong>de</strong>m <strong>de</strong> busca?<br />
• Busca por profundida<strong>de</strong><br />
– V: Limite superior encontrado mais rápido.<br />
– V: Pouca memória (O(δd), para δ subproblemas e profundida<strong>de</strong> d).<br />
– V: Re-otimização eficiente do pai (método Simplex dual)<br />
– D: Custo alto, se solução ótima encontrada tar<strong>de</strong>.<br />
• Melhor solução primeiro (“best-bound rule”)<br />
– V: Procura ramos com maior potencial.<br />
– V: Depois encontrar solução ótima, não produz ramificações supérfluas.<br />
• Busca por largura? Demanda <strong>de</strong> memória é impraticável.