Algoritmos e complexidade Notas de aula - Arquivo Escolar
Algoritmos e complexidade Notas de aula - Arquivo Escolar Algoritmos e complexidade Notas de aula - Arquivo Escolar
9. Algoritmos em grafos Figura 9.1.: Grafo (esquerda) com circulação (direita) 9.1. Fluxos em redes Definição 9.1 Para um grafo direcionado G = (V, E) (E ⊆ V × V ) escrevemos δ + (v) = {(v, u) | (v, u) ∈ E} para os arcos saintes de v e δ − (v) = {(u, v) | (u, v) ∈ E} para os arcos entrantes em v. Seja G = (V, E, c) um grafo direcionado e capacitado com capacidades c : E → R nos arcos. Uma atribuição de fluxos aos arcos f : E → R em G se chama circulação, se os fluxos respeitam os limites da capacidade (fe ≤ ce) e satisfazem a conservação do fluxo f(v) := fe − fe = 0 (9.1) (ver Fig. 9.1). e∈δ + (v) e∈δ − (v) Lema 9.1 Qualquer atribuição de fluxos f satisfaz v∈V f(v) = 0. Prova. 198 f(v) = v∈V v∈V e∈δ + (v) = (v,u)∈E fe − e∈δ − (v) f (v,u) − (u,v)∈E fe f (u,v) = 0
9.1. Fluxos em redes A circulação vira um fluxo, se o grafo possui alguns vértices que são fontes ou destinos de fluxo, e portanto não satisfazem a conservação de fluxo. Um fluxo s–t possui um único fonte s e um único destino t. Um objetivo comum (transporte, etc.) é achar um fluxo s–t máximo. Fluxo s–t máximo Instância Grafo direcionado G = (V, E, c) com capacidades c nos arcos, um vértice origem s ∈ V e um vértice destino t ∈ V . Solução Um fluxo f, com f(v) = 0, ∀v ∈ V \ {s, t}. Objetivo Maximizar o fluxo f(s). Lema 9.2 Um fluxo s–t satisfaz f(s) + f(t) = 0. Prova. Pelo lema 9.1 temos v∈V f(v) = 0. Mas v∈V f(v) = f(s) + f(t) pela conservação de fluxo nos vértices em V \ {s, t}. Uma formulação como programa linear é maximiza f(s) (9.2) sujeito a f(v) = 0 ∀v ∈ V \ {s, t} 0 ≤ fe ≤ ce ∀e ∈ E. Observação 9.1 O programa (9.2) possui uma solução, porque fe = 0 é uma solução viável. O sistema não é ilimitado, porque todas variáveis são limitadas, e por isso possui uma solução ótima. O problema de encontrar um fluxo s–t máximo pode ser resolvido em tempo polinomial via programação linear. ♦ 9.1.1. Algoritmo de Ford-Fulkerson Nosso objetivo: Achar um algoritmo combinatorial mais eficiente. Idéia básica: Começar com um fluxo viável fe = 0 e aumentar ele gradualmente. 199
- 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
- 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: 9. Algoritmos em grafos 197
- 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
- Page 217 and 218: Objetivo Minimiza o valor c(M) de M
- Page 219 and 220: 9.2. Emparelhamentos Teorema 9.4 (B
- Page 221 and 222: 9.2. Emparelhamentos V1 e V2 com fl
- Page 223 and 224: 9.2. Emparelhamentos não sabemos c
- Page 225 and 226: 9.2. Emparelhamentos Sobre a implem
- Page 227 and 228: 9.2. Emparelhamentos reduzir o prob
- Page 229 and 230: v10 v9 v1 v8 v2 v3 v7 v6 v4 v5 v10
- Page 231 and 232: 10. Algoritmos de aproximação (As
- Page 233 and 234: 2 2 10.2. Aproximações para o PCV
- Page 235 and 236: 10.3. Algoritmos de aproximação p
- Page 237 and 238: 10.3. Algoritmos de aproximação p
- Page 239: Parte IV. Teoria de complexidade 23
- Page 242 and 243: 11. Do algoritmo ao problema Modelo
- Page 244 and 245: 11. Do algoritmo ao problema - entr
- Page 246 and 247: 11. Do algoritmo ao problema Lingua
- Page 248 and 249: 11. Do algoritmo ao problema Observ
9. <strong>Algoritmos</strong> em grafos<br />
Figura 9.1.: Grafo (esquerda) com circulação (direita)<br />
9.1. Fluxos em re<strong>de</strong>s<br />
Definição 9.1<br />
Para um grafo direcionado G = (V, E) (E ⊆ V × V ) escrevemos δ + (v) =<br />
{(v, u) | (v, u) ∈ E} para os arcos saintes <strong>de</strong> v e δ − (v) = {(u, v) | (u, v) ∈ E}<br />
para os arcos entrantes em v.<br />
Seja G = (V, E, c) um grafo direcionado e capacitado com capacida<strong>de</strong>s c :<br />
E → R nos arcos. Uma atribuição <strong>de</strong> fluxos aos arcos f : E → R em G se<br />
chama circulação, se os fluxos respeitam os limites da capacida<strong>de</strong> (fe ≤ ce) e<br />
satisfazem a conservação do fluxo<br />
f(v) := <br />
fe − <br />
fe = 0 (9.1)<br />
(ver Fig. 9.1).<br />
e∈δ + (v)<br />
e∈δ − (v)<br />
Lema 9.1<br />
Qualquer atribuição <strong>de</strong> fluxos f satisfaz <br />
v∈V f(v) = 0.<br />
Prova.<br />
198<br />
<br />
f(v) = <br />
v∈V<br />
<br />
v∈V e∈δ + (v)<br />
= <br />
(v,u)∈E<br />
fe − <br />
e∈δ − (v)<br />
f (v,u) − <br />
(u,v)∈E<br />
fe<br />
f (u,v) = 0