Você está na página 1de 50

DISCIPLINA DE OTIMIZAO

GRAFOS EULERIANOS E O PROBLEMA DO CARTEIRO CHINS (PCC)

Leandro Freitas Martins Rennan Aquino Neri

INTRODUO
Diversos problemas prticos so abordados em relao ao roteamento de arcos. Dentre eles podem ser citados: a entrega de cartas, a coleta de lixo domstico, a fiscalizao de linhas de nibus, a inspeo de redes eltricas, Nebulizao (fumac) no combate dengue, Limpeza das ruas Pintura de linhas no centro das ruas Patrulhamento da polcia A reduo de custos desses problemas faz com que sejam otimizadas.

OBJETIVO
O objetivo descrever o mtodo de cobertura de arcos atravs do Problema do Carteiro Chins (PCC), de forma a determinar uma rota de custo mnimo, para que todos os arcos do grafo sejam percorridos ao menos uma vez.

INTRODUO
Caminhos que usam todos os vrtices ou todas as arestas de um grafo so geralmente chamados de percursos; Uma grande variedade de problemas prticos podem ser vistos como um percurso num grafo Eles se dividem em duas categorias:
Problemas do tipo euleriano Problemas do tipo hamiltoniano

INTRODUO
Problemas do tipo euleriano: requerem que cada aresta seja percorrida pelo menos uma vez. Problemas do tipo hamiltoniano: requerem que cada vrtice seja percorrido pelo menos uma vez. Exemplos clssicos de otimizao: o problema do carteiro chins e o problema do caixeiro viajante

Caminho Euleriano Leonhard Euler, que foi um matemtico e fsico suo, em 1736, provou que no existia caminho que possibilitasse tais restries. Euler transformou os caminhos em retas e suas interseces em pontos criando possivelmente o primeiro grafo da histria; Ento percebeu que s seria possvel atravessar o caminho inteiro passando uma nica vez em cada ponte se houvessem no mximo dois pontos de onde saia um nmero mpar de caminhos; Em 1873, Carl Hierholzer mostrou que um grafo cujo todos os vrtices tm grau par euleriano.

Grafos Eulerianos
Um percurso euleriano um percurso que contm todos as arestas do grafo Um circuito euleriano um percurso euleriano fechado Um grafo euleriano um grafo que contm um circuito euleriano Um circuito euleriano no grafo <u,v,t,u,w,t,z,w,x,y,z,u>
u t z y

Caminho Euleriano Um grafo conexo G um Grafo Euleriano se e somente se todos os seus vrtices so grau par. Caminho Euleriano Baseado no grau dos vrtices do grafo: existe um caminho Euleriano em um grafo se: Existem 2 vrtices de grau mpar (inicia em um vrtice mpar e termina em outro vrtice mpar)

Problemas Eulerianos
As pontes de Knigsberg: possvel fazer um percurso atravessando todas as pontes, sem repetir nenhuma?

Problemas Eulerianos
Euler percebeu que s seria possvel atravessar o caminho inteiro passando uma nica vez em cada ponte se houvessem exatamente dois pontos de onde sassem um nmero mpar de caminhos.

O Problema do Carteiro Chins


O matemtico chins Meigu introduziu o problema em 1962: Guan

Achar o caminho fechado mais curto que percorra todas as arestas de um grafo pelo menos uma vez. o problema do carteiro que quer entregar a correspondncia numa rede de ruas e retornar ao escritrio central o mais rpido possvel.

O Problema do Carteiro Chins


Definio: um circuito do carteiro em um grafo G um caminho fechado que usa cada aresta de G pelo menos uma vez

Definio: em um grafo com peso nas arestas, um circuito timo do carteiro um circuito do carteiro cujo peso total das arestas mnimo

O Problema do Carteiro Chins


A idia duplicar arestas nos vrtices de grau mpar, fazendo com que o grafo tenha um circuito euleriano. O ponto chave do algoritmo descobrir as arestas de caminho mais curto entre os vrtices de grau mpar

O Problema do Carteiro Chins


Exemplo: achar o circuito timo do carteiro no grafo abaixo:
a
3 d 6

6
2

c
3

f 4

5
g 10

6
h 5 i

O grafo no tem um circuito euleriano (existem vrtices de grau mpar), ento necessrio repetir arestas no circuito.

O Problema do Carteiro Chins


Soluo: duplicar arestas para os vrtices de grau mpar e obter um circuito euleriano no grafo
6
2 d 6 e 5 f 4 h 10 5 i

a
3

c
3

5
g

Encontre a soluo para este exemplo


:

Exemplo
Encontrar o caminho fechado de custo mnimo passando em todas as arestas do grafo G pelo menos uma vez Vrtices de grau mpar: V2 e V3 Caminho: V1-V2-V4-V3-V2-V3-V1 Custo: 5+2+3+1+1+(1) = 13
v2 5 v2

2
1 v4

2 1 1

v1

v1
1

v4
3

1 v3

v3

Algoritmo para achar um percurso timo do carteiro chins num grafo

FIM!!

Pseudo cdigo
#include <cstdlib> #include <iostream> using namespace std; struct aresta { int origem, destino, custo; }; int main(int argc, char *argv[]) { aresta E[1000]; scanf("%d%d", &nvertices, &narestas); for(int i=0; i < narestas; ++i) { scanf("%d%d%d", &oriegemDaAresta, &destinoDaAresta, &custoDaAresta); E[i].origem = origemDaAresta; E[i].destino = destinoDaAresta; E[i].custo = custoDaAresta; } for (int v = 0; v < nvertices; ++v){ grauExtra[v] = 0; }

O Problema do Carteiro Chins


O algoritmo de Edmonds e Johnson usa as seguintes definies:
Definio: um casamento em um grafo G um subconjunto M de arestas de G tal que nenhum par de arestas em M tem um ponto final (vrtice) em comum
a y g e c v h w f d b z

M = {a,d}, {c,b}, {e,b}, ...

O Problema do Carteiro Chins


O algoritmo de Edmonds e Johnson usa as seguintes definies:
Definio: um casamento perfeito em um grafo G um casamento em que todo vrtice de G um ponto final de uma das arestas de M

b z

M = {a,d}, {c,b}

x c w d

O Problema do Carteiro Chins


Entrada: Sada: Um grafo conectado G com peso nas arestas Um circuito timo do carteiro W

Algoritmo: Circuito timo do Carteiro Ache o conjunto S de vrtices com grau mpar Para cada par de vrtices u e v em S Ache duv, o caminho mais curto entre u e v Forme um grafo completo K com os vrtices em S Para cada aresta e do grafo completo K Atribua o peso duv para a aresta e=<u,v> Ache um casamento perfeito M em K cujo peso total das arestas mnimo Duplique as arestas de G correspondentes ao casamento M Construa um circuito euleriano W no novo grafo G W corresponde a um circuito timo do carteiro em G

Outros Problemas Eulerianos


Variaes do problema do carteiro chins aparecem em diversas aplicaes:
Coleta de lixo Limpeza das ruas Pintura de linhas no centro das ruas Patrulhamento da polcia

Grafos Hamiltonianos
Definio: um caminho hamiltoniano em um grafo G um caminho simples que contm todos os vrtices de G. Definio: um ciclo hamiltoniano um caminho hamiltoniano fechado Definio: um grafo hamiltoniano um grafo que tem um ciclo hamiltoniano
u t z y

Grafos Hamiltonianos
No existe uma regra simples (como para os grafos eulerianos) para caracterizar um grafo como hamiltoniano O problema de saber se um grafo qualquer hamiltoniano NP-completo Um algoritmo de tempo polinomial para resolver o problema no conhecido

Grafos Hamiltonianos
No existe um algoritmo que funcione para qualquer grafo, mas:
Existem condies suficientes para um grafo ser hamiltoniano que se aplicam a uma grande classe de grafos Existem algumas regras bsicas que ajudam a identificar grafos que no so hamiltonianos

Grafos No Hamiltonianos
As regras so baseadas na observao que um ciclo hamiltoniano deve conter exatamente duas arestas incidentes em cada vrtice A estratgia para aplicar as regras iniciar a construo de um ciclo hamiltoniano e mostrar que em algum ponto as regras se contradizem

Grafos No Hamiltonianos
Regras para grafos no-hamiltonianos:
Se um vrtice v tem grau 2, todas as arestas incidentes em v devem fazer parte de qualquer ciclo hamiltoniano Durante a construo, nenhum ciclo pode ser formado at todos os vrtices terem sido visitados Se durante a construo, duas arestas incidentes em um vrtice v so necessrias, todas as outras arestas incidentes podem ser apagadas

Grafos No Hamiltonianos
Exemplo:
Regra 1 Regra 2 Regra 3
a f g e d w x c b v h

Grafos No Hamiltonianos
Exemplo

Regra 1

Regra 3
v w x

Grafos Hamiltonianos
Teorema (Ore, 1960): Seja G um grafo simples de n vrtices, onde n 3, tal que deg(x) + deg(y) n para cada par de vrtices no adjacentes x e y. Ento G hamiltoniano

v u

Grafos Hamiltonianos
Corolrio (Dirac 1952): Seja G um grafo simples com n vrtices, onde n 3, tal que deg(v) n/2 para cada vrtice v. Ento G hamiltoniano
v w

Grafos Hamiltonianos
Exerccio: identifique se o grafo abaixo ou no hamiltoniano

Grafos Hamiltonianos
Exerccio: identifique se o grafo abaixo ou no hamiltoniano

t u w

z y

v s

Grafos Hamiltonianos
Exerccio: identifique se o grafo abaixo ou no hamiltoniano

t u w

z y

v s

O Problema do Caixeiro Viajante


O problema do caixeiro viajante consiste em minimizar o custo de um caixeiro viajante que deseja percorrer n cidades, visitando cada cidade apenas uma vez, e retornar para casa.

10 u

t
7

9 z 10 9

7 11
v

O Problema do Caixeiro Viajante


Dantzig, Fulkerson e Johnson foram os primeiros a encontrar uma soluo tima usando 49 cidades em 1954
Branch and Bound Cutting planes

Crowder e Padberg conseguiram uma soluo tima para o problema usando 318 cidades em 1980
Branch and Bound Facet-defining inequalities

Heursticas e Aproximaes
Definio: uma heurstica um procedimento que ajuda na tomada de uma deciso quando existem mltiplas alternativas Heursticas so aplicadas quando impossvel avaliar todas as possibilidades. o que faz, por exemplo, o jogador de xadrez

Heursticas e Aproximaes
Definio: um algoritmo heurstico um algoritmo cujos passos so guiados por uma heurstica. Um algoritmo heurstico abdica da garantia de achar a melhor soluo, para que uma soluo possa ser encontrada rapidamente A heurstica mais simples para o caixeiro viajante a do vizinho mais prximo

Heursticas e Aproximaes
Segundo (BARR et al., 2001), Mtodos Heursticos, tambm chamados algoritmos aproximativos, procedimentos inexatos, algoritmos incorretos, ou simplesmente heursticos so usados para identificar boas solues aproximadas para cada problema em menos tempo que os algoritmos exatos (quando este existir).

Heursticas Construtivas
Heursticas Construtivas As Heursticas de mtodos construtivos iniciam, sem nenhum resultado, a soluo de um problema e constroem passo a passo uma soluo vivel. Apresentam algoritmos gulosos, os quais, devido a enxergarem apenas o que est mais prximo do objetivo desejado, so tambm chamados de algoritmos mopes.

Heursticas Construtivas
Quando se trata de solucionar o PCV, as variaes desta classe de algoritmo, que se apresentam com maior destaque, so: o vizinho mais prximo; a insero mais prxima; a insero mais distante; a insero mais barata; a insero pelo maior ngulo; o mtodo das economias.

Heursticas para o PCV


Entrada: um grafo completo com pesos nas arestas
Sada: uma seqncia de vrtices que formam um ciclo hamiltoniano

Algoritmo: Vizinho mais prximo Inicie em qualquer vrtice v rtulo(v) = 0 i = 0 Enquanto existirem vrtices no rotulados i = i + 1 Percorra a aresta de menor custo que une v a um vrtice no rotulado w rtulo(w) = i v = w

Heursticas para o PCV


O algoritmo do vizinho mais prximo rpido e fcil de implementar As vezes ele produz resultados muito bons, podendo inclusive achar o timo, como no exemplo abaixo se iniciarmos em s
10 u

s
7

9 z

7
11 v

10 9 w

Heursticas para o PCV


Entretanto, em geral, o algoritmo do vizinho mais prximo pode achar ciclos hamiltonianos ruins (com custo elevado)

1000000 2

1
2 t 1 u

Heursticas para o PCV

Aplicaes do PVC
Seqenciamento de tarefas:
Suponha n tarefas que devem ser processadas numa nica mquina O tempo necessrio para processar a tarefa j depois da tarefa i cij Como as tarefas devem ser seqenciadas de forma a minimizar o tempo de processamento? A soluo um caminho hamiltoniano de custo mnimo no grafo

Você também pode gostar