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 28 v := mate[u] 29 i f not mv then 30 Huv := true 31 U1 := U1 ∪ v 32 end i f 33 end for 34 end for 35 while ( not found ) 36 end Após da busca, podemos extrair um conjunto máximo de caminhos M-alternantes mínimos disjuntos. Enquanto existe um vértice livre em V2, nos extraimos um caminho alternante que termina em v como segue: 1 e x t r a c t p a t h (v ) := 2 P := v 3 while not (v ∈ V1 and v l i v r e ) do 4 i f v ∈ V1 5 v := mate [ v ] 6 else 7 v := e s c o l h e {u | Huv, uv ∈ M} 8 end i f 9 P := vP 10 end while 11 12 remove o caminho e todos v é r t i c e s sem p r e d e c e s s o r 13 end while 14 end Solução ponderada em grafos bi-partidos Dado um grafo G = (S . ∪ T, E) bipartido com pesos c : E → Q+ queremos achar um emparelhamento de maior peso. Escrevemos V = S ∪ T para o conjunto de todos vértice em G. Observação 9.9 O caso ponderado pode ser restrito para emparelhamentos perfeitos: caso S e T possuem cardinalidade diferente, podemos adicionar vértices, e depois completar todo grafo com arestas de custo 0. O problema de encontrar um emparelhamento perfeito máximo (ou mínimo) em grafos ponderados é conhecido pelo nome “problema de alocação” (ingl. assignment problem). ♦ Observação 9.10 A redução do teorema 9.6 para um problema de fluxo máximo não se aplica no caso ponderado. Mas, com a simplificação da observação 9.9, podemos 224
9.2. Emparelhamentos reduzir o problema no caso ponderado para um problema de fluxo de menor custo: a capacidade de todas arestas é 1, e o custo de transportação são os pesos das arestas. Como o emparelhamento é perfeito, procuramos um fluxo de valor |V |/2, de menor custo. ♦ O dual do problema 9.15 é a motivação para Definição 9.3 Um rotulamento é uma atribuição y : V → R+. Ele é viável caso yu + yv ≥ ce para todas arestas e = (u, v). (Um rotulamento viável é c-cobertura por vértices.) Uma aresta é apertada (ingl. tight) caso yu + yv = ce. O subgrafo de arestas apertadas é Gy = (V, E ′ , c) com E ′ = {e ∈ E | e apertada em y}. Pelo teorema forte de dualidade e o fato que a relaxação linear dos sistemas acima possui uma solução integral (ver observação 9.3) temos Teorema 9.11 (Egerváry [22]) Para um grafo bi-partido G = (S . ∪ T, E, c) com pesos não-negativos c : E → Q+ nas arestas, o maior peso de um emparelhamento perfeito é igual ao peso da menor c-cobertura por vértices. O método húngaro A aplicação de um caminho M-aumentante P = (v1v2 . . . v2n+1) resulta num emparelhamento de peso c(M) + i impar cvivi+1 − i par cvivi+1. Isso motiva a definição de uma árvore húngara ponderada. Para um emparelhamento M, seja HM o grafo direcionado com as arestas e ∈ M orientadas de T para S com peso le := we, e com as restantes arestas e ∈ E \ M orientadas de S para T com peso le := −we. Com isso a aplicação do caminho M-aumentante P produz um emparelhamento de peso c(M) − l(P ) em que l(P ) = 1≤i≤2n lvivi+1 é o comprimento do caminho P . Com isso podemos modificar o algoritmo para emparelhamentos máximos para Algoritmo 9.3 (Emparelhamento de peso máximo) Entrada Grafo não-direcionado ponderado G = (V, E, c). Saída Um emparelhamento de maior peso c(M). 1 M = ∅ 2 while ( e x i s t e um caminho M aumentante P ) do 3 encontra o caminho M aumentante mínimo P em HM 4 caso l(P ) ≥ 0 break ; 225
- 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
- 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: 9.2. Emparelhamentos Sobre a implem
- 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
- Page 250 and 251: 11. Do algoritmo ao problema Decibi
- Page 253 and 254: 12. Classes de complexidade 12.1. D
- Page 255 and 256: 12.2. Hierarquias básicas Prova. (
- Page 257 and 258: 12.2. Hierarquias básicas 1. Temos
- Page 259: 12.3. Exercícios 12.3. Exercícios
- Page 262 and 263: 13. Teoria de NP-completude • Int
- Page 264 and 265: 13. Teoria de NP-completude C-≤-d
- Page 266 and 267: 13. Teoria de NP-completude Ladrilh
- Page 268 and 269: 13. Teoria de NP-completude (q, a)
- Page 270 and 271: 13. Teoria de NP-completude Sejam c
- Page 272 and 273: 13. Teoria de NP-completude Decisã
- Page 275 and 276: 14. Fora do NP Classes fora do P-NP
9. <strong>Algoritmos</strong> em grafos<br />
28 v := mate[u]<br />
29 i f not mv then<br />
30 Huv := true<br />
31 U1 := U1 ∪ v<br />
32 end i f<br />
33 end for<br />
34 end for<br />
35 while ( not found )<br />
36 end<br />
Após da busca, po<strong>de</strong>mos extrair um conjunto máximo <strong>de</strong> caminhos M-alternantes<br />
mínimos disjuntos. Enquanto existe um vértice livre em V2, nos extraimos um<br />
caminho alternante que termina em v como segue:<br />
1 e x t r a c t p a t h (v ) :=<br />
2 P := v<br />
3 while not (v ∈ V1 and v l i v r e ) do<br />
4 i f v ∈ V1<br />
5 v := mate [ v ]<br />
6 else<br />
7 v := e s c o l h e {u | Huv, uv ∈ M}<br />
8 end i f<br />
9 P := vP<br />
10 end while<br />
11<br />
12 remove o caminho e todos v é r t i c e s sem p r e d e c e s s o r<br />
13 end while<br />
14 end<br />
Solução pon<strong>de</strong>rada em grafos bi-partidos Dado um grafo G = (S . ∪ T, E)<br />
bipartido com pesos c : E → Q+ queremos achar um emparelhamento <strong>de</strong><br />
maior peso. Escrevemos V = S ∪ T para o conjunto <strong>de</strong> todos vértice em G.<br />
Observação 9.9<br />
O caso pon<strong>de</strong>rado po<strong>de</strong> ser restrito para emparelhamentos perfeitos: caso S<br />
e T possuem cardinalida<strong>de</strong> diferente, po<strong>de</strong>mos adicionar vértices, e <strong>de</strong>pois<br />
completar todo grafo com arestas <strong>de</strong> custo 0. O problema <strong>de</strong> encontrar um<br />
emparelhamento perfeito máximo (ou mínimo) em grafos pon<strong>de</strong>rados é conhecido<br />
pelo nome “problema <strong>de</strong> alocação” (ingl. assignment problem). ♦<br />
Observação 9.10<br />
A redução do teorema 9.6 para um problema <strong>de</strong> fluxo máximo não se aplica<br />
no caso pon<strong>de</strong>rado. Mas, com a simplificação da observação 9.9, po<strong>de</strong>mos<br />
224