grafos – parte 1aleardo/cursos/ed2/grafos3.pdf · fluxo, dada por cap(e) em geral o problema é...
TRANSCRIPT
![Page 1: Grafos – Parte 1aleardo/cursos/ed2/grafos3.pdf · fluxo, dada por cap(e) Em geral o problema é determinar o máximo fluxo possível entre fonte e escoadouro. Fluxos em redes](https://reader033.vdocuments.pub/reader033/viewer/2022052715/5c45cbeb93f3c34c643f9b9e/html5/thumbnails/1.jpg)
Grafos – Parte 3
![Page 2: Grafos – Parte 1aleardo/cursos/ed2/grafos3.pdf · fluxo, dada por cap(e) Em geral o problema é determinar o máximo fluxo possível entre fonte e escoadouro. Fluxos em redes](https://reader033.vdocuments.pub/reader033/viewer/2022052715/5c45cbeb93f3c34c643f9b9e/html5/thumbnails/2.jpg)
Fluxos em redes
● Uma rede é um dígrafo em que existe um vértice fonte e um vértice escoadouro
● Para cada aresta associa-se uma capacidade de fluxo, dada por cap(e)
● Em geral o problema é determinar o máximo fluxo possível entre fonte e escoadouro
![Page 3: Grafos – Parte 1aleardo/cursos/ed2/grafos3.pdf · fluxo, dada por cap(e) Em geral o problema é determinar o máximo fluxo possível entre fonte e escoadouro. Fluxos em redes](https://reader033.vdocuments.pub/reader033/viewer/2022052715/5c45cbeb93f3c34c643f9b9e/html5/thumbnails/3.jpg)
Fluxos em redes
![Page 4: Grafos – Parte 1aleardo/cursos/ed2/grafos3.pdf · fluxo, dada por cap(e) Em geral o problema é determinar o máximo fluxo possível entre fonte e escoadouro. Fluxos em redes](https://reader033.vdocuments.pub/reader033/viewer/2022052715/5c45cbeb93f3c34c643f9b9e/html5/thumbnails/4.jpg)
Fluxos em redes
● Uma solução para o problema de fluxo máximo é dada pelo algoritmo de Ford-Fulkerson
● Esse algoritmo trabalha com a idéia de cortes longitudinais no grafo
● Um corte separa dois subconjuntos de vértices do grafo
![Page 5: Grafos – Parte 1aleardo/cursos/ed2/grafos3.pdf · fluxo, dada por cap(e) Em geral o problema é determinar o máximo fluxo possível entre fonte e escoadouro. Fluxos em redes](https://reader033.vdocuments.pub/reader033/viewer/2022052715/5c45cbeb93f3c34c643f9b9e/html5/thumbnails/5.jpg)
Fluxos em redes
● Capacidade de um corte é definido como a soma das capacidades de todas as arestas que saem de um vértice num dos lados para um vértice do outro lado do corte
● O fluxo máximo numa rede é dado pela capacidade mínima de qualquer corte
![Page 6: Grafos – Parte 1aleardo/cursos/ed2/grafos3.pdf · fluxo, dada por cap(e) Em geral o problema é determinar o máximo fluxo possível entre fonte e escoadouro. Fluxos em redes](https://reader033.vdocuments.pub/reader033/viewer/2022052715/5c45cbeb93f3c34c643f9b9e/html5/thumbnails/6.jpg)
Fluxos em redes
● A identificação do caminho de máximo fluxo é feita pela identificação dos cortes de capacidade mínima
● A cada corte identificado deve-se fazer a alocação do caminho de aumento de fluxo, que é uma seqüência de arestas com folga de fluxo
![Page 7: Grafos – Parte 1aleardo/cursos/ed2/grafos3.pdf · fluxo, dada por cap(e) Em geral o problema é determinar o máximo fluxo possível entre fonte e escoadouro. Fluxos em redes](https://reader033.vdocuments.pub/reader033/viewer/2022052715/5c45cbeb93f3c34c643f9b9e/html5/thumbnails/7.jpg)
Fluxos em redes
● O algoritmo de Ford-Fulkerson faz isso de forma sistemática
● Para isso usa busca em profundidade, marcando todos os vértices e caminhos com fluxos esgotados
![Page 8: Grafos – Parte 1aleardo/cursos/ed2/grafos3.pdf · fluxo, dada por cap(e) Em geral o problema é determinar o máximo fluxo possível entre fonte e escoadouro. Fluxos em redes](https://reader033.vdocuments.pub/reader033/viewer/2022052715/5c45cbeb93f3c34c643f9b9e/html5/thumbnails/8.jpg)
Fluxos em redes
● Edmonds e Karp propuseram uma variante ao algoritmo de Ford-Fulkerson em que se faz a busca em amplitude
● Dinic propôs um algoritmo em que se mistura ambas formas de busca, iniciando em amplitude e depois trabalhando em profundidade
![Page 9: Grafos – Parte 1aleardo/cursos/ed2/grafos3.pdf · fluxo, dada por cap(e) Em geral o problema é determinar o máximo fluxo possível entre fonte e escoadouro. Fluxos em redes](https://reader033.vdocuments.pub/reader033/viewer/2022052715/5c45cbeb93f3c34c643f9b9e/html5/thumbnails/9.jpg)
Caminhos
● Existem dois caminhos especiais em grafos, que são:
● Caminhos eulerianos
● Ciclos hamiltonianos
![Page 10: Grafos – Parte 1aleardo/cursos/ed2/grafos3.pdf · fluxo, dada por cap(e) Em geral o problema é determinar o máximo fluxo possível entre fonte e escoadouro. Fluxos em redes](https://reader033.vdocuments.pub/reader033/viewer/2022052715/5c45cbeb93f3c34c643f9b9e/html5/thumbnails/10.jpg)
Caminhos Eulerianos
● Um caminho Euleriano é aquele que cruza todas as arestas de um vértice, passando apenas uma única vez em cada aresta
● Seu nome vem de Euler, que primeiro identificou a solução para caminhos dessa forma
![Page 11: Grafos – Parte 1aleardo/cursos/ed2/grafos3.pdf · fluxo, dada por cap(e) Em geral o problema é determinar o máximo fluxo possível entre fonte e escoadouro. Fluxos em redes](https://reader033.vdocuments.pub/reader033/viewer/2022052715/5c45cbeb93f3c34c643f9b9e/html5/thumbnails/11.jpg)
Caminhos Eulerianos
![Page 12: Grafos – Parte 1aleardo/cursos/ed2/grafos3.pdf · fluxo, dada por cap(e) Em geral o problema é determinar o máximo fluxo possível entre fonte e escoadouro. Fluxos em redes](https://reader033.vdocuments.pub/reader033/viewer/2022052715/5c45cbeb93f3c34c643f9b9e/html5/thumbnails/12.jpg)
Caminhos Eulerianos
![Page 13: Grafos – Parte 1aleardo/cursos/ed2/grafos3.pdf · fluxo, dada por cap(e) Em geral o problema é determinar o máximo fluxo possível entre fonte e escoadouro. Fluxos em redes](https://reader033.vdocuments.pub/reader033/viewer/2022052715/5c45cbeb93f3c34c643f9b9e/html5/thumbnails/13.jpg)
Caminhos Eulerianos
● Um circuito euleriano é um caminho euleriano fechado, isto é, que parte e termina no mesmo vértice
● Euler mostrou que esse circuito existe se todos os vértices possuem número par de arestas incidentes
![Page 14: Grafos – Parte 1aleardo/cursos/ed2/grafos3.pdf · fluxo, dada por cap(e) Em geral o problema é determinar o máximo fluxo possível entre fonte e escoadouro. Fluxos em redes](https://reader033.vdocuments.pub/reader033/viewer/2022052715/5c45cbeb93f3c34c643f9b9e/html5/thumbnails/14.jpg)
Caminhos Eulerianos
● Euler mostrou também que se apenas dois vértices possuírem número ímpar de arestas incidentes, então existe um caminho euleriano
● Qualquer outra situação não produzirá um caminho euleriano
● Fleury propôs um algoritmo para encontrar um ciclo euleriano
![Page 15: Grafos – Parte 1aleardo/cursos/ed2/grafos3.pdf · fluxo, dada por cap(e) Em geral o problema é determinar o máximo fluxo possível entre fonte e escoadouro. Fluxos em redes](https://reader033.vdocuments.pub/reader033/viewer/2022052715/5c45cbeb93f3c34c643f9b9e/html5/thumbnails/15.jpg)
Algoritmo de Fleury
● O algoritmo de Fleury trabalha percorrendo o grafo, eliminando as arestas já percorridas
● Nesse procedimento é preciso cuidar para que nenhuma retirada crie dois grafos desconexos
![Page 16: Grafos – Parte 1aleardo/cursos/ed2/grafos3.pdf · fluxo, dada por cap(e) Em geral o problema é determinar o máximo fluxo possível entre fonte e escoadouro. Fluxos em redes](https://reader033.vdocuments.pub/reader033/viewer/2022052715/5c45cbeb93f3c34c643f9b9e/html5/thumbnails/16.jpg)
Caminhos
![Page 17: Grafos – Parte 1aleardo/cursos/ed2/grafos3.pdf · fluxo, dada por cap(e) Em geral o problema é determinar o máximo fluxo possível entre fonte e escoadouro. Fluxos em redes](https://reader033.vdocuments.pub/reader033/viewer/2022052715/5c45cbeb93f3c34c643f9b9e/html5/thumbnails/17.jpg)
Caminhos
![Page 18: Grafos – Parte 1aleardo/cursos/ed2/grafos3.pdf · fluxo, dada por cap(e) Em geral o problema é determinar o máximo fluxo possível entre fonte e escoadouro. Fluxos em redes](https://reader033.vdocuments.pub/reader033/viewer/2022052715/5c45cbeb93f3c34c643f9b9e/html5/thumbnails/18.jpg)
Caminhos Hamiltonianos
● Um caminho Hamiltoniano (ou ciclo Hamiltoniano) é aquele que parte de um dado vértice e passa por todos os demais vértices até retornar ao inicial
● Uma aplicação muito importante é o chamado problema do caixeiro viajante (traveling salesman problem – TSP), em que se busca o ciclo de menor custo
![Page 19: Grafos – Parte 1aleardo/cursos/ed2/grafos3.pdf · fluxo, dada por cap(e) Em geral o problema é determinar o máximo fluxo possível entre fonte e escoadouro. Fluxos em redes](https://reader033.vdocuments.pub/reader033/viewer/2022052715/5c45cbeb93f3c34c643f9b9e/html5/thumbnails/19.jpg)
Caminhos Hamiltonianos
● Algoritmo da força bruta é o único que garante solução ótima, porém seu custo computacional é inviável
● Algoritmos aproximados (aresta mais barata, vizinho mais próximo) são mais rápidos porém não garantem a solução ótima
![Page 20: Grafos – Parte 1aleardo/cursos/ed2/grafos3.pdf · fluxo, dada por cap(e) Em geral o problema é determinar o máximo fluxo possível entre fonte e escoadouro. Fluxos em redes](https://reader033.vdocuments.pub/reader033/viewer/2022052715/5c45cbeb93f3c34c643f9b9e/html5/thumbnails/20.jpg)
Caminhos
![Page 21: Grafos – Parte 1aleardo/cursos/ed2/grafos3.pdf · fluxo, dada por cap(e) Em geral o problema é determinar o máximo fluxo possível entre fonte e escoadouro. Fluxos em redes](https://reader033.vdocuments.pub/reader033/viewer/2022052715/5c45cbeb93f3c34c643f9b9e/html5/thumbnails/21.jpg)
Caminhos