grafos – parte 1aleardo/cursos/ed2/grafos3.pdf · fluxo, dada por cap(e) em geral o problema é...

21
Grafos – Parte 3

Upload: truongkien

Post on 21-Jan-2019

219 views

Category:

Documents


0 download

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Caminhos